Changeset 771 for branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp.F90
- Timestamp:
- 2007-12-17T11:51:41+01:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp.F90
r719 r771 4 4 !! Ocean Physics : manage the passive tracer transport 5 5 !!====================================================================== 6 !! History : 1.0 ! 2004-03 (C. Ethe) Original code 7 !!---------------------------------------------------------------------- 6 8 #if defined key_passivetrc 9 !!---------------------------------------------------------------------- 10 !! 'key_passivetrc' TOP models 7 11 !!---------------------------------------------------------------------- 8 12 !! trc_trp : passive tracer transport 9 13 !!---------------------------------------------------------------------- 10 !! * Modules used11 14 USE oce_trc ! ocean dynamics and active tracers variables 12 15 USE trc ! ocean passive tracers variables 13 14 USE trctrp_lec ! passive tracers transport 16 USE trctrp_lec ! passive tracers transport parameters 15 17 16 18 USE trcbbl ! bottom boundary layer (trc_bbl routine) … … 40 42 USE zpshde_trc ! partial step: hor. derivative (zps_hde_trc routine) 41 43 42 43 44 IMPLICIT NONE 44 45 PRIVATE 45 46 46 !! * Routine accessibility 47 PUBLIC trc_trp ! called by trc_stp 47 PUBLIC trc_trp ! called by trc_stp 48 48 49 49 !! * Substitutions 50 50 # include "domzgr_substitute.h90" 51 51 !!---------------------------------------------------------------------- 52 !! 53 !! $ Header$54 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt52 !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005) 53 !! $Id$ 54 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 55 55 !!---------------------------------------------------------------------- 56 56 … … 61 61 !! *** ROUTINE trc_trp *** 62 62 !! 63 !! ** Purpose : Management of passive tracers transport63 !! ** Purpose : Management of passive tracers transport 64 64 !! 65 !! ** Method : 66 !! Compute the passive tracers trends 67 !! Update the passive tracers 68 !! 69 !! History : 70 !! 9.0 ! 04-03 (C. Ethe) Original 65 !! ** Method : - Compute the passive tracers trends 66 !! - Update the passive tracers 71 67 !!---------------------------------------------------------------------- 72 !! * Arguments73 68 INTEGER, INTENT( in ) :: kt ! ocean time-step index 74 69 !! --------------------------------------------------------------------- 75 70 76 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>77 ! Passitive tracers78 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<79 !-----------------------------------------------------------------------80 81 82 71 CALL trc_sbc( kt ) ! surface boundary condition 83 72 # if defined key_trcbbc 73 !!gm bug : this should be control during the initialisation phase, not here! 84 74 CALL ctl_stop( ' Bottom heat flux not yet implemented with passive tracer ' & 85 75 & ' Check in trc_trp routine ' ) 86 76 # endif 87 77 ! ! bottom boundary condition 88 IF( lk_trcbbl_dif ) CALL trc_bbl_dif( kt ) 89 IF( lk_trcbbl_adv ) CALL trc_bbl_adv( kt ) 78 IF( lk_trcbbl_dif ) CALL trc_bbl_dif( kt ) ! diffusive bottom boundary layer scheme 79 IF( lk_trcbbl_adv ) CALL trc_bbl_adv( kt ) ! advective (and/or diffusive) bottom boundary layer scheme 90 80 91 81 IF( lk_trcdmp ) CALL trc_dmp( kt ) ! internal damping trends 92 82 93 83 ! ! horizontal & vertical advection 94 IF( ln_trcadv_cen2 ) CALL trc_adv_cen2 ( kt ) 95 IF( ln_trcadv_muscl ) CALL trc_adv_muscl ( kt ) 96 IF( ln_trcadv_muscl2 ) CALL trc_adv_muscl2( kt ) 97 IF( ln_trcadv_tvd ) CALL trc_adv_tvd ( kt ) 98 IF( ln_trcadv_smolar ) CALL trc_adv_smolar( kt ) 84 IF( ln_trcadv_cen2 ) CALL trc_adv_cen2 ( kt ) ! 2nd order centered scheme 85 IF( ln_trcadv_muscl ) CALL trc_adv_muscl ( kt ) ! MUSCL scheme 86 IF( ln_trcadv_muscl2 ) CALL trc_adv_muscl2( kt ) ! MUSCL2 scheme 87 IF( ln_trcadv_tvd ) CALL trc_adv_tvd ( kt ) ! TVD scheme 88 IF( ln_trcadv_smolar ) CALL trc_adv_smolar( kt ) ! SMOLARKIEWICZ scheme 99 89 100 90 101 91 IF( n_cla == 1 ) THEN 92 !!gm bug : this should be control during the initialisation phase, not here! 102 93 WRITE(ctmp1,*) ' Cross Land Advection not yet implemented with passive tracer n_cla = ',n_cla 103 CALL ctl_stop( ctmp1)94 CALL ctl_stop( ctmp1 ) 104 95 ENDIF 105 96 106 97 ! ! lateral mixing 107 IF( l_trcldf_bilapg ) CALL trc_ldf_bilapg ( kt ) 108 IF( l_trcldf_bilap ) CALL trc_ldf_bilap ( kt ) 109 IF( l_trcldf_iso ) CALL trc_ldf_iso ( kt ) 110 IF( l_trcldf_iso_zps ) CALL trc_ldf_iso_zps( kt ) 111 IF( l_trcldf_lap ) CALL trc_ldf_lap ( kt ) 98 IF( l_trcldf_bilapg ) CALL trc_ldf_bilapg ( kt ) ! s-coord. horizontal bilaplacian 99 IF( l_trcldf_bilap ) CALL trc_ldf_bilap ( kt ) ! iso-level bilaplacian 100 IF( l_trcldf_iso ) CALL trc_ldf_iso ( kt ) ! iso-neutral laplacian 101 IF( l_trcldf_iso_zps ) CALL trc_ldf_iso_zps( kt ) ! partial step iso-neutral laplacian 102 IF( l_trcldf_lap ) CALL trc_ldf_lap ( kt ) ! iso-level laplacian 112 103 113 104 ! ! vertical diffusion 114 IF( l_trczdf_exp ) CALL trc_zdf_exp ( kt )! explicit time stepping (time splitting scheme)115 IF( l_trczdf_imp ) CALL trc_zdf_imp ( kt )! implicit time stepping (euler backward)116 IF( l_trczdf_iso ) CALL trc_zdf_iso ( kt )! isopycnal117 IF( l_trczdf_iso_vo ) CALL trc_zdf_iso_vopt( kt ) 105 IF( l_trczdf_exp ) CALL trc_zdf_exp ( kt ) ! explicit time stepping (time splitting scheme) 106 IF( l_trczdf_imp ) CALL trc_zdf_imp ( kt ) ! implicit time stepping (euler backward) 107 IF( l_trczdf_iso ) CALL trc_zdf_iso ( kt ) ! isopycnal 108 IF( l_trczdf_iso_vo ) CALL trc_zdf_iso_vopt( kt ) ! vector opt. isopycnal 118 109 119 110 CALL trc_nxt( kt ) ! tracer fields at next time step 120 111 121 CALL trc_rad( kt ) ! Correct artificial negative concentrations for isopycnal scheme 112 CALL trc_rad( kt ) ! Correct artificial negative concentrations 113 ! ! especially useful when isopycnal mixing is used 122 114 ! 123 115 124 IF( ln_zps .AND. .NOT. lk_trccfg_1d ) & 125 & CALL zps_hde_trc( kt, trb, gtru, gtrv ) ! Partial steps: now horizontal gradient 126 ! ! of passive tracers at the bottom ocean level 127 128 129 END SUBROUTINE trc_trp 116 IF( ln_zps .AND. .NOT. lk_trccfg_1d ) & ! Partial steps: now horizontal gradient of passive 117 & CALL zps_hde_trc( kt, trb, gtru, gtrv ) ! tracers at the bottom ocean level 118 ! 119 IF(ln_ctl) THEN ! print mean trends (used for debugging) 120 WRITE(charout, FMT="('TRP')") 121 CALL prt_ctl_trc_info( charout ) 122 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm ) 123 ENDIF 124 ! 125 END SUBROUTINE trc_trp 130 126 131 127 #else 132 128 !!---------------------------------------------------------------------- 133 !! Dummy module : NO passive tracers129 !! Dummy module : No TOP models 134 130 !!---------------------------------------------------------------------- 135 131 CONTAINS 136 SUBROUTINE trc_trp (kt ) ! Empty routine137 INTEGER, INTENT(in) :: kt132 SUBROUTINE trc_trp( kt ) ! Empty routine 133 INTEGER, INTENT(in) :: kt 138 134 WRITE(*,*) 'trc_trp: You should not have seen this print! error?', kt 139 135 END SUBROUTINE trc_trp
Note: See TracChangeset
for help on using the changeset viewer.