-
Notifications
You must be signed in to change notification settings - Fork 7
Parameterizations
###Parameterizations
####Laplacian diffusion
Use random walk to mimic the Laplacian diffusion. The random number with normal distribution is generated by ra ndom.f90. The value of the horizontal diffusion is set in Khdiff in data.nml.
- Before compiling the code, use #define use_Laplacian_diffusion in cpp_options.h to turn it on.
- Use Khdiff and Kvdiff to set the Laplacian diffusivity in horizontal and vertical, respectively. The u nit is m^2/s.
####Mixed Layer processes
Use this with caution
This is a rather ad-hoc solution. No existing study has confirmed the robustness of this parameterization.
The idea is that the vertical mixing induced by mixed layer instability, which is usually parameterized by KPP (l arge et al. 1997), is missing for velocity-based Lagrangian trajectory integration. If we use particle density to represent passive tracers, we need to add random walk to particle position to mimic the parameterized vertical m ixing in coarse resolution models. It is computationally too expensive to explicitly calculate the vertical mixin g according to for example a K-profile of KPP. Our ad-hoc solution is to find particles within mixed layer and re shuffle them using a random-displacement model.
The model needs the following to run with mixed layer parameterization:
- turn on the parameterization in cpp_options.h: #define use_mixedlayer_shuffle
- prepare a data file with mixed layer depth (MLD)
- specific the parameters in data.nml
- fn_MLD='your mixed layer depth file name'
- dt_mld=432000, the time interval (in seconds) of the MLD data. For example, if you saved you MLD every 5 days, then dt_mld=432000
####Meridional boundary condition
- Use #define reflective_meridional_boundary to turn on the reflective meridional boundaries. Particles will keep bouncing back to the domain.
- Use #undef reflective_meridional_boundary to turn it off. Particles will stay stagnant outside.
####Zonal boundary condition Right now the zonal boundary condition is hard-coded as periodic.
####Reflective continent Occasionally, particles enter continent, i.e., the dry cells. You can either keep them there or perform a rescue.
- Use #define reflective_continent to turn on reflective continent boundary condition.
- use #undef reflective_continent to turn it off. Particles will then stay stagnant once enter a dry grid ce ll.
####Looping condition
With usually short duration of a numerical simulation, a common practice to obtain a Lagrangian simulation with a longer duration than the Eulerian fields is to loop the velocity from the starting point. This is rather a poor- man's solution, and strongly discouraged. However, if it is preferred, there are too options.
- Before compilation, use #define jump_looping in cpp_options.h to turn on the jumping condition for lo oping, i.e., applying an artificial jump to make sure particle stay on the same isopycnal level before and after looping.
- Use undef jump_looping to turn it off. The code will just use the first step velocity to continue to advec t particles once it reaches the end of the Eulerian field without doing anything on particle positions.