Back to home page

MITgcm

 
 

    


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=========================================================================