Changeset 2528 for trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90
- Timestamp:
- 2010-12-27T18:33:53+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90
- Property svn:executable deleted
r1800 r2528 5 5 !!====================================================================== 6 6 !! History : 1.0 ! 2004-03 (C. Ethe) Original code 7 !! 3.3 ! 2010-07 (C. Ethe) Merge TRA-TRC 7 8 !!---------------------------------------------------------------------- 8 9 #if defined key_top … … 13 14 !!---------------------------------------------------------------------- 14 15 USE oce_trc ! ocean dynamics and active tracers variables 15 USE trp_trc ! ocean passive tracers variables 16 USE trctrp_lec ! passive tracers transport parameters 17 USE prtctl_trc ! Print control for debbuging 18 16 USE trc ! ocean passive tracers variables 17 USE trcnam_trp ! passive tracers transport namelist variables 18 USE trabbl ! bottom boundary layer (trc_bbl routine) 19 19 USE trcbbl ! bottom boundary layer (trc_bbl routine) 20 USE zdfkpp ! KPP non-local tracer fluxes (trc_kpp routine) 20 21 USE trcdmp ! internal damping (trc_dmp routine) 21 22 USE trcldf_bilapg ! lateral mixing (trc_ldf_bilapg routine) 23 USE trcldf_bilap ! lateral mixing (trc_ldf_bilap routine) 24 USE trcldf_iso ! lateral mixing (trc_ldf_iso routine) 25 USE trcldf_iso_zps ! lateral mixing (trc_ldf_iso_zps routine) 26 USE trcldf_lap ! lateral mixing (trc_ldf_lap routine) 27 22 USE trcldf ! lateral mixing (trc_ldf routine) 23 USE trcadv ! advection (trc_adv routine) 24 USE trczdf ! vertical diffusion (trc_zdf routine) 28 25 USE trcnxt ! time-stepping (trc_nxt routine) 29 26 USE trcrad ! positivity (trc_rad routine) 30 31 USE trcadv_cen2 ! 2nd order centered advection (trc_adv_cen2 routine)32 USE trcadv_muscl ! MUSCL advection (trc_adv_muscl routine)33 USE trcadv_muscl2 ! MUSCL2 advection (trc_adv_muscl2 routine)34 USE trcadv_tvd ! TVD advection (trc_adv_tvd routine)35 USE trcadv_smolar ! SMOLAR advection (trc_adv_smolar routine)36 37 USE trczdf_exp ! vertical diffusion (trc_zdf_exp routine)38 USE trczdf_imp ! vertical diffusion (trc_zdf_exp routine)39 USE trczdf_iso ! vertical diffusion (trc_zdf_exp routine)40 USE trczdf_iso_vopt ! vertical diffusion (trc_zdf_exp routine)41 27 USE trcsbc ! surface boundary condition (trc_sbc routine) 42 43 USE zpshde_trc ! partial step: hor. derivative (zps_hde_trc routine) 28 USE zpshde ! partial step: hor. derivative (zps_hde routine) 44 29 45 30 #if defined key_agrif … … 55 40 # include "top_substitute.h90" 56 41 !!---------------------------------------------------------------------- 57 !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005)42 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 58 43 !! $Id$ 59 !! Software governed by the CeCILL licence ( modipsl/doc/NEMO_CeCILL.txt)44 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 60 45 !!---------------------------------------------------------------------- 61 46 62 47 CONTAINS 63 48 64 SUBROUTINE trc_trp( k t)49 SUBROUTINE trc_trp( kstp ) 65 50 !!---------------------------------------------------------------------- 66 51 !! *** ROUTINE trc_trp *** … … 71 56 !! - Update the passive tracers 72 57 !!---------------------------------------------------------------------- 73 INTEGER, INTENT( in ) :: kt ! ocean time-step index 74 !! 75 CHARACTER (len=25) :: charout 58 INTEGER, INTENT( in ) :: kstp ! ocean time-step index 76 59 !! --------------------------------------------------------------------- 77 78 CALL trc_sbc( kt ) ! surface boundary condition 79 # if defined key_trcbbc 80 !!gm bug : this should be control during the initialisation phase, not here! 81 CALL ctl_stop( ' Bottom heat flux not yet implemented with passive tracer ' & 82 & ' Check in trc_trp routine ' ) 83 # endif 84 ! ! bottom boundary condition 85 IF( lk_trcbbl_dif ) CALL trc_bbl_dif( kt ) ! diffusive bottom boundary layer scheme 86 IF( lk_trcbbl_adv ) CALL trc_bbl_adv( kt ) ! advective (and/or diffusive) bottom boundary layer scheme 87 88 IF( lk_trcdmp ) CALL trc_dmp( kt ) ! internal damping trends 89 90 ! ! horizontal & vertical advection 91 IF( ln_trcadv_cen2 ) CALL trc_adv_cen2 ( kt ) ! 2nd order centered scheme 92 IF( ln_trcadv_muscl ) CALL trc_adv_muscl ( kt ) ! MUSCL scheme 93 IF( ln_trcadv_muscl2 ) CALL trc_adv_muscl2( kt ) ! MUSCL2 scheme 94 IF( ln_trcadv_tvd ) CALL trc_adv_tvd ( kt ) ! TVD scheme 95 IF( ln_trcadv_smolar ) CALL trc_adv_smolar( kt ) ! SMOLARKIEWICZ scheme 96 97 98 IF( n_cla == 1 ) THEN 99 !!gm bug : this should be control during the initialisation phase, not here! 100 WRITE(ctmp1,*) ' Cross Land Advection not yet implemented with passive tracer n_cla = ',n_cla 101 CALL ctl_stop( ctmp1 ) 102 ENDIF 103 104 ! ! lateral mixing 105 IF( l_trcldf_bilapg ) CALL trc_ldf_bilapg ( kt ) ! s-coord. horizontal bilaplacian 106 IF( l_trcldf_bilap ) CALL trc_ldf_bilap ( kt ) ! iso-level bilaplacian 107 IF( l_trcldf_iso ) CALL trc_ldf_iso ( kt ) ! iso-neutral laplacian 108 IF( l_trcldf_iso_zps ) CALL trc_ldf_iso_zps( kt ) ! partial step iso-neutral laplacian 109 IF( l_trcldf_lap ) CALL trc_ldf_lap ( kt ) ! iso-level laplacian 110 60 IF( .NOT. lk_c1d ) THEN 61 ! 62 CALL trc_sbc( kstp ) ! surface boundary condition 63 IF( lk_trabbl ) CALL trc_bbl( kstp ) ! advective (and/or diffusive) bottom boundary layer scheme 64 IF( lk_trcdmp ) CALL trc_dmp( kstp ) ! internal damping trends 65 CALL trc_adv( kstp ) ! horizontal & vertical advection 66 CALL trc_ldf( kstp ) ! lateral mixing 67 IF( .NOT. lk_offline .AND. lk_zdfkpp ) & 68 & CALL trc_kpp( kstp ) ! KPP non-local tracer fluxes 111 69 #if defined key_agrif 112 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_trc! tracers sponge70 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_trc ! tracers sponge 113 71 #endif 114 115 ! ! vertical diffusion116 IF( l_trczdf_exp ) CALL trc_zdf_exp ( kt ) ! explicit time stepping (time splitting scheme)117 IF( l_trczdf_imp ) CALL trc_zdf_imp ( kt ) ! implicit time stepping (euler backward)118 IF( l_trczdf_iso ) CALL trc_zdf_iso ( kt ) ! isopycnal119 IF( l_trczdf_iso_vo ) CALL trc_zdf_iso_vopt( kt ) ! vector opt. isopycnal120 121 CALL trc_nxt( kt ) ! tracer fields at next time step122 123 IF( ln_trcrad ) CALL trc_rad( kt ) ! Correct artificial negative concentrations124 ! ! especially useful when isopycnal mixing is used125 !126 127 IF( ln_zps .AND. .NOT. lk_trc_c1d ) & ! Partial steps: now horizontal gradient of passive128 & CALL zps_hde_trc( kt, trb, gtru, gtrv ) ! tracers at the bottom ocean level72 CALL trc_zdf( kstp ) ! vertical mixing and after tracer fields 73 CALL trc_nxt( kstp ) ! tracer fields at next time step 74 IF( ln_trcrad ) CALL trc_rad( kstp ) ! Correct artificial negative concentrations 75 IF( ln_zps ) CALL zps_hde( kstp, jptra, trn, gtru, gtrv ) ! Partial steps: now horizontal gradient of passive 76 ! tracers at the bottom ocean level 77 ! 78 ELSE ! 1D vertical configuration 79 CALL trc_sbc( kstp ) ! surface boundary condition 80 IF( .NOT. lk_offline .AND. lk_zdfkpp ) & 81 & CALL trc_kpp( kstp ) ! KPP non-local tracer fluxes 82 CALL trc_zdf( kstp ) ! vertical mixing and after tracer fields 83 CALL trc_nxt( kstp ) ! tracer fields at next time step 84 IF( ln_trcrad ) CALL trc_rad( kstp ) ! Correct artificial negative concentrations 85 ! 86 END IF 129 87 ! 130 88 END SUBROUTINE trc_trp
Note: See TracChangeset
for help on using the changeset viewer.