MODULE trdini !!====================================================================== !! *** MODULE trdini *** !! Ocean diagnostics: ocean tracers and dynamic trends !!===================================================================== !! History : 3.5 ! 2012-02 (G. Madec) add 3D trends output for T, S, U, V, PE and KE !!---------------------------------------------------------------------- !!---------------------------------------------------------------------- !! trd_init : initialization step !!---------------------------------------------------------------------- USE trd_oce ! trends: ocean variables USE trdken ! trends: 3D kinetic energy USE trdglo ! trends: global domain integral constraints properties USE trdmld ! ocean active mixed layer tracers trends USE trdvor ! ocean vorticity trends USE in_out_manager ! I/O manager USE lib_mpp ! MPP library IMPLICIT NONE PRIVATE PUBLIC trd_init ! called by nemogcm.F90 module !! * Substitutions # include "domzgr_substitute.h90" # include "vectopt_loop_substitute.h90" !!---------------------------------------------------------------------- !! NEMO/OPA 3.3 , NEMO Consortium (2010) !! $Id$ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) !!---------------------------------------------------------------------- CONTAINS SUBROUTINE trd_init !!---------------------------------------------------------------------- !! *** ROUTINE trd_init *** !! !! ** Purpose : Initialization of trend diagnostics !!---------------------------------------------------------------------- NAMELIST/namtrd/ ln_dyn_trd, ln_KE_trd, ln_vor_trd, ln_dyn_mld, & & ln_tra_trd, ln_PE_trd, ln_glo_trd, ln_tra_mld, & & nn_trd , cn_trdrst_in , ln_trdmld_restart, & & nn_ctls, cn_trdrst_out, ln_trdmld_instant, rn_ucf !!---------------------------------------------------------------------- REWIND( numnam ) READ ( numnam, namtrd ) ! namelist namtrd : trends diagnostic IF(lwp) THEN ! control print WRITE(numout,*) WRITE(numout,*) ' trd_init : Momentum/Tracers trends' WRITE(numout,*) ' ~~~~~~~~~~' WRITE(numout,*) ' Namelist namtrd : set trends parameters' WRITE(numout,*) ' global domain averaged dyn & tra trends ln_glo_trd = ', ln_glo_trd WRITE(numout,*) ' U & V trends: 3D output ln_dyn_trd = ', ln_dyn_trd WRITE(numout,*) ' U & V trends: Mixed Layer averaged ln_dyn_mld = ', ln_dyn_mld WRITE(numout,*) ' T & S trends: 3D output ln_tra_trd = ', ln_tra_trd WRITE(numout,*) ' T & S trends: Mixed Layer averaged ln_tra_mld = ', ln_tra_mld WRITE(numout,*) ' Kinetic Energy trends ln_KE_trd = ', ln_KE_trd WRITE(numout,*) ' Potential Energy trends ln_PE_trd = ', ln_PE_trd WRITE(numout,*) ' Barotropic vorticity trends ln_vor_trd = ', ln_vor_trd ! WRITE(numout,*) ' frequency of trends diagnostics (glo) nn_trd = ', nn_trd WRITE(numout,*) ' control surface type (mld) nn_ctls = ', nn_ctls WRITE(numout,*) ' restart for ML diagnostics ln_trdmld_restart = ', ln_trdmld_restart WRITE(numout,*) ' instantaneous or mean ML T/S ln_trdmld_instant = ', ln_trdmld_instant WRITE(numout,*) ' unit conversion factor rn_ucf = ', rn_ucf ENDIF ! ! ! trend extraction flags l_trdtra = .FALSE. ! tracers IF ( ln_tra_trd .OR. ln_PE_trd .OR. ln_tra_mld .OR. & & ln_glo_trd ) l_trdtra = .TRUE. ! l_trddyn = .FALSE. ! momentum IF ( ln_dyn_trd .OR. ln_KE_trd .OR. ln_dyn_mld .OR. & & ln_vor_trd .OR. ln_glo_trd ) l_trddyn = .TRUE. ! IF( ln_PE_trd .OR. ln_dyn_mld ) & CALL ctl_stop( 'PE, or ML on momentum are not yet coded we stop' ) ! IF( ln_glo_trd ) CALL trd_glo_init ! integral constraints trends IF( ln_tra_mld ) CALL trd_mld_init ! mixed-layer trends (active tracers) IF( ln_vor_trd ) CALL trd_vor_init ! vorticity trends IF( ln_KE_trd ) CALL trd_ken_init ! 3D Kinetic energy diagnostics ! !!gm : Potential BUG : 3D output only for vector invariant form! add a ctl_stop or code the flux form case !!gm : bug/pb for vertical advection of tracer in vvl case: add T.dt[eta] in the output... ! ! END SUBROUTINE trd_init !!====================================================================== END MODULE trdini