-
Notifications
You must be signed in to change notification settings - Fork 11
probes
FVCOM has the ability for you to specify locations at which you would like to extract variables as time series.
The main model namelist has the following section to control the probes.
&NML_PROBES
PROBES_ON = T
PROBES_NUMBER = 2,
PROBES_FILE = 'irish_sea_v20_probes.nml'
/
The PROBES_FILE
is a separate namelist in the input directory, whose format is:
&NML_PROBE
PROBE_INTERVAL = "seconds=300.0",
PROBE_LOCATION = 6724,
PROBE_TITLE = "L4_el.dat",
PROBE_DESCRIPTION = "Surface elevation at L4",
PROBE_VARIABLE = "el",
PROBE_VAR_NAME = "Surface elevation (m)"
/
&NML_PROBE
PROBE_INTERVAL = "seconds=300.0",
PROBE_LOCATION = 6724,
PROBE_TITLE = "L4_t1.dat",
PROBE_LEVELS = 1 20,
PROBE_DESCRIPTION = "Temperature at L4",
PROBE_VARIABLE = "t1",
PROBE_VAR_NAME = "Temperature (Celsius)"
/
This configuration has two probes (PROBES_NUMBER = 2
in the main namelist), one outputting surface elevation every five minutes, the other exporting temperature at all vertical levels every five minutes. The number of probes in the main model name list (in PROBES_NUMBER
) must match the number of probes in the probes namelist (PROBES_FILE
).
There is a relatively limited number of variables which can be exported:
|Probe variable name|Description|Main model netCDF variable name equivalent|1D/2D|
|el
|Surface elevation (metres)|zeta
|1D|
|t1
|Temperature (Celsius)|temp
|2D|
|s1
|Salinity (PSU)|salinity
|2D|
|rho1
|Density (kg m-3 )|-|2D|
|u
|u-velocity component (m s-1 )|u
|2D|
|v
|v-velocity component (m s-1 )|v
|2D|
|ua
|Depth-averaged u-velocity component (m s-1 )|-|1D|
|va
|Depth-averaged v-velocity component (m s-1 )|-|1D|
|w
|Vertical velocity (m s-1 )|omega
|2D|
|ww
|Vertical velocity on sigma levels (m s-1 )|-|2D|
|q2
|Turbulent kinetic energy (TKE) squared (m2 s-2 )|q2
|2D|
|l
|Length scale (m)|l
|2D|
|q2l
|q2 scaled by the length scale (m3 s-2 )|q2l
|2D|
|km
|Turbulent vertical diffusivity for momentum (m2 s-1 )|km
|2D|
|kh
|Turbulent vertical diffusivity for scalars (m2 s-1 )|kh
|2D|
|kq
|Turbulent Eddy Viscosity For q2/q2l (m2 s-1 )|kq
|2D|
|aice
|Concentration of ice|?|?|
|vice
|Volume per unit area of ice (m - in mod_ice.F
at line 120, but a volume as metres?...)|?|?|
|uice2
|Ice u-velocity component (m s-1 ) (?)|?|?|
|vice2
|Ice v-velocity component (m s-1 ) (?)|?|?|
|csed
|Suspended sediment concentration (g L-1 ) (?)|coarse_sand
?|1D?|
A typical output file for a 1D variable (e.g. el
) might be:
Surface elevation at L4
Surface elevation (m)
!========MODEL START DATE==========
! Day # : 56699
! MicroSecond #: 40058900000
! (Date Time=2014-02-11T11:07:38.900000Z)
!==========================
K1 K2
-1 -1
X(M) Y(M) DEPTH(M)
413731.906 5567297.000 52.880
LON LAT DEPTH(M)
-4.210 50.252 52.880
DATA FOLLOWS:
Time(days) Data...
55593.00000 -1.458
55593.00347 -1.380
55593.00694 -1.299
55593.01042 -1.216
55593.01389 -1.131
55593.01736 -1.046
55593.02083 -0.960
55593.02431 -0.874
55593.02778 -0.789
...
The MATLAB fvcom-toolbox can automatically write a probes namelist. The following code example creates a probes file to extract both 2 and 3D variables at a number of sites.
Mobj.Positions % contains x, y coordinate pairs for the probe extraction.
Mobj.Names = % contains list of site names (must match the Positions length)
% Find grid nodes within a threshold distance of the specified locations.
if strcmpi(Mobj.nativeCoords, 'cartesian')
Mobj = add_stations_list(Mobj, Mobj.Positions, Mobj.Names, 4000);
elseif strcmpi(Mobj.nativeCoords, 'spherical')
Mobj = add_stations_list(Mobj, Mobj.Positions, Mobj.Names, 0.01);
else
error('Unknown native coordinate type')
end
% Make the required struct for the probes function.
for i = 1:length(Mobj.stations)
sname = Mobj.stations{i};
% Clean up illegal characters from the names.
sname = regexprep(regexprep(regexprep(sname{6}, __, ''), '\.', '_'), '-', '_');
if ~isnan(str2double(sname))
sname = sprintf('probe_%d', str2double(sname));
end
Mobj.probes.(sname).file = sprintf('%s.dat', regexprep(cell2mat(Mobj.stations{i}(6)), __, ''));
Mobj.probes.(sname).locations = regexprep(cell2mat(Mobj.stations{i}(6)), __, '');
Mobj.probes.(sname).node = cell2mat(Mobj.stations{i}(4));
Mobj.probes.(sname).elem = cell2mat(Mobj.stations{i}(7));
Mobj.probes.(sname).levels = [1, length(Mobj.siglay)];
Mobj.probes.(sname).description = {...
sprintf('Surface elevation at %s', sname), ...
sprintf('u-velocity component at %s', sname), ...
sprintf('v-velocity component at %s', sname), ...
sprintf('Vertical velocity at %s', sname), ...
sprintf('Vertical velocity on sigma levels at %s', sname), ...
sprintf('Density at %s', sname), ...
sprintf('Temperature at %s', sname), ...
sprintf('Salinity at %s', sname), ...
};
Mobj.probes.(sname).variable = {'el', 'u', 'v', 'ww', 'w', 'rho1', 't1', 's1'};
Mobj.probes.(sname).longname = {'Surface elevation (m)', ...
'u-velocity (ms^{-1})', ...
'v-velocity (ms^{-1})',...
'Vertical velocity (ms^{-1})', ...
'Vertical velocity on sigma levels (ms^{-1})', ...
'Density (kg/m^{3})', ...
'Temperature (Celsius)', ...
'Salinity (PSU)', ...
};
end
For questions regarding FVCOM, to contribute to the wiki please subscribe to the mailing list uk-fvcom mailing list If you would like to cite FVCOM, please refer to its main publication and/or URLs.
Background
=== FVCOM Wiki ===
User guide
-
Additional information of less frequent usage in no particular order