Warning, /pkg/flt/README.flt is written in an unsupported language. File is not indexed.
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
c806179eb4 Alis*0001 c
0002 c ==============================
0003 c FLOAT Package for the MITgcmUV
0004 c ==============================
0005 c
0006 c
0007 c This package allows the advection of floats during a model run.
0008 c Although originally intended to simulate PALACE floats
0009 c (floats that drift in at depth and to the surface at a defined
0010 c time interval) it can also run ALACE floats (non-profiling)
0011 c and surface drifters as well as sample moorings (simply a
0012 c non-advective, profiling float).
0013 c
0014 c The stepping of the float advection is done using a second
0015 c order Runga-Kutta scheme (Press et al., 1992, Numerical
0016 c Recipes), whereby velocities and positions are bilinear
0017 c interpolated between the grid points.
0018 c
0019 c Current version: 1.0 06-AUG-2001
0020 c
0021 c Please report any bugs and suggestions to:
0022 c
0023 c Arne Biastoch (abiastoch@ucsd.edu)
0024 c
0025 c
0026 c Implementation in MITgcmUV
0027 c --------------------------
0028 c
0029 c The package has only few interfaces to the model. Despite a
0030 c general introduction of the flag useFLT and an initialization in
0031 c packages_init_fixed.F the interfaces are in:
0032 c
0033 c - forward_step.F where the main float routine is called:
0034 c
0035 c #ifdef ALLOW_FLT
0036 c C-- Calculate float trajectories
0037 c if (useFLT) then
0038 c CALL TIMER_START('FLOATS [THE_MAIN_LOOP]',myThid)
0039 c CALL FLT_MAIN(myIter,myTime, myThid)
0040 c CALL TIMER_STOP ('FLOATS [THE_MAIN_LOOP]',myThid)
0041 c endif
0042 c #endif
0043 c
0044 c - write_checkpoint.F where float positions are written to a restart file:
0045 c
0046 c #ifdef ALLOW_FLT
0047 c if (useFLT) then
0048 c CALL FLT_RESTART (myCurrentTime, myCurrentIter, myThid )
0049 c endif
0050 c #endif
0051 c
0052 c The rest is done in the routines residing in pkg/flt. Please make
0053 c sure that this directory is enabled in genmake when compiling the
0054 c Makefile.
0055 c
0056 c
0057 c Settings at compilation time
0058 c ----------------------------
0059 c
0060 c The main flag for switching on the float package has to be done
0061 c in CPP_OPTIONS.h where
0062 c #define ALLOW_FLT has to be set
0063 c
0064 c The package itself has its own option file called FLT_CPPOPTIONS.h.
0065 c Currently there are only two flags available:
0066 c #define FLT_NOISE to add white noise to the advection velocity
0067 c #undef ALLOW_3D_FLT to allow three-dimensional float advection
0068 c (not tested yet!) instead of drifting on a
0069 c pre-defined (integer) vertical level.
0070 c
0071 c Other specifications are done in FLT.h:
0072 c
0073 c parameter (max_npart_tile = 300)
0074 c is the maximum number of floats per tile. Should be smaller
0075 c than the total number of floats when running on a parallel
0076 c environment but as small as possible to avoid too large
0077 c arrays. The model will stop if the number of floats per tile
0078 c exceeds max_npart_tile at any time.
0079 c parameter (max_npart_exch = 50)
0080 c is the maximum number of floats per tile that can be exchanged
0081 c with other tiles to one side (there are 4 arrays) in one
0082 c timestep. Should be generally small because only few floats
0083 c leave the tile exactly at the same time.
0084 c
0085 c
0086 c Settings at runtime
0087 c -------------------
0088 c
0089 c useFLT=.TRUE.
0090 c has to be set in namelist PACKAGES (data.pkg) to use floats
0091 c
0092 c data.flt contains a namelist FLT_NML with the parameters:
0093 c flt_int_traj is the time interval in seconds to sample
0094 c float position and dynamic variables (T,S,U,V,Eta).
0095 c To capture the whole profile cycle of a PALACE float
0096 c this has to be at least as small as the
0097 c shortest surface time
0098 c
0099 c flt_int_prof is the time interval in seconds to sample
0100 c a whole profile of T,S,U,V (as well as
0101 c positions and Eta). This has to chosen at
0102 c least as small as the shortest profiling
0103 c interval.
0104 c Note: All profiling intervals have to be an integer
0105 c multiple of this interval
0106 c Note: The profile is always taken over the whole
0107 c water column
0108 c
0109 c Example: if one would set two sets of profiling floats,
0110 c - one with 5 days profiling interval and 24 hours surface time
0111 c - one with 10 days profiling interval and 12 hours surface time
0112 c one would have to set
0113 c - flt_int_traj=43200
0114 c - flt_int_prof=432000
0115 c to capture all of the floats motions
0116 c
0117 c flt_noise If FLT_NOISE is defined this is the amplitude
0118 c that is added to the advection velocity by the
0119 c random number generator.
0120 c
0121 c flt_file the base filename of the float positions
0122 c without tile information and ending (e.g. float_pos)
0123 c
0124 c
0125 c Input
0126 c -----
0127 c
0128 c The initialization is written in a way that it first looks for a
0129 c global file (e.g. float_pos.data). A global file is mainly used
0130 c for first-time initialization. If that not exists the routine looks
0131 c for local files (e.g. float_pos.001.001.data, etc.) that have
0132 c been used for storing the float positions for restart (note that
0133 c float restarts are ALWAYS local files). The structure of the
0134 c file is always the same:
0135 c
0136 c Each float contains a 9 element double precision record of a
0137 c direct access file. The records are:
0138 c
0139 c - npart A unique float identifier (1,2,3,...)
0140 c - tstart start date of integration of float (in s)
0141 c Note: If tstart=-1 floats are integrated right from the
0142 c beginning
0143 c - xpart x position of float (in units of XC)
0144 c - ypart y position of float (in units of YC)
0145 c - kpart actual vertical level of float
0146 c - kfloat target level of float (should be the same as kpart at
0147 c the beginning)
0148 c - iup flag if the float
0149 c - should profile ( > 0 = return cycle (in s) to surface)
0150 c - remain at depth ( = 0 )
0151 c - is a 3D float ( = -1 ).
0152 c - should be advected WITHOUT additional noise ( = -2 ).
0153 c (This implies that the float is non-profiling)
0154 c - is a mooring ( = -3 ), i.e. the float is not advected
0155 c - itop time of float the surface (in s)
0156 c - tend end date of integration of float (in s)
0157 c Note: If tend=-1 floats are integrated till the end of
0158 c the integration
0159 c
0160 c In addition the first line of the file contains a record with
0161 c - the number of floats on that tile in the first record
0162 c - the total number of floats in the sixth record
0163 c Note: At first-time initialization in a global file both fields
0164 c should be the same.
0165 c
0166 c An example how to write a float file (write_float.F) is included
0167 c in the verification experiment (see below)
0168 c
0169 c
0170 c Output/Visualization
0171 c --------------------
0172 c
0173 c The output always consists of 3 series of local files:
0174 c - files with last positions of floats that can be used for restart
0175 c - files with trajectories of floats and actual values at depth
0176 c - files with profiles throughout the whole water column
0177 c
0178 c Examples and conversion routines for the second and third series
0179 c into NetCDF are included in verification/flt_example/aux/.
0180 c
0181 c
0182 c Verification Experiment
0183 c -----------------------
0184 c
0185 c The verification experiment is based on exp 4 (flow over a
0186 c Gaussian in a channel). There are, however, two main differences
0187 c to the original experiment:
0188 c
0189 c - The domain has closed boundaries. Currently the float package
0190 c is not able to treat floats that leave the domain via open boundaries
0191 c - There is an additional wind forcing to speed up the currents
0192 c to get significant advection rates in time
0193 c
0194 c
0195 c ToDo
0196 c ----
0197 c
0198 c - testing of 3D-floats
0199 c - allow floats to leave the domain via open boundaries
0200 c
0201 c
0202 c History
0203 c -------
0204 c
0205 c - first release: Arne Biastoch (abiastoch@ucsd.edu) 06-AUG-2001
0206 c implemented and verified for checkpoint 40pre1
0207 c - incorporated into c40p9 by adcroft@mit.edu on 11/13/01
0208 c
0209 c=========================================================================