Changeset 11989 for NEMO/trunk/src/OCE/TRA
- Timestamp:
- 2019-11-27T16:13:52+01:00 (4 years ago)
- Location:
- NEMO/trunk/src/OCE/TRA
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/TRA/eosbn2.F90
r11536 r11989 30 30 !! eos_insitu_2d : Compute the in situ density for 2d fields 31 31 !! bn2 : Compute the Brunt-Vaisala frequency 32 !! bn2 : compute the Brunt-Vaisala frequency33 32 !! eos_pt_from_ct: compute the potential temperature from the Conservative Temperature 34 33 !! eos_rab : generic interface of in situ thermal/haline expansion ratio … … 67 66 END INTERFACE 68 67 ! 68 INTERFACE eos_pt_from_ct 69 MODULE PROCEDURE eos_pt_from_ct_2d, eos_pt_from_ct_3d 70 END INTERFACE 71 69 72 PUBLIC eos ! called by step, istate, tranpc and zpsgrd modules 70 73 PUBLIC bn2 ! called by step module … … 76 79 77 80 ! !!** Namelist nameos ** 78 LOGICAL , PUBLIC :: ln_TEOS10 79 LOGICAL , PUBLIC :: ln_EOS80 80 LOGICAL , PUBLIC :: ln_SEOS 81 LOGICAL , PUBLIC :: ln_TEOS10 82 LOGICAL , PUBLIC :: ln_EOS80 83 LOGICAL , PUBLIC :: ln_SEOS 81 84 82 85 ! Parameters … … 936 939 937 940 938 FUNCTION eos_pt_from_ct ( ctmp, psal ) RESULT( ptmp )941 FUNCTION eos_pt_from_ct_2d( ctmp, psal ) RESULT( ptmp ) 939 942 !!---------------------------------------------------------------------- 940 943 !! *** ROUTINE eos_pt_from_ct *** … … 959 962 !!---------------------------------------------------------------------- 960 963 ! 961 IF( ln_timing ) CALL timing_start('eos_pt_from_ct ')964 IF( ln_timing ) CALL timing_start('eos_pt_from_ct_2d') 962 965 ! 963 966 zdeltaS = 5._wp … … 990 993 END DO 991 994 ! 992 IF( ln_timing ) CALL timing_stop('eos_pt_from_ct') 993 ! 994 END FUNCTION eos_pt_from_ct 995 IF( ln_timing ) CALL timing_stop('eos_pt_from_ct_2d') 996 ! 997 END FUNCTION eos_pt_from_ct_2d 998 999 1000 FUNCTION eos_pt_from_ct_3d( ctmp, psal ) RESULT( ptmp ) 1001 !!---------------------------------------------------------------------- 1002 !! *** ROUTINE eos_pt_from_ct *** 1003 !! 1004 !! ** Purpose : Compute pot.temp. from cons. temp. [Celcius] 1005 !! 1006 !! ** Method : rational approximation (5/3th order) of TEOS-10 algorithm 1007 !! checkvalue: pt=20.02391895 Celsius for sa=35.7g/kg, ct=20degC 1008 !! 1009 !! Reference : TEOS-10, UNESCO 1010 !! Rational approximation to TEOS10 algorithm (rms error on WOA13 values: 4.0e-5 degC) 1011 !!---------------------------------------------------------------------- 1012 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in) :: ctmp ! Cons. Temp [Celcius] 1013 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in) :: psal ! salinity [psu] 1014 ! Leave result array automatic rather than making explicitly allocated 1015 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ptmp ! potential temperature [Celcius] 1016 ! 1017 INTEGER :: ji, jj, jk ! dummy loop indices 1018 REAL(wp) :: zt , zs , ztm ! local scalars 1019 REAL(wp) :: zn , zd ! local scalars 1020 REAL(wp) :: zdeltaS , z1_S0 , z1_T0 1021 !!---------------------------------------------------------------------- 1022 ! 1023 IF ( ln_timing ) CALL timing_start('eos_pt_from_ct_3d') 1024 ! 1025 zdeltaS = 5._wp 1026 z1_S0 = 0.875_wp/35.16504_wp 1027 z1_T0 = 1._wp/40._wp 1028 ! 1029 DO jk = 1, jpkm1 1030 DO jj = 1, jpj 1031 DO ji = 1, jpi 1032 ! 1033 zt = ctmp (ji,jj,jk) * z1_T0 1034 zs = SQRT( ABS( psal(ji,jj,jk) + zdeltaS ) * r1_S0 ) 1035 ztm = tmask(ji,jj,jk) 1036 ! 1037 zn = ((((-2.1385727895e-01_wp*zt & 1038 & - 2.7674419971e-01_wp*zs+1.0728094330_wp)*zt & 1039 & + (2.6366564313_wp*zs+3.3546960647_wp)*zs-7.8012209473_wp)*zt & 1040 & + ((1.8835586562_wp*zs+7.3949191679_wp)*zs-3.3937395875_wp)*zs-5.6414948432_wp)*zt & 1041 & + (((3.5737370589_wp*zs-1.5512427389e+01_wp)*zs+2.4625741105e+01_wp)*zs & 1042 & +1.9912291000e+01_wp)*zs-3.2191146312e+01_wp)*zt & 1043 & + ((((5.7153204649e-01_wp*zs-3.0943149543_wp)*zs+9.3052495181_wp)*zs & 1044 & -9.4528934807_wp)*zs+3.1066408996_wp)*zs-4.3504021262e-01_wp 1045 ! 1046 zd = (2.0035003456_wp*zt & 1047 & -3.4570358592e-01_wp*zs+5.6471810638_wp)*zt & 1048 & + (1.5393993508_wp*zs-6.9394762624_wp)*zs+1.2750522650e+01_wp 1049 ! 1050 ptmp(ji,jj,jk) = ( zt / z1_T0 + zn / zd ) * ztm 1051 ! 1052 END DO 1053 END DO 1054 END DO 1055 ! 1056 IF( ln_timing ) CALL timing_stop('eos_pt_from_ct_3d') 1057 ! 1058 END FUNCTION eos_pt_from_ct_3d 995 1059 996 1060 … … 1651 1715 1652 1716 r1_S0 = 0.875_wp/35.16504_wp ! Used to convert CT in potential temperature when using bulk formulae (eos_pt_from_ct) 1653 1717 1654 1718 IF(lwp) THEN 1655 1719 WRITE(numout,*) -
NEMO/trunk/src/OCE/TRA/traadv.F90
r11536 r11989 134 134 ! 135 135 !!gm ??? 136 IF( ln_diaptr ) CALL dia_ptr(zvn ) ! diagnose the effective MSF136 CALL dia_ptr( kt, zvn ) ! diagnose the effective MSF 137 137 !!gm ??? 138 138 ! 139 139 140 IF( l_trdtra ) THEN !* Save ta and sa trends 140 141 ALLOCATE( ztrdt(jpi,jpj,jpk), ztrds(jpi,jpj,jpk) ) -
NEMO/trunk/src/OCE/TRA/traadv_cen.F90
r10425 r11989 61 61 !! ** Action : - update pta with the now advective tracer trends 62 62 !! - send trends to trdtra module for further diagnostcs (l_trdtra=T) 63 !! - htr_adv, str_adv :poleward advective heat and salt transport (ln_diaptr=T)63 !! - poleward advective heat and salt transport (ln_diaptr=T) 64 64 !!---------------------------------------------------------------------- 65 65 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 89 89 l_hst = .FALSE. 90 90 l_ptr = .FALSE. 91 IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) 92 IF( cdtype == 'TRA' .AND. ln_diaptr )l_ptr = .TRUE.91 IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) l_trd = .TRUE. 92 IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtadv' ) .OR. iom_use( 'sophtadv' ) ) ) l_ptr = .TRUE. 93 93 IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. & 94 & iom_use("uadv_salttr") .OR. iom_use("vadv_salttr") ) ) 94 & iom_use("uadv_salttr") .OR. iom_use("vadv_salttr") ) ) l_hst = .TRUE. 95 95 ! 96 96 ! -
NEMO/trunk/src/OCE/TRA/traadv_fct.F90
r11411 r11989 68 68 !! ** Action : - update pta with the now advective tracer trends 69 69 !! - send trends to trdtra module for further diagnostics (l_trdtra=T) 70 !! - htr_adv, str_adv :poleward advective heat and salt transport (ln_diaptr=T)70 !! - poleward advective heat and salt transport (ln_diaptr=T) 71 71 !!---------------------------------------------------------------------- 72 72 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 101 101 l_ptr = .FALSE. 102 102 ll_zAimp = .FALSE. 103 IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype =='TRC' .AND. l_trdtrc ) )l_trd = .TRUE.104 IF( cdtype == 'TRA' .AND. ln_diaptr )l_ptr = .TRUE.105 IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. &103 IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype =='TRC' .AND. l_trdtrc ) ) l_trd = .TRUE. 104 IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtadv' ) .OR. iom_use( 'sophtadv' ) ) ) l_ptr = .TRUE. 105 IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. & 106 106 & iom_use("uadv_salttr") .OR. iom_use("vadv_salttr") ) ) l_hst = .TRUE. 107 107 ! -
NEMO/trunk/src/OCE/TRA/traadv_mus.F90
r10425 r11989 68 68 !! ** Action : - update pta with the now advective tracer trends 69 69 !! - send trends to trdtra module for further diagnostcs (l_trdtra=T) 70 !! - htr_adv, str_adv :poleward advective heat and salt transport (ln_diaptr=T)70 !! - poleward advective heat and salt transport (ln_diaptr=T) 71 71 !! 72 72 !! References : Estubier, A., and M. Levy, Notes Techn. Pole de Modelisation … … 120 120 l_ptr = .FALSE. 121 121 IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) l_trd = .TRUE. 122 IF( cdtype == 'TRA' .AND. ln_diaptr )l_ptr = .TRUE.122 IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtadv' ) .OR. iom_use( 'sophtadv' ) ) ) l_ptr = .TRUE. 123 123 IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. & 124 124 & iom_use("uadv_salttr") .OR. iom_use("vadv_salttr") ) ) l_hst = .TRUE. -
NEMO/trunk/src/OCE/TRA/traadv_qck.F90
r10425 r11989 21 21 USE trdtra ! trends manager: tracers 22 22 USE diaptr ! poleward transport diagnostics 23 USE iom 23 24 ! 24 25 USE in_out_manager ! I/O manager … … 80 81 !! ** Action : - update pta with the now advective tracer trends 81 82 !! - send trends to trdtra module for further diagnostcs (l_trdtra=T) 82 !! - htr_adv, str_adv :poleward advective heat and salt transport (ln_diaptr=T)83 !! - poleward advective heat and salt transport (ln_diaptr=T) 83 84 !! 84 85 !! ** Reference : Leonard (1979, 1991) … … 103 104 l_trd = .FALSE. 104 105 l_ptr = .FALSE. 105 IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) 106 IF( cdtype == 'TRA' .AND. ln_diaptr )l_ptr = .TRUE.106 IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) l_trd = .TRUE. 107 IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtadv' ) .OR. iom_use( 'sophtadv' ) ) ) l_ptr = .TRUE. 107 108 ! 108 109 ! -
NEMO/trunk/src/OCE/TRA/traadv_ubs.F90
r10425 r11989 79 79 !! ** Action : - update pta with the now advective tracer trends 80 80 !! - send trends to trdtra module for further diagnostcs (l_trdtra=T) 81 !! - htr_adv, str_adv :poleward advective heat and salt transport (ln_diaptr=T)81 !! - poleward advective heat and salt transport (ln_diaptr=T) 82 82 !! 83 83 !! Reference : Shchepetkin, A. F., J. C. McWilliams, 2005, Ocean Modelling, 9, 347-404. … … 111 111 l_ptr = .FALSE. 112 112 IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) l_trd = .TRUE. 113 IF( cdtype == 'TRA' .AND. ln_diaptr )l_ptr = .TRUE.113 IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtadv' ) .OR. iom_use( 'sophtadv' ) ) ) l_ptr = .TRUE. 114 114 IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. & 115 115 & iom_use("uadv_salttr") .OR. iom_use("vadv_salttr") ) ) l_hst = .TRUE. -
NEMO/trunk/src/OCE/TRA/trabbc.F90
r11536 r11989 100 100 ENDIF 101 101 ! 102 CALL iom_put ( "hfgeou" , rau0_rcp * qgh_trd0(:,:) ) 103 ! 102 104 IF(ln_ctl) CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' bbc - Ta: ', mask1=tmask, clinfo3='tra-ta' ) 103 105 ! -
NEMO/trunk/src/OCE/TRA/traldf_iso.F90
r11536 r11989 124 124 l_hst = .FALSE. 125 125 l_ptr = .FALSE. 126 IF( cdtype == 'TRA' .AND. ln_diaptr )l_ptr = .TRUE.126 IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) ) l_ptr = .TRUE. 127 127 IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. & 128 128 & iom_use("uadv_salttr") .OR. iom_use("vadv_salttr") ) ) l_hst = .TRUE. -
NEMO/trunk/src/OCE/TRA/traldf_lap_blp.F90
r10425 r11989 89 89 l_hst = .FALSE. 90 90 l_ptr = .FALSE. 91 IF( cdtype == 'TRA' .AND. ln_diaptr ) l_ptr = .TRUE.91 IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) ) l_ptr = .TRUE. 92 92 IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. & 93 93 & iom_use("uadv_salttr") .OR. iom_use("vadv_salttr") ) ) l_hst = .TRUE. -
NEMO/trunk/src/OCE/TRA/traldf_triad.F90
r10425 r11989 110 110 l_hst = .FALSE. 111 111 l_ptr = .FALSE. 112 IF( cdtype == 'TRA' .AND. ln_diaptr )l_ptr = .TRUE.112 IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) ) l_ptr = .TRUE. 113 113 IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. & 114 114 & iom_use("uadv_salttr") .OR. iom_use("vadv_salttr") ) ) l_hst = .TRUE.
Note: See TracChangeset
for help on using the changeset viewer.