- Timestamp:
- 2019-09-10T17:46:18+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OFF/nemogcm.F90
r11483 r11527 60 60 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 61 61 USE lbcnfd , ONLY : isendto, nsndto, nfsloop, nfeloop ! Setup of north fold exchanges 62 USE step, ONLY : Nbb, Nnn, Naa, Nrhs ! time level indices 62 63 63 64 IMPLICIT NONE … … 67 68 68 69 CHARACTER (len=64) :: cform_aaa="( /, 'AAAAAAAA', / ) " ! flag for output listing 69 70 !!----------------------------------------------------------------------71 !! time level indices72 !!----------------------------------------------------------------------73 INTEGER :: Nbb, Nnn, Naa, Nrhs74 70 75 71 !!---------------------------------------------------------------------- -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trctrp.F90
r11480 r11527 53 53 !! - Update the passive tracers 54 54 !!---------------------------------------------------------------------- 55 INTEGER, INTENT( in 56 INTEGER, INTENT( in out ) :: Kbb, Kmm, Krhs, Kaa ! TOP time level indices (swapped in this routine)55 INTEGER, INTENT( in ) :: kt ! ocean time-step index 56 INTEGER, INTENT( in ) :: Kbb, Kmm, Krhs, Kaa ! time level indices (not swapped in this routine) 57 57 !! --------------------------------------------------------------------- 58 58 ! … … 80 80 CALL trc_atf ( kt, Kbb, Kmm, Kaa , tr ) ! time filtering of "now" tracer fields 81 81 ! 82 ! Swap TOP time levels (= Nrhs_trc, Nbb_trc etc) 83 Krhs = Kbb 84 Kbb = Kmm 85 Kmm = Kaa 86 Kaa = Krhs 82 ! Subsequent calls use the filtered values: Kmm and Kaa 83 ! These are used explicitly here since time levels will not be swapped until after tra_atf/dyn_atf/ssh_atf in stp 87 84 ! 88 IF( ln_trcrad ) CALL trc_rad ( kt, K bb, Kmm, tr ) ! Correct artificial negative concentrations89 IF( ln_trcdmp_clo ) CALL trc_dmp_clo( kt, K bb, Kmm) ! internal damping trends on closed seas only85 IF( ln_trcrad ) CALL trc_rad ( kt, Kmm, Kaa, tr ) ! Correct artificial negative concentrations 86 IF( ln_trcdmp_clo ) CALL trc_dmp_clo( kt, Kmm, Kaa ) ! internal damping trends on closed seas only 90 87 91 88 ! … … 96 93 CALL trc_atf( kt, Kbb, Kmm, Kaa , tr ) ! time filtering of "now" tracer fields 97 94 ! 98 ! Swap TOP time levels (= Nrhs_trc, Nbb_trc etc) 99 Krhs = Kbb 100 Kbb = Kmm 101 Kmm = Kaa 102 Kaa = Krhs 95 ! Subsequent calls use the filtered values: Kmm and Kaa 96 ! These are used explicitly here since time levels will not be swapped until after tra_atf/dyn_atf/ssh_atf in stp 103 97 ! 104 IF( ln_trcrad ) CALL trc_rad( kt, K bb, Kmm, tr ) ! Correct artificial negative concentrations98 IF( ln_trcrad ) CALL trc_rad( kt, Kmm, Kaa, tr ) ! Correct artificial negative concentrations 105 99 ! 106 100 END IF -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/oce_trc.F90
r11027 r11527 43 43 USE oce , ONLY : ssh => ssh !: sea surface height at t-point [m] 44 44 USE oce , ONLY : rab_n => rab_n !: local thermal/haline expension ratio at T-points 45 46 USE step, ONLY : Nbb, Nnn, Naa, Nrhs ! time level indices 45 47 46 48 !* surface fluxes * -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/trcini.F90
r11504 r11527 58 58 IF(lwp) WRITE(numout,*) '~~~~~~~~' 59 59 ! 60 ! Initialise time level indices61 Nbb_trc = 1; Nnn_trc = 2; Naa_trc = 3; Nrhs_trc = Naa_trc62 !63 60 CALL trc_ini_ctl ! control 64 61 CALL trc_nam ! read passive tracers namelists … … 72 69 IF(lwp) WRITE(numout,*) 73 70 ! 74 CALL trc_ini_sms( Nnn _trc) ! SMS71 CALL trc_ini_sms( Nnn ) ! SMS 75 72 CALL trc_ini_trp ! passive tracers transport 76 73 CALL trc_ice_ini ! Tracers in sea ice … … 80 77 ENDIF 81 78 ! 82 CALL trc_ini_state( Nbb _trc, Nnn_trc, Naa_trc) ! passive tracers initialisation : from a restart or from clim83 ! 84 CALL trc_ini_inv( Nnn _trc )! Inventories79 CALL trc_ini_state( Nbb, Nnn, Naa ) ! passive tracers initialisation : from a restart or from clim 80 ! 81 CALL trc_ini_inv( Nnn ) ! Inventories 85 82 ! 86 83 IF( ln_timing ) CALL timing_stop('trc_init') -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/trcstp.F90
r11506 r11527 38 38 39 39 !!---------------------------------------------------------------------- 40 !! time level indices41 !!----------------------------------------------------------------------42 INTEGER, PUBLIC :: Nbb_trc, Nnn_trc, Naa_trc, Nrhs_trc !! used by trc_init43 44 !!----------------------------------------------------------------------45 40 !! NEMO/TOP 4.0 , NEMO Consortium (2018) 46 41 !! $Id$ … … 49 44 CONTAINS 50 45 51 SUBROUTINE trc_stp( kt, Kbb _oce, Kmm_oce, Krhs_oce, Kaa_oce)46 SUBROUTINE trc_stp( kt, Kbb, Kmm, Krhs, Kaa ) 52 47 !!------------------------------------------------------------------- 53 48 !! *** ROUTINE trc_stp *** … … 59 54 !!------------------------------------------------------------------- 60 55 INTEGER, INTENT( in ) :: kt ! ocean time-step index 61 INTEGER, INTENT( in ) :: Kbb _oce, Kmm_oce, Krhs_oce, Kaa_oce! time level indices56 INTEGER, INTENT( in ) :: Kbb, Kmm, Krhs, Kaa ! time level indices 62 57 ! 63 58 INTEGER :: jk, jn ! dummy loop indices … … 81 76 IF( .NOT.ln_linssh ) THEN ! update ocean volume due to ssh temporal evolution 82 77 DO jk = 1, jpk 83 cvol(:,:,jk) = e1e2t(:,:) * e3t(:,:,jk,Kmm _oce) * tmask(:,:,jk)78 cvol(:,:,jk) = e1e2t(:,:) * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 84 79 END DO 85 80 IF ( ln_ctl .OR. kt == nitrst .OR. ( ln_check_mass .AND. kt == nitend ) & … … 91 86 IF( l_trcdm2dc ) CALL trc_mean_qsr( kt ) 92 87 ! 93 IF( Kmm_oce /= Nnn_trc .OR. Kaa_oce /= Naa_trc .OR. Krhs_oce /= Nrhs_trc ) THEN94 ! The OCE and TRC time indices should be the same always.95 ! If this is not the case then something has gone wrong.96 CALL ctl_stop( 'trc_stp : OCE and TRC time indices are different! Something has gone wrong.' )97 ENDIF98 !99 88 ! 100 89 IF(ln_ctl) THEN … … 103 92 ENDIF 104 93 ! 105 tr(:,:,:,:,Nrhs_trc) = 0.e0 106 ! 107 CALL trc_rst_opn ( kt ) ! Open tracer restart file 108 IF( lrst_trc ) CALL trc_rst_cal ( kt, 'WRITE' ) ! calendar 109 CALL trc_wri ( kt, Nnn_trc ) ! output of passive tracers with iom I/O manager 110 CALL trc_sms ( kt, Nbb_trc, Nnn_trc, Nrhs_trc ) ! tracers: sinks and sources 111 CALL trc_trp ( kt, Nbb_trc, Nnn_trc, Nrhs_trc, Naa_trc ) ! transport of passive tracers 94 tr(:,:,:,:,Krhs) = 0._wp 95 ! 96 CALL trc_rst_opn ( kt ) ! Open tracer restart file 97 IF( lrst_trc ) CALL trc_rst_cal ( kt, 'WRITE' ) ! calendar 98 CALL trc_wri ( kt, Kmm ) ! output of passive tracers with iom I/O manager 99 CALL trc_sms ( kt, Kbb, Kmm, Krhs ) ! tracers: sinks and sources 100 CALL trc_trp ( kt, Kbb, Kmm, Krhs, Kaa ) ! transport of passive tracers 101 ! 102 ! Note passive tracers have been time-filtered in trc_trp but the time level 103 ! indices will not be swapped until after tra_atf/dyn_atf/ssh_atf in stp. Subsequent calls here 104 ! anticipate this update which will be: Nrhs= Nbb ; Nbb = Nnn ; Nnn = Naa ; Naa = Nrhs 105 ! and use the filtered levels explicitly. 106 ! 112 107 IF( kt == nittrc000 ) THEN 113 CALL iom_close( numrtr ) ! close input tracer restart file114 IF(lwm) CALL FLUSH( numont ) ! flush namelist output115 ENDIF 116 IF( lrst_trc ) CALL trc_rst_wri ( kt, Nbb_trc, Nnn_trc, Nrhs_trc) ! write tracer restart file117 IF( lk_trdmxl_trc ) CALL trd_mxl_trc ( kt, Nnn_trc) ! trends: Mixed-layer108 CALL iom_close( numrtr ) ! close input tracer restart file 109 IF(lwm) CALL FLUSH( numont ) ! flush namelist output 110 ENDIF 111 IF( lrst_trc ) CALL trc_rst_wri ( kt, Kmm, Kaa, Kbb ) ! write tracer restart file 112 IF( lk_trdmxl_trc ) CALL trd_mxl_trc ( kt, Kaa ) ! trends: Mixed-layer 118 113 ! 119 114 IF (ll_trcstat) THEN 120 115 ztrai = 0._wp ! content of all tracers 121 116 DO jn = 1, jptra 122 ztrai = ztrai + glob_sum( 'trcstp', tr(:,:,:,jn, Nnn_trc) * cvol(:,:,:) )117 ztrai = ztrai + glob_sum( 'trcstp', tr(:,:,:,jn,Kaa) * cvol(:,:,:) ) 123 118 END DO 124 119 IF( lwm ) WRITE(numstr,9300) kt, ztrai / areatot
Note: See TracChangeset
for help on using the changeset viewer.