Changeset 771
- Timestamp:
- 2007-12-17T11:51:41+01:00 (16 years ago)
- Location:
- branches/dev_001_GM/NEMO/TOP_SRC
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_001_GM/NEMO/TOP_SRC/LOBSTER/par_lobster.F90
r769 r771 48 48 49 49 ! Starting/ending LOBSTER do-loop indices (N.B. no LOBSTER : jpl_lob < jpf_lob the do-loop are never done) 50 INTEGER, PUBLIC, PARAMETER :: jp f_lob= 1 !: First index of LOBSTER tracers51 INTEGER, PUBLIC, PARAMETER :: jp l_lob= jp_lobster !: Last index of LOBSTER tracers50 INTEGER, PUBLIC, PARAMETER :: jp_lob0 = 1 !: First index of LOBSTER tracers 51 INTEGER, PUBLIC, PARAMETER :: jp_lob1 = jp_lobster !: Last index of LOBSTER tracers 52 52 53 53 !!====================================================================== -
branches/dev_001_GM/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90
r766 r771 18 18 USE par_trc ! TOP parameters 19 19 USE trccfc ! CFC sms trends 20 USE sms ! Source Minus Sink variables 21 USE oce_trc ! ocean variables 20 22 21 23 IMPLICIT NONE … … 28 30 !!---------------------------------------------------------------------- 29 31 !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) 30 !! $Id :$32 !! $Id$ 31 33 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 32 34 !!---------------------------------------------------------------------- … … 40 42 !!---------------------------------------------------------------------- 41 43 INTEGER :: ji, jj, jk, jn 42 REAL(wp) :: zdm0(jpi,jpj,jpk), zrro(jpi,jpj), zfluo, zfluu43 44 REAL(wp) :: ztest, zfluo, zfluu 44 45 REAL(wp), DIMENSION(jpi,jpj) :: zrro -
branches/dev_001_GM/NEMO/TOP_SRC/MY_TRC/par_my_trc.F90
r769 r771 46 46 47 47 ! Starting/ending PISCES do-loop indices (N.B. no PISCES : jpl_pcs < jpf_pcs the do-loop are never done) 48 INTEGER, PUBLIC, PARAMETER :: jp f_myt= jp_lpc + 1 !: First index of CFC passive tracers49 INTEGER, PUBLIC, PARAMETER :: jp l_myt= jp_lpc + jp_my_trc !: Last index of CFC passive tracers48 INTEGER, PUBLIC, PARAMETER :: jp_myt0 = jp_lpc + 1 !: First index of CFC passive tracers 49 INTEGER, PUBLIC, PARAMETER :: jp_myt1 = jp_lpc + jp_my_trc !: Last index of CFC passive tracers 50 50 51 51 !!====================================================================== -
branches/dev_001_GM/NEMO/TOP_SRC/PISCES/par_pisces.F90
r769 r771 107 107 108 108 ! Starting/ending PISCES do-loop indices (N.B. no PISCES : jpl_pcs < jpf_pcs the do-loop are never done) 109 INTEGER, PUBLIC, PARAMETER :: jp f_pcs= jp_l + 1 !: First index of CFC passive tracers110 INTEGER, PUBLIC, PARAMETER :: jp l_pcs= jp_l + jp_pisces !: Last index of CFC passive tracers109 INTEGER, PUBLIC, PARAMETER :: jp_pcs0 = jp_l + 1 !: First index of CFC passive tracers 110 INTEGER, PUBLIC, PARAMETER :: jp_pcs1 = jp_l + jp_pisces !: Last index of CFC passive tracers 111 111 112 112 !!====================================================================== -
branches/dev_001_GM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90
r766 r771 10 10 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) from trcini.pisces.h90 11 11 !!---------------------------------------------------------------------- 12 #if defined key_trc_pisces && defined key_trc_kriest13 !!--------------------------------------------------------------------- 14 !! 'key_trc_pisces' & 'key_trc_kriest' PISCES bio-model + ???15 !!--------------------------------------------------------------------- 12 #if defined key_trc_pisces 13 !!---------------------------------------------------------------------- 14 !! 'key_trc_pisces' PISCES bio-model 15 !!---------------------------------------------------------------------- 16 16 !! trc_ini_pisces : PISCES biochemical model initialisation 17 17 !!---------------------------------------------------------------------- 18 18 USE par_trc ! TOP parameters 19 19 USE trccfc ! CFC sms trends 20 USE sms ! Source Minus Sink variables 20 21 USE iom 21 22 … … 29 30 !!---------------------------------------------------------------------- 30 31 !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) 31 !! $Id :$32 !! $Id$ 32 33 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 33 34 !!---------------------------------------------------------------------- … … 41 42 !! ** Purpose : Initialisation of the PISCES biochemical model 42 43 !!---------------------------------------------------------------------- 43 INTEGER :: ji, jj, jk, jm44 INTEGER :: ichl, iband45 INTEGER , PARAMETER :: jpmois = 12, jpan 46 47 REAL(wp) :: zcoef48 REAL(wp) :: ztoto,expide,denitide,ztra,zmaskt49 REAL(wp) , DIMENSION (jpi,jpj) :: riverdoc,river,ndepo50 REAL(wp) , DIMENSION (jpi,jpj,jpk) :: cmask44 INTEGER :: ji, jj, jk, jm 45 INTEGER :: ichl, iband 46 INTEGER , PARAMETER :: jpmois = 12, jpan = 1 47 48 REAL(wp) :: zcoef 49 REAL(wp) :: ztoto, expide, denitide,zmaskt 50 REAL(wp) , DIMENSION (jpi,jpj) :: riverdoc, river, ndepo 51 REAL(wp) , DIMENSION (jpi,jpj,jpk) :: cmask 51 52 52 53 INTEGER :: numriv, numdust, numbath, numdep … … 56 57 INTEGER :: jn, kiter 57 58 REAL(wp) :: znum, zdiv 58 REAL(wp) :: zws, zwr, zwl,wmax, xnummax, &59 REAL(wp) :: zws, zwr, zwl,wmax, xnummax 59 60 REAL(wp) :: zmin, zmax, zl, zr, xacc 60 61 #endif … … 201 202 202 203 #if defined key_trc_kriest 203 !---------------------------------------------------------------------- 204 !!--------------------------------------------------------------------- 205 !! 'key_trc_kriest' ??? 206 !!--------------------------------------------------------------------- 204 207 ! COMPUTATION OF THE VERTICAL PROFILE OF MAXIMUM SINKING SPEED 205 208 ! Search of the maximum number of particles in aggregates for each k-level. … … 569 572 !!====================================================================== 570 573 END MODULE trcini_pisces 571 -
branches/dev_001_GM/NEMO/TOP_SRC/TRP/trcrad.F90
r719 r771 4 4 !! Ocean passive tracers: correction of negative concentrations 5 5 !!====================================================================== 6 !! History : - ! 01-01 (O. Aumont & E. Kestenare) Original code 7 !! 1.0 ! 04-03 (C. Ethe) free form F90 8 !!---------------------------------------------------------------------- 6 9 #if defined key_passivetrc 10 !!---------------------------------------------------------------------- 11 !! 'key_passivetrc' Passive tracers 7 12 !!---------------------------------------------------------------------- 8 13 !! trc_rad : correction of negative concentrations 9 14 !!---------------------------------------------------------------------- 10 !! * Modules used11 15 USE oce_trc ! ocean dynamics and tracers variables 12 16 USE trc ! ocean passive tracers variables … … 17 21 PRIVATE 18 22 19 !! * Routine accessibility20 23 PUBLIC trc_rad ! routine called by trcstp.F90 24 21 25 !! * Substitutions 22 26 # include "passivetrc_substitute.h90" 23 27 !!---------------------------------------------------------------------- 24 !! 25 !! $ Header$26 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt28 !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005) 29 !! $Id:$ 30 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 27 31 !!---------------------------------------------------------------------- 32 28 33 CONTAINS 29 34 … … 32 37 !! *** ROUTINE trc_rad *** 33 38 !! 34 !! ** Purpose : "crappy" routine to correct artificial negative35 !! concentrations due to isopycnal scheme39 !! ** Purpose : "crappy" routine to correct artificial negative 40 !! concentrations due to isopycnal scheme 36 41 !! 37 !! ** Method : Set negative concentrations to zero 38 !! compute the corresponding mass added to the tracers 39 !! and remove it when possible 42 !! ** Method : - PISCES or LOBSTER: Set negative concentrations to zero 43 !! while computing the corresponding tracer content that 44 !! is added to the tracers. Then, adjust the tracer 45 !! concentration using a multiplicative factor so that 46 !! the total tracer concentration is preserved. 47 !! - CFC: simply set to zero the negative CFC concentration 48 !! (the total CFC content is not strictly preserved) 49 !!---------------------------------------------------------------------- 50 INTEGER, INTENT( in ) :: kt ! ocean time-step index 40 51 !! 41 !! History : 42 !! 8.2 ! 01-01 (O. Aumont & E. Kestenare) Original code 43 !! 9.0 ! 04-03 (C. Ethe) free form F90 44 !!---------------------------------------------------------------------- 45 !! * Arguments 46 INTEGER, INTENT( in ) :: kt ! ocean time-step index 47 48 !! * Local declarations 49 INTEGER :: ji, jj, jk, jn ! dummy loop indices 50 #if defined key_trc_pisces || defined key_trc_lobster1 51 REAL(wp) :: zvolk, trcorb, trmasb ,trcorn, trmasn 52 #endif 52 INTEGER :: ji, jj, jk, jn ! dummy loop indices 53 REAL(wp) :: zvolk, ztrcorb, ztrmasb ! temporary scalars 54 REAL(wp) :: zcoef, ztrcorn, ztrmasn ! " " 53 55 CHARACTER (len=22) :: charout 54 56 !!---------------------------------------------------------------------- … … 60 62 ENDIF 61 63 62 63 #if defined key_cfc 64 DO jn = 1, jptra 65 DO jk = 1, jpkm1 66 DO jj = 1, jpj 67 DO ji = 1, jpi 68 trn(ji,jj,jk,jn) = MAX( 0. , trn(ji,jj,jk,jn) ) 69 trb(ji,jj,jk,jn) = MAX( 0. , trb(ji,jj,jk,jn) ) 70 END DO 71 END DO 72 END DO 73 END DO 74 75 #elif defined key_trc_pisces || defined key_trc_lobster1 76 77 DO jn = 1, jptra 78 trcorb = 0. 79 trmasb = 0. 80 trcorn = 0. 81 trmasn = 0. 82 DO jk = 1, jpkm1 83 DO jj = 1, jpj 84 DO ji = 1, jpi 85 zvolk = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) & 86 #if defined key_off_degrad 87 & * facvol(ji,jj,jk) & 88 #endif 89 & * tmask(ji,jj,jk) * tmask_i(ji,jj) 90 91 trcorb = trcorb + MIN( 0., trb(ji,jj,jk,jn) ) * zvolk 92 trcorn = trcorn + MIN( 0., trn(ji,jj,jk,jn) ) * zvolk 93 94 trb(ji,jj,jk,jn) = MAX( 0. , trb(ji,jj,jk,jn) ) 95 trn(ji,jj,jk,jn) = MAX( 0. , trn(ji,jj,jk,jn) ) 96 97 trmasb = trmasb + trb(ji,jj,jk,jn) * zvolk 98 trmasn = trmasn + trn(ji,jj,jk,jn) * zvolk 99 END DO 100 END DO 101 END DO 102 103 IF( lk_mpp ) THEN 104 CALL mpp_sum( trcorb ) ! sum over the global domain 105 CALL mpp_sum( trcorn ) ! sum over the global domain 106 CALL mpp_sum( trmasb ) ! sum over the global domain 107 CALL mpp_sum( trmasn ) ! sum over the global domain 108 ENDIF 109 110 IF( trcorb /= 0 ) THEN 111 DO jk = 1, jpkm1 112 DO jj = 1, jpj 113 DO ji = 1, jpi 114 trb(ji,jj,jk,jn) = MAX( 0. , trb(ji,jj,jk,jn) ) 115 trb(ji,jj,jk,jn) = trb(ji,jj,jk,jn) * ( 1. + trcorb/trmasb ) * tmask(ji,jj,jk) 116 END DO 117 END DO 118 END DO 119 ENDIF 120 121 IF( trcorn /= 0) THEN 64 IF( lk_trc_cfc ) THEN ! CFC model 65 DO jn = 1, jptra 122 66 DO jk = 1, jpkm1 123 67 DO jj = 1, jpj 124 68 DO ji = 1, jpi 125 69 trn(ji,jj,jk,jn) = MAX( 0. , trn(ji,jj,jk,jn) ) 126 tr n(ji,jj,jk,jn) = trn(ji,jj,jk,jn) * ( 1. + trcorn/trmasn ) * tmask(ji,jj,jk)70 trb(ji,jj,jk,jn) = MAX( 0. , trb(ji,jj,jk,jn) ) 127 71 END DO 128 72 END DO 129 73 END DO 130 ENDIF 74 END DO 75 ENDIF 131 76 132 END DO 133 134 #endif 77 IF( lk_trc_pisces .OR. lk_trc_lobster ) THEN ! PISCES or LOBSTER bio-model 78 DO jn = 1, jptra 79 ztrcorb = 0.e0 80 ztrmasb = 0.e0 81 ztrcorn = 0.e0 82 ztrmasn = 0.e0 83 DO jk = 1, jpkm1 84 DO jj = 1, jpj 85 DO ji = 1, jpi 86 zvolk = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) & 87 # if defined key_off_degrad 88 & * facvol(ji,jj,jk) & 89 # endif 90 & * tmask(ji,jj,jk) * tmask_i(ji,jj) 135 91 136 IF(ln_ctl) THEN ! print mean trends (used for debugging) 92 ztrcorb = ztrcorb + MIN( 0., trb(ji,jj,jk,jn) ) * zvolk 93 ztrcorn = ztrcorn + MIN( 0., trn(ji,jj,jk,jn) ) * zvolk 94 95 trb(ji,jj,jk,jn) = MAX( 0. , trb(ji,jj,jk,jn) ) 96 trn(ji,jj,jk,jn) = MAX( 0. , trn(ji,jj,jk,jn) ) 97 98 ztrmasb = ztrmasb + trb(ji,jj,jk,jn) * zvolk 99 ztrmasn = ztrmasn + trn(ji,jj,jk,jn) * zvolk 100 END DO 101 END DO 102 END DO 103 IF( lk_mpp ) THEN 104 CALL mpp_sum( ztrcorb ) ! sum over the global domain 105 CALL mpp_sum( ztrcorn ) ! sum over the global domain 106 CALL mpp_sum( ztrmasb ) ! sum over the global domain 107 CALL mpp_sum( ztrmasn ) ! sum over the global domain 108 ENDIF 109 110 IF( ztrcorb /= 0 ) THEN 111 zcoef = 1. + ztrcorb / ztrmasb 112 DO jk = 1, jpkm1 113 DO jj = 1, jpj 114 DO ji = 1, jpi 115 trb(ji,jj,jk,jn) = MAX( 0. , trb(ji,jj,jk,jn) ) !!gm bug already done just above 116 trb(ji,jj,jk,jn) = trb(ji,jj,jk,jn) * zcoef * tmask(ji,jj,jk) 117 END DO 118 END DO 119 END DO 120 ENDIF 121 122 IF( ztrcorn /= 0 ) THEN 123 zcoef = 1. + ztrcorn / ztrmasn 124 DO jk = 1, jpkm1 125 DO jj = 1, jpj 126 DO ji = 1, jpi 127 trn(ji,jj,jk,jn) = MAX( 0. , trn(ji,jj,jk,jn) ) !!gm bug already done just above 128 trn(ji,jj,jk,jn) = trn(ji,jj,jk,jn) * zcoef * tmask(ji,jj,jk) 129 END DO 130 END DO 131 END DO 132 ENDIF 133 ! 134 END DO 135 ! 136 ENDIF 137 ! 138 IF(ln_ctl) THEN ! print mean trends (used for debugging) 137 139 WRITE(charout, FMT="('rad')") 138 CALL prt_ctl_trc_info( charout)139 CALL prt_ctl_trc( tab4d=trn, mask=tmask, clinfo=ctrcnm)140 CALL prt_ctl_trc_info( charout ) 141 CALL prt_ctl_trc( tab4d=trn, mask=tmask, clinfo=ctrcnm ) 140 142 ENDIF 141 142 143 ! 143 144 END SUBROUTINE trc_rad 144 145 145 146 #else 146 147 !!---------------------------------------------------------------------- 147 !! Dummy module : NO passive tracer148 !! Dummy module : NO TOP model 148 149 !!---------------------------------------------------------------------- 149 150 CONTAINS 150 SUBROUTINE trc_rad (kt ) ! Empty routine151 INTEGER, INTENT(in) :: kt151 SUBROUTINE trc_rad( kt ) ! Empty routine 152 INTEGER, INTENT(in) :: kt 152 153 WRITE(*,*) 'trc_rad: You should not have seen this print! error?', kt 153 154 END SUBROUTINE trc_rad -
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 -
branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp_ctl.F90
r719 r771 1 1 MODULE trctrp_ctl 2 !!====================================================================== ========2 !!====================================================================== 3 3 !! *** MODULE trctrp_ctl *** 4 !! Ocean passive tracers: transport option control 5 !!============================================================================== 4 !! TOP : transport option control 5 !!====================================================================== 6 !! History : 1.0 ! 2004-03 (C. Ethe) Original code 7 !!---------------------------------------------------------------------- 6 8 #if defined key_passivetrc 7 9 !!---------------------------------------------------------------------- 10 !! 'key_passivetrc' TOP models 11 !!---------------------------------------------------------------------- 8 12 !! trc_trp_ctl : control the different options of transport 9 !!---------------------------------------------------------------------- 10 !! * Modules used 11 USE oce_trc ! ocean dynamics and active tracers variables 12 USE trc ! ocean passive tracers variables 13 USE trctrp_lec ! passive tracers transport 13 !! trc_adv_ctl : control the different options of the advection 14 !! trc_ldf_ctl : control the different options of the lateral diffusion 15 !! trc_zdf_ctl : control the different options of the vertical diffusion 16 !! trc_dmp_ctl : control the different options of the internal damping 17 !!---------------------------------------------------------------------- 18 USE oce_trc ! ocean dynamics and active tracers variables 19 USE trc ! ocean passive tracers variables 20 USE trctrp_lec ! passive tracers transport 14 21 15 22 IMPLICIT NONE 16 23 PRIVATE 17 24 18 !! * Accessibility 19 PUBLIC trc_trp_ctl 20 21 !! * Module variable 25 PUBLIC trc_trp_ctl ! called by ??? 26 22 27 #if defined key_trcldf_eiv 23 28 LOGICAL, PARAMETER :: lk_trcldf_eiv = .TRUE. !: eddy induced velocity flag … … 25 30 LOGICAL, PARAMETER :: lk_trcldf_eiv = .FALSE. !: eddy induced velocity flag 26 31 #endif 27 28 !!---------------------------------------------------------------------- 29 !! TOP 1.0 , LOCEAN-IPSL (2005) 30 !! $Header$ 31 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 32 !!---------------------------------------------------------------------- 33 !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005) 34 !! $Id$ 35 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 32 36 !!---------------------------------------------------------------------- 33 37 … … 35 39 36 40 SUBROUTINE trc_trp_ctl 37 !!--------------------------------------------------------------------- 41 !!---------------------------------------------------------------------- 38 42 !! *** ROUTINE trc_trp_ctl *** 39 43 !! 40 44 !! ** Purpose : Control the consistency between cpp options for 41 45 !! tracer transport 42 !! 43 !! History : 44 !! 9.0 ! 04-0. (C. Ethe) 45 !!---------------------------------------------------------------------- 46 47 !!---------------------------------------------------------------------- 48 !! TOP 1.0 , LOCEAN-IPSL (2005) 49 !!---------------------------------------------------------------------- 50 51 !! Control of Advection scheme options 52 CALL trc_adv_ctl 53 54 !! Control of Lateral diffusion scheme options 55 CALL trc_ldf_ctl 56 57 !! Control of Vertival diffusion scheme options 58 CALL trc_zdf_ctl 59 60 !! Control of Newtonian damping options 46 !!---------------------------------------------------------------------- 47 !!---------------------------------------------------------------------- 48 49 CALL trc_adv_ctl ! Control of Advection scheme options 50 51 CALL trc_ldf_ctl ! Control of Lateral diffusion scheme options 52 53 CALL trc_zdf_ctl ! Control of Vertival diffusion scheme options 54 55 ! ! Control of Newtonian damping options 61 56 IF(lwp) THEN 57 WRITE(numout,*) 62 58 WRITE(numout,*) ' *** Tracer damping option' 63 WRITE(numout,*) 64 ENDIF 65 59 ENDIF 66 60 #if defined key_trcdmp 67 IF(lwp) THEN 68 WRITE(numout,*)' key_trcdmp is defined' 69 WRITE(numout,*)' Check trcdmp ROUTINE ' 70 WRITE(numout,*)' ' 71 ENDIF 61 IF(lwp) WRITE(numout,*) ' key_trcdmp is defined: Check trcdmp ROUTINE ' 72 62 CALL trc_dmp_ctl 73 63 #else 74 IF (lwp) WRITE(numout,*) ' No tracer damping' 75 #endif 76 77 64 IF(lwp) WRITE(numout,*) ' No tracer damping' 65 #endif 66 ! 78 67 END SUBROUTINE trc_trp_ctl 68 79 69 80 70 SUBROUTINE trc_adv_ctl … … 83 73 !! 84 74 !! ** Purpose : Control the consistency between cpp options for 85 !! tracer advection schemes 86 !! 87 !! History : 88 !! 8.5 ! 02-11 (G. Madec) Original code 89 !! 9.0 ! 04-0. (C. Ethe) adapted for passive tracers 90 !!---------------------------------------------------------------------- 91 92 !! * Local declarations 75 !! tracer advection schemes 76 !!---------------------------------------------------------------------- 93 77 INTEGER :: ioptio 94 95 96 !!----------------------------------------------------------------------97 !! TOP 1.0 , LOCEAN-IPSL (2005)98 78 !!---------------------------------------------------------------------- 99 79 … … 127 107 & CALL ctl_stop( ' cross-land advection only with 2nd order advection scheme ' ) 128 108 ENDIF 129 109 ! 130 110 END SUBROUTINE trc_adv_ctl 111 131 112 132 113 SUBROUTINE trc_ldf_ctl … … 136 117 !! ** Purpose : Control the consistency between cpp options for 137 118 !! tracer lateral diffusion 138 !! 139 !! History : 140 !! 9.0 ! 03-04 (C. Ethe) 141 !!---------------------------------------------------------------------- 142 !! * Local declarations 119 !!---------------------------------------------------------------------- 143 120 INTEGER :: ioptio ! ??? 144 121 LOGICAL :: ll_print = .FALSE. ! =T print eddy coef. in numout 145 146 !!----------------------------------------------------------------------147 !! TOP 1.0 , LOCEAN-IPSL (2005)148 122 !!---------------------------------------------------------------------- 149 123 … … 161 135 IF( ln_trcldf_lap ) ioptio = ioptio + 1 162 136 IF( ln_trcldf_bilap ) ioptio = ioptio + 1 163 IF( ioptio /= 1 ) & 164 & CALL ctl_stop( ' use ONE of the 2 lap/bilap operator type on tracer' ) 137 IF( ioptio /= 1 ) CALL ctl_stop( ' use ONE of the 2 lap/bilap operator type on tracer' ) 165 138 166 139 ioptio = 0 … … 168 141 IF( ln_trcldf_hor ) ioptio = ioptio + 1 169 142 IF( ln_trcldf_iso ) ioptio = ioptio + 1 170 IF( ioptio /= 1 ) & 171 & CALL ctl_stop( ' use only ONE direction (level/hor/iso)' ) 143 IF( ioptio /= 1 ) CALL ctl_stop( ' use only ONE direction (level/hor/iso)' ) 172 144 173 145 ! ... Choice of the lateral scheme used … … 195 167 l_trcldf_bilapg = ln_trcldf_bilap .AND. ln_trcldf_hor ! geopotential bilap. (s-coord) 196 168 l_trcldf_iso = ln_trcldf_lap .AND. & ! laplacian operator 197 & 169 & ( ln_trcldf_iso .OR. ln_trcldf_hor ) & ! iso-neutral (z-coord) or horizontal (s-coord) 198 170 & .AND. .NOT.ln_zps 199 l_trcldf_iso_zps = 200 & 201 & 171 l_trcldf_iso_zps = ln_trcldf_lap .AND. & ! laplacian operator 172 & ( ln_trcldf_iso .OR. ln_trcldf_hor ) & ! iso-neutral (partial steps) 173 & .AND. ln_zps ! or geopotential in mixed partial steps/s-coord 202 174 l_trczdf_iso = .FALSE. 203 175 l_trczdf_iso_vo = .FALSE. … … 211 183 #endif 212 184 213 214 185 ioptio = 0 215 186 IF( l_trcldf_lap ) ioptio = ioptio + 1 … … 261 232 ENDIF 262 233 ENDIF 263 234 ! 264 235 END SUBROUTINE trc_ldf_ctl 236 265 237 266 238 SUBROUTINE trc_zdf_ctl … … 268 240 !! *** ROUTINE trc_zdf_ctl *** 269 241 !! 270 !! ** Purpose : Control the consistency between cpp options for 271 !! tracer vertical diffusion 272 !! 273 !! 9.0 ! 04-03 (C. Ethe) 274 !!---------------------------------------------------------------------- 275 !! * Local declarations 276 277 !!---------------------------------------------------------------------- 278 !! TOP 1.0 , LOCEAN-IPSL (2005) 242 !! ** Purpose : Control the consistency between cpp options for 243 !! tracer vertical diffusion 244 !!---------------------------------------------------------------------- 279 245 !!---------------------------------------------------------------------- 280 246 … … 305 271 l_trczdf_imp = .TRUE. 306 272 #endif 307 308 273 ! 309 274 END SUBROUTINE trc_zdf_ctl 275 310 276 311 277 SUBROUTINE trc_dmp_ctl … … 314 280 !! 315 281 !! ** Purpose : Control the consistency between cpp options for 316 !! tracer newtonian damping 317 !! 318 !! 319 !! History : 320 !! 9.0 ! 04-03 (C. Ethe) 282 !! tracer newtonian damping 321 283 !!---------------------------------------------------------------------- 322 284 #if defined key_trcdmp 323 285 324 286 SELECT CASE ( ndmptr ) 325 287 ! 326 288 CASE ( -1 ) ! ORCA: damping in Red & Med Seas only 327 289 IF(lwp) WRITE(numout,*) ' tracer damping in the Med & Red seas only' 328 290 ! 329 291 CASE ( 1:90 ) ! Damping poleward of 'ndmptr' degrees 330 292 IF(lwp) WRITE(numout,*) ' tracer damping poleward of', ndmptr, ' degrees' 331 293 ! 332 294 CASE DEFAULT 333 334 295 WRITE(ctmp1,*) ' bad flag value for nmldmp = ', ndmptr 335 296 CALL ctl_stop(ctmp1) 336 297 ! 337 298 END SELECT 338 299 339 340 300 SELECT CASE ( nmldmptr ) 341 301 ! 342 302 CASE ( 0 ) ! newtonian damping throughout the water column 343 303 IF(lwp) WRITE(numout,*) ' tracer damping throughout the water column' 344 304 ! 345 305 CASE ( 1 ) ! no damping in the turbocline (avt > 5 cm2/s) 346 306 IF(lwp) WRITE(numout,*) ' no tracer damping in the turbocline' 347 307 ! 348 308 CASE ( 2 ) ! no damping in the mixed layer 349 309 IF(lwp) WRITE(numout,*) ' no tracer damping in the mixed layer' 350 310 ! 351 311 CASE DEFAULT 352 312 WRITE(ctmp1,*) ' bad flag value for nmldmp = ', nmldmptr 353 313 CALL ctl_stop(ctmp1) 354 314 ! 355 315 END SELECT 356 316 #endif 357 317 ! 358 318 END SUBROUTINE trc_dmp_ctl 359 319 360 320 #else 361 321 !!---------------------------------------------------------------------- 362 !! Dummy module : NO passive tracer322 !! Dummy module : No TOP models 363 323 !!---------------------------------------------------------------------- 364 324 CONTAINS -
branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp_lec.F90
r770 r771 1 1 MODULE trctrp_lec 2 !!====================================================================== ========2 !!====================================================================== 3 3 !! *** MODULE trctrp_lec *** 4 !! Ocean passive tracers:namelist read options for transport5 !!====================================================================== ========4 !! TOP : namelist read options for transport 5 !!====================================================================== 6 6 !! History : 1.0 ! 2004-03 (C. Ethe) Original code 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) revised architecture … … 9 9 #if defined key_passivetrc 10 10 !!---------------------------------------------------------------------- 11 !! 'key_passivetrc' TOP model11 !! 'key_passivetrc' TOP models 12 12 !!---------------------------------------------------------------------- 13 13 !! trc_trp_lec : read the passive tracer namelist for transport … … 96 96 !!---------------------------------------------------------------------- 97 97 98 ! Read Namelist namtrcadv : tracer advection scheme 99 ! ------------------------- 100 REWIND( numnat ) 98 IF(lwp) WRITE(numout,*) 99 IF(lwp) WRITE(numout,*) ' trc_trp_lec: read namelist for tracer transport' 100 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~' 101 102 ! ! tracer advection scheme 103 REWIND( numnat ) ! ! Read Namelist namtrcadv 101 104 READ ( numnat, namtrcadv ) 102 105 103 ! Parameter control and print 104 ! --------------------------- 105 ! Control print 106 IF(lwp) THEN 106 IF(lwp) THEN ! ! Control print 107 107 WRITE(numout,*) 108 WRITE(numout,*) 'choice/control of the tracer advection scheme' 109 WRITE(numout,*) '~~~~~~~~~~~' 110 WRITE(numout,*) ' Namelist namtrcadv : chose a advection scheme for tracers' 111 WRITE(numout,*) 112 WRITE(numout,*) ' 2nd order advection scheme ln_trcadv_cen2 = ', ln_trcadv_cen2 113 WRITE(numout,*) ' TVD advection scheme ln_trcadv_tvd = ', ln_trcadv_tvd 114 WRITE(numout,*) ' MUSCL advection scheme ln_trcadv_muscl = ', ln_trcadv_muscl 115 WRITE(numout,*) ' MUSCL2 advection scheme ln_trcadv_muscl2 = ', ln_trcadv_muscl2 116 WRITE(numout,*) ' SMOLARKIEWICZ advection scheme ln_trcadv_smolar = ', ln_trcadv_smolar 108 WRITE(numout,*) ' Namelist namtrcadv : chose a advection scheme for tracers' 109 WRITE(numout,*) ' 2nd order advection scheme ln_trcadv_cen2 = ', ln_trcadv_cen2 110 WRITE(numout,*) ' TVD advection scheme ln_trcadv_tvd = ', ln_trcadv_tvd 111 WRITE(numout,*) ' MUSCL advection scheme ln_trcadv_muscl = ', ln_trcadv_muscl 112 WRITE(numout,*) ' MUSCL2 advection scheme ln_trcadv_muscl2 = ', ln_trcadv_muscl2 113 WRITE(numout,*) ' SMOLARKIEWICZ advection scheme ln_trcadv_smolar = ', ln_trcadv_smolar 117 114 ENDIF 118 115 119 116 #if defined key_trcbbl_dif 120 ! Read Namelist namtrcbbl : Bottom boundary layer coef 121 ! -------------------------------------------------- 122 REWIND( numnat ) 117 ! ! Bottom boundary layer 118 REWIND( numnat ) ! ! Read Namelist namtrcbbl 123 119 READ ( numnat, namtrcbbl ) 124 120 125 ! Parameter control and print 126 ! --------------------------- 127 IF(lwp) THEN 128 WRITE(numout,*) ' Diffusive Bottom Boundary Layer' 129 WRITE(numout,*) '~~~~~~~~' 130 WRITE(numout,*) ' bottom boundary layer coef. atrcbbl = ', atrcbbl 121 IF(lwp) THEN ! ! Control print 122 WRITE(numout,*) 123 WRITE(numout,*) ' Namelist namtrcbbl : set Diffusive Bottom Boundary Layer parameters' 124 WRITE(numout,*) ' bottom boundary layer coef. atrcbbl = ', atrcbbl 131 125 # if defined key_trcbbl_adv 132 WRITE(numout,*) ' * Advective Bottom Boundary Layer'126 WRITE(numout,*) ' * Advective Bottom Boundary Layer' 133 127 # endif 134 WRITE(numout,*)135 128 ENDIF 136 129 #endif 137 130 138 ! Define the lateral tracer physics parameters 139 ! ============================================= 140 141 ! Read Namelist namtrcldf : Lateral physics on tracers 142 REWIND( numnat ) 131 ! ! Lateral physics on tracers 132 REWIND( numnat ) ! ! Read Namelist namtrcldf 143 133 READ ( numnat, namtrcldf ) 144 134 145 IF(lwp) THEN 135 IF(lwp) THEN ! ! Control print 146 136 WRITE(numout,*) 147 WRITE(numout,*) 'lateral passive tracer physics'148 WRITE(numout,*) '~~~~~~~'149 137 WRITE(numout,*) ' Namelist namtrcldf : set lateral mixing parameters (type, direction, coefficients)' 150 WRITE(numout,*) ' perform lateral diffusion or not ln_trcldf_diff = ', ln_trcldf_diff151 WRITE(numout,*) ' laplacian operator ln_trcldf_lap = ', ln_trcldf_lap152 WRITE(numout,*) ' bilaplacian operator ln_trcldf_bilap = ', ln_trcldf_bilap153 WRITE(numout,*) ' iso-level ln_trcldf_level = ', ln_trcldf_level154 WRITE(numout,*) ' horizontal (geopotential) ln_trcldf_hor = ', ln_trcldf_hor155 WRITE(numout,*) ' iso-neutral ln_trcldf_iso = ', ln_trcldf_iso156 WRITE(numout,*) ' lateral eddy diffusivity ahtrc0 = ', ahtrc0157 WRITE(numout,*) ' background hor. diffusivity ahtrb0 = ', ahtrb0158 WRITE(numout,*) ' eddy induced velocity coef. aeivtr0 = ', aeivtr0159 WRITE(numout,*) ' ratio between passive and active tracer diffusion coef trcrat = ', trcrat138 WRITE(numout,*) ' perform lateral diffusion or not ln_trcldf_diff = ', ln_trcldf_diff 139 WRITE(numout,*) ' laplacian operator ln_trcldf_lap = ', ln_trcldf_lap 140 WRITE(numout,*) ' bilaplacian operator ln_trcldf_bilap = ', ln_trcldf_bilap 141 WRITE(numout,*) ' iso-level ln_trcldf_level = ', ln_trcldf_level 142 WRITE(numout,*) ' horizontal (geopotential) ln_trcldf_hor = ', ln_trcldf_hor 143 WRITE(numout,*) ' iso-neutral ln_trcldf_iso = ', ln_trcldf_iso 144 WRITE(numout,*) ' lateral eddy diffusivity ahtrc0 = ', ahtrc0 145 WRITE(numout,*) ' background hor. diffusivity ahtrb0 = ', ahtrb0 146 WRITE(numout,*) ' eddy induced velocity coef. aeivtr0 = ', aeivtr0 147 WRITE(numout,*) ' ratio between passive and active tracer diffusion coef trcrat = ', trcrat 160 148 ENDIF 161 149 162 ! Read namtrczdf namelist : vertical mixing parameters 163 ! -------------------- 164 REWIND( numnat ) 150 ! ! Vertical mixing 151 REWIND( numnat ) ! ! Read namtrczdf namelist 165 152 READ ( numnat, namtrczdf ) 166 153 167 ! Parameter print 168 ! --------------- 169 IF(lwp) THEN 154 IF(lwp) THEN ! ! Control print 170 155 WRITE(numout,*) 171 WRITE(numout,*) 'vertical physics' 172 WRITE(numout,*) '~~~~~~~~' 173 WRITE(numout,*) ' Namelist namtrczdf : set vertical diffusion parameters' 174 WRITE(numout,*) ' time splitting / backward scheme ln_trczdf_exp = ', ln_trczdf_exp 175 WRITE(numout,*) ' number of time step n_trczdf_exp = ', n_trczdf_exp 156 WRITE(numout,*) ' Namelist namtrczdf : set vertical diffusion parameters' 157 WRITE(numout,*) ' time splitting / backward scheme ln_trczdf_exp = ', ln_trczdf_exp 158 WRITE(numout,*) ' number of time step n_trczdf_exp = ', n_trczdf_exp 176 159 ENDIF 177 160 178 161 # if defined key_trcdmp 179 ! Read Namelist namtdp : passive tracres damping term 180 ! -------------------- 181 REWIND( numnat ) 162 ! ! passive tracres damping term 163 REWIND( numnat ) ! ! Read Namelist namtdp 182 164 READ ( numnat, namtrcdmp ) 183 IF( lzoom ) nmldmptr = 0 ! restoring to climatology at closed north or south boundaries165 IF( lzoom ) nmldmptr = 0 ! restoring to climatology at closed north or south boundaries 184 166 185 ! Parameter control and print 186 ! --------------------------- 187 IF(lwp) THEN 167 IF(lwp) THEN ! ! Control print 188 168 WRITE(numout,*) 189 WRITE(numout,*) 'newtonian damping' 190 WRITE(numout,*) '~~~~~~~' 191 WRITE(numout,*) ' Namelist namtrcdmp : set damping parameter' 192 WRITE(numout,*) ' tracers damping option ndmptr = ', ndmptr 193 WRITE(numout,*) ' create a damping.coeff file ndmpftr = ', ndmpftr 194 WRITE(numout,*) ' mixed layer damping option nmldmptr = ', nmldmptr, '(zoom: forced to 0)' 195 WRITE(numout,*) ' surface time scale (days) sdmptr = ', sdmptr 196 WRITE(numout,*) ' bottom time scale (days) bdmptr = ', bdmptr 197 WRITE(numout,*) ' depth of transition (meters) hdmptr = ', hdmptr 198 WRITE(numout,*) 169 WRITE(numout,*) ' Namelist namtrcdmp : set damping parameter' 170 WRITE(numout,*) ' tracers damping option ndmptr = ', ndmptr 171 WRITE(numout,*) ' create a damping.coeff file ndmpftr = ', ndmpftr 172 WRITE(numout,*) ' mixed layer damping option nmldmptr = ', nmldmptr, '(zoom: forced to 0)' 173 WRITE(numout,*) ' surface time scale (days) sdmptr = ', sdmptr 174 WRITE(numout,*) ' bottom time scale (days) bdmptr = ', bdmptr 175 WRITE(numout,*) ' depth of transition (meters) hdmptr = ', hdmptr 199 176 ENDIF 200 177 #endif -
branches/dev_001_GM/NEMO/TOP_SRC/trcdit.F90
r768 r771 197 197 END SUBROUTINE trcdit_wr 198 198 199 200 199 # if defined key_trc_diatrd 201 200 … … 435 434 END SUBROUTINE trcdid_wr 436 435 436 # else 437 SUBROUTINE trcdid_wr( kt, kindic ) ! Dummy routine 438 INTEGER, INTENT ( in ) :: kt, kindic 439 WRITE(*,*) 'trcdid_wr: You should not have seen this print! error?', kt, kindic 440 END SUBROUTINE trcdid_wr 437 441 # endif 438 442 … … 580 584 END SUBROUTINE trcdii_wr 581 585 586 # else 587 SUBROUTINE trcdii_wr( kt, kindic ) ! Dummy routine 588 INTEGER, INTENT ( in ) :: kt, kindic 589 WRITE(*,*) 'trcdii_wr: You should not have seen this print! error?', kt, kindic 590 END SUBROUTINE trcdii_wr 582 591 # endif 583 592 … … 701 710 END SUBROUTINE trcdib_wr 702 711 712 # else 713 SUBROUTINE trcdib_wr( kt, kindic ) ! Dummy routine 714 INTEGER, INTENT ( in ) :: kt, kindic 715 WRITE(*,*) 'trcdib_wr: You should not have seen this print! error?', kt, kindic 716 END SUBROUTINE trcdib_wr 703 717 # endif 704 718 -
branches/dev_001_GM/NEMO/TOP_SRC/trcrst.F90
r768 r771 261 261 & + 0.5e-3 * ( 1.- tmask(ji,jj,jk) ) 262 262 bicarb = 2.* trn(ji,jj,jk,jpdic) - caralk 263 hi(ji,jj,jk) = ( ak23(ji,jj,jk) * bicarb / co3 ) * tmask(ji,jj,jk) 263 hi(ji,jj,jk) = ( ak23(ji,jj,jk) * bicarb / co3 ) * tmask(ji,jj,jk) & 264 264 & + 1.0e-9 * ( 1.- tmask(ji,jj,jk) ) 265 265 END DO -
branches/dev_001_GM/NEMO/TOP_SRC/trcsms.F90
r765 r771 88 88 ! ------------------------ 89 89 90 CALL p4zprg( kt) ! main program of PISCES90 CALL p4zprg( kt ) ! main program of PISCES 91 91 92 92 93 ! ! split in SMS to be DONE here93 ! ! split in SMS to be DONE here 94 94 95 95 #elif defined key_cfc … … 102 102 #endif 103 103 104 IF(ln_ctl) THEN! print mean trends (used for debugging)104 IF(ln_ctl) THEN ! print mean trends (used for debugging) 105 105 WRITE(charout, FMT="('SMS')") 106 CALL prt_ctl_trc_info( charout)107 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm)106 CALL prt_ctl_trc_info( charout ) 107 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm ) 108 108 ENDIF 109 109 ! -
branches/dev_001_GM/NEMO/TOP_SRC/trcstp.F90
r768 r771 2 2 !!====================================================================== 3 3 !! *** MODULE trcstp *** 4 !! T ime-stepping : time loop of opa for passive tracer4 !! TOP : time stepping of TOP models (passive tracers) 5 5 !!====================================================================== 6 !! History : 1.0 ! 2004-03 (C. Ethe) Original code 7 !!---------------------------------------------------------------------- 6 8 #if defined key_passivetrc 7 9 !!---------------------------------------------------------------------- 8 !! trc_stp : passive tracer system time-stepping10 !! 'key_passivetrc' TOP models 9 11 !!---------------------------------------------------------------------- 10 !! * Modules used 11 USE oce_trc ! ocean dynamics and active tracers variables 12 USE trc ! ocean passive tracers variables 13 USE trctrp ! passive tracers transport 14 USE trcsms ! passive tracers sources and sinks 15 USE prtctl_trc ! Print control for debbuging 16 USE trcdia 17 USE trcdit 18 USE trcrst 12 !! trc_stp : passive tracer system time-stepping 13 !!---------------------------------------------------------------------- 14 USE oce_trc ! ocean dynamics and active tracers variables 15 USE trc ! ocean passive tracers variables 16 USE trctrp ! passive tracers transport 17 USE trcsms ! passive tracers sources and sinks 18 USE prtctl_trc ! Print control for debbuging 19 USE trcdia ! passive tracer diagnostics 20 USE trcdit ! ??? 21 USE trcrst ! ??? 19 22 20 23 IMPLICIT NONE 21 24 PRIVATE 22 25 23 !! * Routine accessibility24 PUBLIC trc_stp ! called by step 26 PUBLIC trc_stp ! called in step.F90 module 27 25 28 !!---------------------------------------------------------------------- 26 !! 27 !! $ Header$28 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt29 !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005) 30 !! $Id$ 31 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 29 32 !!---------------------------------------------------------------------- 30 33 … … 32 35 33 36 SUBROUTINE trc_stp( kt, kindic ) 34 !!------------------------------------------------------------------- 37 !!---------------------------------------------------------------------- 35 38 !! *** ROUTINE trc_stp *** 36 39 !! 37 !! ** Purpose : Time loop of opa forpassive tracer40 !! ** Purpose : Time loop of TOP passive tracer 38 41 !! 39 !! ** Method : 40 !! Compute the passive tracers trends 41 !! Update the passive tracers 42 !! 43 !! History : 44 !! 9.0 ! 04-03 (C. Ethe) Original 45 !!------------------------------------------------------------------- 46 !! * Arguments 47 INTEGER, INTENT( in ) :: kt ! ocean time-step index 48 INTEGER, INTENT( in ) :: kindic 42 !! ** Method : Compute the passive tracers trends 43 !! Update the passive tracers 44 !!---------------------------------------------------------------------- 45 INTEGER, INTENT( in ) :: kt ! ocean time-step index 46 INTEGER, INTENT( in ) :: kindic ! ??? 49 47 CHARACTER (len=25) :: charout 48 !!---------------------------------------------------------------------- 50 49 51 ! this ROUTINE is called only every ndttrc time step 52 IF( MOD( kt , ndttrc ) /= 0 ) RETURN 50 IF( MOD( kt, ndttrc ) /= 0 ) RETURN ! routine called only every ndttrc time step 53 51 54 CALL trc_rst_opn( kt ) ! Open tracer restart file55 56 ! tracers: sink and source57 52 IF(ln_ctl) THEN 58 53 WRITE(charout,FMT="('kt =', I4,' d/m/y =',I2,I2,I4)") kt, nday, nmonth, nyear … … 60 55 ENDIF 61 56 62 CALL trc_sms( kt )57 CALL trc_rst_opn( kt ) ! Open tracer restart file 63 58 64 IF(ln_ctl) THEN ! print mean trends (used for debugging) 65 WRITE(charout, FMT="('SMS')") 66 CALL prt_ctl_trc_info(charout) 67 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 68 ENDIF 59 CALL trc_sms( kt ) ! sink and source of passive tracers 69 60 70 ! transport of passive tracers 71 CALL trc_trp( kt ) 61 CALL trc_trp( kt ) ! transport of passive tracers 72 62 73 IF(ln_ctl) THEN ! print mean trends (used for debugging) 74 WRITE(charout, FMT="('TRP')") 75 CALL prt_ctl_trc_info(charout) 76 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 77 ENDIF 63 IF( lrst_trc ) CALL trc_rst_wri( kt ) ! write tracer restart file 78 64 79 IF( lrst_trc ) CALL trc_rst_wri( kt ) ! write tracer restart file 80 81 CALL trc_dia( kt, kindic ) ! diagnostics 82 83 65 CALL trc_dia( kt, kindic ) ! diagnostics 66 ! 84 67 END SUBROUTINE trc_stp 85 68 86 69 #else 87 70 !!---------------------------------------------------------------------- 88 !! D efault key NO passive tracers71 !! Dummy module No TOP models 89 72 !!---------------------------------------------------------------------- 90 73 CONTAINS -
branches/dev_001_GM/NEMO/TOP_SRC/trp_trc.F90
r765 r771 12 12 #if defined key_passivetrc 13 13 !!---------------------------------------------------------------------- 14 !! 'key_passivetrc' Passive tracers14 !! 'key_passivetrc' TOP model 15 15 !!---------------------------------------------------------------------- 16 16
Note: See TracChangeset
for help on using the changeset viewer.