- Timestamp:
- 2019-11-22T15:29:17+01:00 (5 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Property svn:mergeinfo deleted
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/C1D/step_c1d.F90
r10068 r11949 6 6 !! History : 2.0 ! 2004-04 (C. Ethe) adapted from step.F90 for C1D 7 7 !! 3.0 ! 2008-04 (G. Madec) redo the adaptation to include SBC 8 !! 4.1 ! 2019-08 (A. Coward, D. Storkey) rewrite in preparation for new timestepping scheme 8 9 !!---------------------------------------------------------------------- 9 10 #if defined key_c1d … … 14 15 !!---------------------------------------------------------------------- 15 16 USE step_oce ! time stepping definition modules 17 USE step, ONLY : Nbb, Nnn, Naa, Nrhs ! time level indices 16 18 #if defined key_top 17 19 USE trcstp ! passive tracer time-stepping (trc_stp routine) 18 20 #endif 19 21 USE dyncor_c1d ! Coriolis term (c1d case) (dyn_cor_1d ) 20 USE dyn nxt ! time-stepping (dyn_nxtroutine)22 USE dynatf ! time filtering (dyn_atf routine) 21 23 USE dyndmp ! U & V momentum damping (dyn_dmp routine) 22 24 USE restart ! restart … … 65 67 ! Update data, open boundaries, surface boundary condition (including sea-ice) 66 68 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 67 CALL sbc ( kstp )! Sea Boundary Condition (including sea-ice)69 CALL sbc ( kstp, Nbb, Nnn ) ! Sea Boundary Condition (including sea-ice) 68 70 69 71 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 70 ! Ocean physics update (ua, va, ta, sa used as workspace)72 ! Ocean physics update 71 73 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 72 CALL eos_rab( ts b, rab_b )! before local thermal/haline expension ratio at T-points73 CALL eos_rab( ts n, rab_n )! now local thermal/haline expension ratio at T-points74 CALL bn2( ts b, rab_b, rn2b) ! before Brunt-Vaisala frequency75 CALL bn2( ts n, rab_n, rn2) ! now Brunt-Vaisala frequency74 CALL eos_rab( ts(:,:,:,:,Nbb), rab_b, Nnn ) ! before local thermal/haline expension ratio at T-points 75 CALL eos_rab( ts(:,:,:,:,Nnn), rab_n, Nnn ) ! now local thermal/haline expension ratio at T-points 76 CALL bn2( ts(:,:,:,:,Nbb), rab_b, rn2b, Nnn ) ! before Brunt-Vaisala frequency 77 CALL bn2( ts(:,:,:,:,Nnn), rab_n, rn2 , Nnn ) ! now Brunt-Vaisala frequency 76 78 77 79 ! VERTICAL PHYSICS 78 CALL zdf_phy( kstp )! vertical physics update (bfr, avt, avs, avm + MLD)80 CALL zdf_phy( kstp, Nbb, Nnn, Nrhs ) ! vertical physics update (bfr, avt, avs, avm + MLD) 79 81 80 IF(.NOT.ln_linssh ) CALL ssh_nxt ( kstp ) ! after ssh (includes call to div_hor)81 IF(.NOT.ln_linssh ) CALL dom_vvl_sf_nxt( kstp ) ! after vertical scale factors82 IF(.NOT.ln_linssh ) CALL ssh_nxt ( kstp, Nbb, Nnn, ssh, Naa ) ! after ssh (includes call to div_hor) 83 IF(.NOT.ln_linssh ) CALL dom_vvl_sf_nxt( kstp, Nbb, Nnn, Naa ) ! after vertical scale factors 82 84 83 IF(.NOT.ln_linssh ) CALL wzv ( kstp ) ! now cross-level velocity85 IF(.NOT.ln_linssh ) CALL wzv ( kstp, Nbb, Nnn, ww, Naa ) ! now cross-level velocity 84 86 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 85 ! diagnostics and outputs (ua, va, ta, sa used as workspace)87 ! diagnostics and outputs 86 88 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 87 CALL dia_wri( kstp )! ocean model: outputs88 IF( lk_diahth ) CALL dia_hth( kstp )! Thermocline depth (20°C)89 CALL dia_wri( kstp, Nnn ) ! ocean model: outputs 90 IF( lk_diahth ) CALL dia_hth( kstp, Nnn ) ! Thermocline depth (20°C) 89 91 90 92 … … 93 95 ! Passive Tracer Model 94 96 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 95 CALL trc_stp( kstp )! time-stepping97 CALL trc_stp( kstp, Nbb, Nnn, Nrhs, Naa ) ! time-stepping 96 98 #endif 97 99 98 100 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 99 ! Active tracers (u a, vaused as workspace)101 ! Active tracers (uu(:,:,:,Nrhs), vv(:,:,:,Nrhs) used as workspace) 100 102 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 101 ts a(:,:,:,:) = 0._wp ! set tracer trends to zero103 ts(:,:,:,:,Nrhs) = 0._wp ! set tracer trends to zero 102 104 103 CALL tra_sbc( kstp )! surface boundary condition104 IF( ln_traqsr ) CALL tra_qsr( kstp )! penetrative solar radiation qsr105 IF( ln_tradmp ) CALL tra_dmp( kstp )! internal damping trends- tracers106 IF(.NOT.ln_linssh)CALL tra_adv( kstp )! horizontal & vertical advection107 IF( ln_zdfosm ) CALL tra_osm( kstp )! OSMOSIS non-local tracer fluxes108 CALL tra_zdf( kstp )! vertical mixing109 CALL eos( ts n, rhd, rhop, gdept_0(:,:,:) )! now potential density for zdfmxl110 IF( ln_zdfnpc ) CALL tra_npc( kstp )! applied non penetrative convective adjustment on (t,s)111 CALL tra_ nxt( kstp ) ! tracer fields at next time step105 CALL tra_sbc( kstp, Nnn, ts, Nrhs ) ! surface boundary condition 106 IF( ln_traqsr ) CALL tra_qsr( kstp, Nnn, ts, Nrhs ) ! penetrative solar radiation qsr 107 IF( ln_tradmp ) CALL tra_dmp( kstp, Nbb, Nnn, ts, Nrhs ) ! internal damping trends- tracers 108 IF(.NOT.ln_linssh)CALL tra_adv( kstp, Nbb, Nnn, ts, Nrhs ) ! horizontal & vertical advection 109 IF( ln_zdfosm ) CALL tra_osm( kstp, Nnn , ts, Nrhs ) ! OSMOSIS non-local tracer fluxes 110 CALL tra_zdf( kstp, Nbb, Nnn, Nrhs, ts, Naa ) ! vertical mixing 111 CALL eos( ts(:,:,:,:,Nnn), rhd, rhop, gdept_0(:,:,:) ) ! now potential density for zdfmxl 112 IF( ln_zdfnpc ) CALL tra_npc( kstp, Nnn, Nrhs, ts, Naa ) ! applied non penetrative convective adjustment on (t,s) 113 CALL tra_atf( kstp, Nbb, Nnn, Nrhs, Naa, ts ) ! time filtering of "now" tracer fields 112 114 113 115 … … 116 118 ! Dynamics (ta, sa used as workspace) 117 119 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 118 u a(:,:,:) = 0._wp ! set dynamics trends to zero119 v a(:,:,:) = 0._wp120 uu(:,:,:,Nrhs) = 0._wp ! set dynamics trends to zero 121 vv(:,:,:,Nrhs) = 0._wp 120 122 121 IF( ln_dyndmp ) CALL dyn_dmp ( kstp ) ! internal damping trends- momentum 122 CALL dyn_cor_c1d( kstp ) ! vorticity term including Coriolis 123 IF( ln_zdfosm ) CALL dyn_osm ( kstp ) ! OSMOSIS non-local velocity fluxes 124 CALL dyn_zdf ( kstp ) ! vertical diffusion 125 CALL dyn_nxt ( kstp ) ! lateral velocity at next time step 126 IF(.NOT.ln_linssh)CALL ssh_swp ( kstp ) ! swap of sea surface height 127 128 IF(.NOT.ln_linssh)CALL dom_vvl_sf_swp( kstp )! swap of vertical scale factors 123 IF( ln_dyndmp ) CALL dyn_dmp ( kstp, Nbb, Nnn , uu, vv, Nrhs ) ! internal damping trends- momentum 124 CALL dyn_cor_c1d( kstp, Nnn , uu, vv, Nrhs ) ! vorticity term including Coriolis 125 IF( ln_zdfosm ) CALL dyn_osm ( kstp, Nnn , uu, vv, Nrhs ) ! OSMOSIS non-local velocity fluxes 126 CALL dyn_zdf ( kstp, Nbb, Nnn, Nrhs, uu, vv, Naa ) ! vertical diffusion 127 CALL dyn_atf ( kstp, Nbb, Nnn, Naa , uu, vv, e3t, e3u, e3v ) ! time filtering of "now" fields 128 IF(.NOT.ln_linssh)CALL ssh_atf ( kstp, Nbb, Nnn, Naa , ssh ) ! time filtering of "now" sea surface height 129 ! 130 ! Swap time levels 131 Nrhs = Nbb 132 Nbb = Nnn 133 Nnn = Naa 134 Naa = Nrhs 135 ! 136 IF(.NOT.ln_linssh)CALL dom_vvl_sf_update( kstp, Nbb, Nnn, Naa ) ! update of vertical scale factors 129 137 130 138 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 131 139 ! Control and restarts 132 140 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 133 CALL stp_ctl( kstp, indic )134 IF( kstp == nit000 ) CALL iom_close( numror ) ! close input ocean restart file135 IF( lrst_oce ) CALL rst_write( kstp )! write output ocean restart file141 CALL stp_ctl( kstp, Nnn, indic ) 142 IF( kstp == nit000 ) CALL iom_close( numror ) ! close input ocean restart file 143 IF( lrst_oce ) CALL rst_write( kstp, Nbb, Nnn ) ! write output ocean restart file 136 144 ! 137 145 #if defined key_iomput
Note: See TracChangeset
for help on using the changeset viewer.