Changeset 5137 for branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO
- Timestamp:
- 2015-03-11T10:57:11+01:00 (9 years ago)
- Location:
- branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90
r5023 r5137 37 37 PUBLIC ptr_sj ! call by tra_ldf & tra_adv routines 38 38 PUBLIC ptr_sjk ! 39 PUBLIC dia_ptr_ alloc ! call in opamodule39 PUBLIC dia_ptr_init ! call in step module 40 40 PUBLIC dia_ptr ! call in step module 41 41 … … 45 45 46 46 47 LOGICAL, PUBLIC :: l_diaptr = .TRUE. ! Poleward transport flag (T) or not (F) 48 LOGICAL :: l_subbas = .FALSE. ! Atlantic/Pacific/Indian basins calculation 49 LOGICAL :: linit = .TRUE. ! initialization flag (set to false after the 1st call) 50 INTEGER :: nptr ! = 1 (l_subbas=F) or = 5 (glo, atl, pac, ind, ipc) (l_subbas=T) 47 LOGICAL, PUBLIC :: ln_diaptr ! Poleward transport flag (T) or not (F) 48 LOGICAL, PUBLIC :: ln_subbas ! Atlantic/Pacific/Indian basins calculation 49 INTEGER :: nptr ! = 1 (l_subbas=F) or = 5 (glo, atl, pac, ind, ipc) (l_subbas=T) 51 50 INTEGER :: nx, ny 52 51 … … 90 89 IF( nn_timing == 1 ) CALL timing_start('dia_ptr') 91 90 92 IF( linit ) THEN93 CALL dia_ptr_init94 linit = .FALSE.95 ENDIF96 91 ! 97 92 IF( PRESENT( pvtr ) ) THEN … … 147 142 z2d(nx,:) = htr_adv(:) * rc_pwatt ! (conversion in PW) 148 143 cl1 = 'sophtadv' 144 !IF(lwp) write(numout,*) ' sophtadv : ',(z2d(nx,jj), jj=1,jpj) 149 145 CALL iom_put( TRIM(cl1), z2d ) 150 146 z2d(nx,:) = str_adv(:) * rc_ggram ! (conversion in Gg) … … 175 171 !! ** Purpose : Initialization, namelist read 176 172 !!---------------------------------------------------------------------- 177 INTEGER :: jn, inum ! local integers 178 !!---------------------------------------------------------------------- 179 180 l_diaptr = iom_use("zomsfglo") .OR. iom_use("zotemglo") .OR. iom_use("sophtadv") .OR. iom_use("sophtldf") 181 CALL iom_open( 'subbasins', inum, ldstop = .FALSE. ) 182 IF( inum > 0 ) l_subbas = .TRUE. 183 173 INTEGER :: jn ! local integers 174 INTEGER :: inum, ierr ! local integers 175 INTEGER :: ios ! Local integer output status for namelist read 176 !! 177 NAMELIST/namptr/ ln_diaptr, ln_subbas 178 !!---------------------------------------------------------------------- 179 180 REWIND( numnam_ref ) ! Namelist namptr in reference namelist : Poleward transport 181 READ ( numnam_ref, namptr, IOSTAT = ios, ERR = 901) 182 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namptr in reference namelist', lwp ) 183 184 REWIND( numnam_cfg ) ! Namelist namptr in configuration namelist : Poleward transport 185 READ ( numnam_cfg, namptr, IOSTAT = ios, ERR = 902 ) 186 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namptr in configuration namelist', lwp ) 187 IF(lwm) WRITE ( numond, namptr ) 188 184 189 IF(lwp) THEN ! Control print 185 190 WRITE(numout,*) … … 187 192 WRITE(numout,*) '~~~~~~~~~~~~' 188 193 WRITE(numout,*) ' Namelist namptr : set ptr parameters' 189 WRITE(numout,*) ' Poleward heat & salt transport (T) or not (F) l _diaptr = ', l_diaptr190 WRITE(numout,*) ' Global (F) or glo/Atl/Pac/Ind/Indo-Pac basins l _subbas = ', l_subbas194 WRITE(numout,*) ' Poleward heat & salt transport (T) or not (F) ln_diaptr = ', ln_diaptr 195 WRITE(numout,*) ' Global (F) or glo/Atl/Pac/Ind/Indo-Pac basins ln_subbas = ', ln_subbas 191 196 ENDIF 192 197 193 IF( l _diaptr ) THEN198 IF( ln_diaptr ) THEN 194 199 ! 195 200 CALL dom_ngb( 180., 90., nx, ny, 'T' ) ! i-line that passes near the North Pole : Reference latitude (used in plots) 196 201 ! 197 IF( l _subbas ) THEN202 IF( ln_subbas ) THEN 198 203 nptr = 5 ! Global, Atlantic, Pacific, Indian, Indo-Pacific 199 204 ALLOCATE( clsubb(nptr) ) … … 212 217 IF( lk_mpp ) CALL mpp_ini_znl( numout ) ! Define MPI communicator for zonal sum 213 218 214 IF( l_subbas ) THEN ! load sub-basin mask 219 IF( ln_subbas ) THEN ! load sub-basin mask 220 CALL iom_open( 'subbasins', inum, ldstop = .FALSE. ) 215 221 CALL iom_get( inum, jpdom_data, 'atlmsk', btmsk(:,:,2) ) ! Atlantic basin 216 222 CALL iom_get( inum, jpdom_data, 'pacmsk', btmsk(:,:,3) ) ! Pacific basin -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90
r5023 r5137 118 118 CALL iom_put( "wocetr_eff", zwn ) 119 119 ! 120 IF( l _diaptr ) CALL dia_ptr( zvn ) ! diagnose the effective MSF120 IF( ln_diaptr ) CALL dia_ptr( zvn ) ! diagnose the effective MSF 121 121 ! 122 122 -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90
r5023 r5137 279 279 END IF 280 280 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) 281 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN281 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 282 282 IF( jn == jp_tem ) htr_adv(:) = ptr_sj( zwy(:,:,:) ) 283 283 IF( jn == jp_sal ) str_adv(:) = ptr_sj( zwy(:,:,:) ) -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90
r5023 r5137 219 219 END IF 220 220 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) 221 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN221 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 222 222 IF( jn == jp_tem ) htr_adv(:) = ptr_sj( zwy(:,:,:) ) 223 223 IF( jn == jp_sal ) str_adv(:) = ptr_sj( zwy(:,:,:) ) -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl2.F90
r5023 r5137 200 200 201 201 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) 202 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN202 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 203 203 IF( jn == jp_tem ) htr_adv(:) = ptr_sj( zwy(:,:,:) ) 204 204 IF( jn == jp_sal ) str_adv(:) = ptr_sj( zwy(:,:,:) ) -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90
r5023 r5137 355 355 IF( l_trd ) CALL trd_tra( kt, cdtype, jn, jptra_yad, zwy, pvn, ptn(:,:,:,jn) ) 356 356 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) 357 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN357 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 358 358 IF( jn == jp_tem ) htr_adv(:) = ptr_sj( zwy(:,:,:) ) 359 359 IF( jn == jp_sal ) str_adv(:) = ptr_sj( zwy(:,:,:) ) -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90
r5023 r5137 184 184 END IF 185 185 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) 186 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN186 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 187 187 IF( jn == jp_tem ) htr_adv(:) = ptr_sj( zwy(:,:,:) ) 188 188 IF( jn == jp_sal ) str_adv(:) = ptr_sj( zwy(:,:,:) ) … … 250 250 END IF 251 251 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) 252 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN252 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 253 253 IF( jn == jp_tem ) htr_adv(:) = ptr_sj( zwy(:,:,:) ) + htr_adv(:) 254 254 IF( jn == jp_sal ) str_adv(:) = ptr_sj( zwy(:,:,:) ) + str_adv(:) … … 398 398 END IF 399 399 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) 400 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN400 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 401 401 IF( jn == jp_tem ) htr_adv(:) = ptr_sj( zwy(:,:,:) ) 402 402 IF( jn == jp_sal ) str_adv(:) = ptr_sj( zwy(:,:,:) ) … … 524 524 END IF 525 525 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) 526 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN526 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 527 527 IF( jn == jp_tem ) htr_adv(:) = ptr_sj( zwy(:,:,:) ) + htr_adv(:) 528 528 IF( jn == jp_sal ) str_adv(:) = ptr_sj( zwy(:,:,:) ) + str_adv(:) -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90
r5023 r5137 177 177 END IF 178 178 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) 179 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN179 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 180 180 IF( jn == jp_tem ) htr_adv(:) = ptr_sj( ztv(:,:,:) ) 181 181 IF( jn == jp_sal ) str_adv(:) = ptr_sj( ztv(:,:,:) ) -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilap.F90
r5023 r5137 166 166 ! 167 167 ! "zonal" mean lateral diffusive heat and salt transport 168 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN168 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 169 169 IF( jn == jp_tem ) htr_ldf(:) = ptr_sj( ztv(:,:,:) ) 170 170 IF( jn == jp_sal ) str_ldf(:) = ptr_sj( ztv(:,:,:) ) -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilapg.F90
r5023 r5137 247 247 ! ! =============== 248 248 ! "Poleward" diffusive heat or salt transport 249 IF( cdtype == 'TRA' .AND. l _diaptr .AND. ( kaht == 2 ) ) THEN249 IF( cdtype == 'TRA' .AND. ln_diaptr .AND. ( kaht == 2 ) ) THEN 250 250 ! note sign is reversed to give down-gradient diffusive transports (#1043) 251 251 IF( jn == jp_tem) htr_ldf(:) = ptr_sj( -zftv(:,:,:) ) -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90
r5023 r5137 222 222 ! 223 223 ! "Poleward" diffusive heat or salt transports (T-S case only) 224 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN224 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 225 225 ! note sign is reversed to give down-gradient diffusive transports (#1043) 226 226 IF( jn == jp_tem) htr_ldf(:) = ptr_sj( -zftv(:,:,:) ) -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90
r5023 r5137 386 386 ! 387 387 ! ! "Poleward" diffusive heat or salt transports (T-S case only) 388 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN388 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 389 389 IF( jn == jp_tem) htr_ldf(:) = ptr_sj( zftv(:,:,:) ) ! 3.3 names 390 390 IF( jn == jp_sal) str_ldf(:) = ptr_sj( zftv(:,:,:) ) -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap.F90
r5023 r5137 148 148 ! 149 149 ! "Poleward" diffusive heat or salt transports 150 IF( cdtype == 'TRA' .AND. l _diaptr ) THEN150 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 151 151 IF( jn == jp_tem) htr_ldf(:) = ptr_sj( ztv(:,:,:) ) 152 152 IF( jn == jp_sal) str_ldf(:) = ptr_sj( ztv(:,:,:) ) -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r5023 r5137 61 61 USE asminc ! assimilation increments 62 62 USE asmbkg ! writing out state trajectory 63 USE diaptr ! poleward transports (dia_ptr_init routine) 63 64 USE diadct ! sections transports (dia_dct_init routine) 64 65 USE diaobs ! Observation diagnostics (dia_obs_init routine) … … 438 439 IF( lk_floats ) CALL flo_init ! drifting Floats 439 440 IF( lk_diaar5 ) CALL dia_ar5_init ! ar5 diag 441 CALL dia_ptr_init ! Poleward TRansports initialization 440 442 IF( lk_diadct ) CALL dia_dct_init ! Sections tranports 441 443 CALL dia_hsb_init ! heat content, salt content and volume budgets -
branches/2015/dev_r5020_CNRS_DIAPTR/NEMOGCM/NEMO/OPA_SRC/step.F90
r5023 r5137 208 208 ! diagnostics and outputs (ua, va, tsa used as workspace) 209 209 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 210 IF( lk_floats ) CALL flo_stp( kstp ) ! drifting Floats 211 IF( lk_diahth ) CALL dia_hth( kstp ) ! Thermocline depth (20 degres isotherm depth) 212 IF( .NOT. lk_cpl ) CALL dia_fwb( kstp ) ! Fresh water budget diagnostics 213 IF( lk_diadct ) CALL dia_dct( kstp ) ! Transports 214 IF( lk_diaar5 ) CALL dia_ar5( kstp ) ! ar5 diag 215 IF( lk_diaharm ) CALL dia_harm( kstp ) ! Tidal harmonic analysis 216 CALL dia_wri( kstp ) ! ocean model: outputs 217 ! 218 IF( ln_crs ) CALL crs_fld( kstp ) ! ocean model: online field coarsening & output 219 210 IF( lk_floats ) CALL flo_stp( kstp ) ! drifting Floats 211 IF( lk_diahth ) CALL dia_hth( kstp ) ! Thermocline depth (20 degres isotherm depth) 212 IF( .NOT. lk_cpl ) CALL dia_fwb( kstp ) ! Fresh water budget diagnostics 213 IF( lk_diadct ) CALL dia_dct( kstp ) ! Transports 214 IF( lk_diaar5 ) CALL dia_ar5( kstp ) ! ar5 diag 215 IF( lk_diaharm ) CALL dia_harm( kstp ) ! Tidal harmonic analysis 216 CALL dia_wri( kstp ) ! ocean model: outputs 217 ! 218 IF( ln_crs ) CALL crs_fld( kstp ) ! ocean model: online field coarsening & output 220 219 221 220 #if defined key_top … … 244 243 CALL tra_ldf ( kstp ) ! lateral mixing 245 244 246 IF( l _diaptr) CALL dia_ptr ! Poleward adv/ldf TRansports diagnostics245 IF( ln_diaptr ) CALL dia_ptr ! Poleward adv/ldf TRansports diagnostics 247 246 248 247 #if defined key_agrif
Note: See TracChangeset
for help on using the changeset viewer.