- Timestamp:
- 2020-11-10T12:57:08+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_12905_xios_ancil
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_12905_xios_ancil
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 8 9 9 # SETTE 10 ^/utils/CI/sette@ HEADsette10 ^/utils/CI/sette@13559 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_12905_xios_ancil/src/OFF/nemogcm.F90
r13040 r13766 28 28 USE usrdef_nam ! user defined configuration 29 29 USE eosbn2 ! equation of state (eos bn2 routine) 30 USE bdy_oce, ONLY : ln_bdy 31 USE bdyini ! open boundary cond. setting (bdy_init routine) 30 #if defined key_qco 31 USE domqco ! tools for scale factor (dom_qco_r3c routine) 32 #endif 33 USE bdyini ! open boundary cond. setting (bdy_init routine) 32 34 ! ! ocean physics 33 35 USE ldftra ! lateral diffusivity setting (ldf_tra_init routine) … … 38 40 USE sbcmod ! surface boundary condition (sbc_init routine) 39 41 USE phycst ! physical constant (par_cst routine) 42 USE zdfphy ! vertical physics manager (zdf_phy_init routine) 40 43 USE dtadyn ! Lecture and Interpolation of the dynamical fields 41 44 USE trcini ! Initilization of the passive tracers … … 47 50 USE trcnam ! passive tracer : namelist 48 51 USE trcrst ! passive tracer restart 49 USE diaptr ! Need to initialise this as some variables are used in if statements later50 52 USE sbc_oce , ONLY : ln_rnf 51 53 USE sbcrnf ! surface boundary condition : runoffs … … 61 63 USE timing ! Timing 62 64 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 63 USE lbcnfd , ONLY : isendto, nsndto , nfsloop, nfeloop! Setup of north fold exchanges65 USE lbcnfd , ONLY : isendto, nsndto ! Setup of north fold exchanges 64 66 USE step, ONLY : Nbb, Nnn, Naa, Nrhs ! time level indices 67 USE halo_mng 65 68 66 69 IMPLICIT NONE … … 70 73 71 74 CHARACTER (len=64) :: cform_aaa="( /, 'AAAAAAAA', / ) " ! flag for output listing 75 #if defined key_mpp_mpi 76 ! need MPI_Wtime 77 INCLUDE 'mpif.h' 78 #endif 72 79 73 80 !!---------------------------------------------------------------------- … … 92 99 !! Madec, 2008, internal report, IPSL. 93 100 !!---------------------------------------------------------------------- 94 INTEGER :: istp, indic ! time step index 101 INTEGER :: istp ! time step index 102 REAL(wp):: zstptiming ! elapsed time for 1 time step 95 103 !!---------------------------------------------------------------------- 96 104 … … 111 119 ! 112 120 DO WHILE ( istp <= nitend .AND. nstop == 0 ) !== OFF time-stepping ==! 121 122 IF( ln_timing ) THEN 123 zstptiming = MPI_Wtime() 124 IF ( istp == ( nit000 + 1 ) ) elapsed_time = zstptiming 125 IF ( istp == nitend ) elapsed_time = zstptiming - elapsed_time 126 ENDIF 113 127 ! 114 128 IF( istp /= nit000 ) CALL day ( istp ) ! Calendar (day was already called at nit000 in day_init) … … 119 133 CALL dta_dyn ( istp, Nbb, Nnn, Naa ) ! Interpolation of the dynamical fields 120 134 #endif 135 #if ! defined key_sed_off 136 IF( .NOT.ln_linssh ) THEN 137 CALL dta_dyn_atf( istp, Nbb, Nnn, Naa ) ! time filter of sea surface height and vertical scale factors 138 # if defined key_qco 139 CALL dom_qco_r3c( ssh(:,:,Kmm), r3t_f, r3u_f, r3v_f ) 140 # endif 141 ENDIF 121 142 CALL trc_stp ( istp, Nbb, Nnn, Nrhs, Naa ) ! time-stepping 122 #if ! defined key_sed_off 123 IF( .NOT.ln_linssh ) CALL dta_dyn_atf( istp, Nbb, Nnn, Naa ) ! time filter of sea surface height and vertical scale factors 143 # if defined key_qco 144 !r3t(:,:,Kmm) = r3t_f(:,:) ! update ssh to h0 ratio 145 !r3u(:,:,Kmm) = r3u_f(:,:) 146 !r3v(:,:,Kmm) = r3v_f(:,:) 147 # endif 124 148 #endif 125 149 ! Swap time levels … … 129 153 Naa = Nrhs 130 154 ! 155 #if ! defined key_qco 131 156 #if ! defined key_sed_off 132 157 IF( .NOT.ln_linssh ) CALL dta_dyn_sf_interp( istp, Nnn ) ! calculate now grid parameters 133 158 #endif 134 CALL stp_ctl ( istp, indic ) ! Time loop: control and print 159 #endif 160 CALL stp_ctl ( istp ) ! Time loop: control and print 135 161 istp = istp + 1 162 163 IF( lwp .AND. ln_timing ) WRITE(numtime,*) 'timing step ', istp-1, ' : ', MPI_Wtime() - zstptiming 164 136 165 END DO 137 166 ! … … 147 176 IF( nstop /= 0 .AND. lwp ) THEN ! error print 148 177 WRITE(ctmp1,*) ' ==>>> nemo_gcm: a total of ', nstop, ' errors have been found' 149 CALL ctl_stop( ctmp1 ) 178 WRITE(ctmp2,*) ' Look for "E R R O R" messages in all existing ocean_output* files' 179 CALL ctl_stop( ' ', ctmp1, ' ', ctmp2 ) 150 180 ENDIF 151 181 ! … … 177 207 INTEGER :: ios, ilocal_comm ! local integers 178 208 !! 179 NAMELIST/namctl/ sn_cfctl, nn_print, nn_ictls, nn_ictle, & 180 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, & 181 & ln_timing, ln_diacfl 209 NAMELIST/namctl/ sn_cfctl, ln_timing, ln_diacfl, & 210 & nn_isplt, nn_jsplt, nn_ictls, nn_ictle, nn_jctls, nn_jctle 182 211 NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_closea, ln_write_cfg, cn_domcfg_out, ln_use_jattr, ln_xios_cfg 183 212 !!---------------------------------------------------------------------- 184 213 ! 185 214 cxios_context = 'nemo' 215 nn_hls = 1 186 216 ! 187 217 ! !-------------------------------------------------! … … 229 259 ! 230 260 ! finalize the definition of namctl variables 231 IF( sn_cfctl%l_allon ) THEN 232 ! Turn on all options. 233 CALL nemo_set_cfctl( sn_cfctl, .TRUE., .TRUE. ) 234 ! Ensure all processors are active 235 sn_cfctl%procmin = 0 ; sn_cfctl%procmax = 1000000 ; sn_cfctl%procincr = 1 236 ELSEIF( sn_cfctl%l_config ) THEN 237 ! Activate finer control of report outputs 238 ! optionally switch off output from selected areas (note this only 239 ! applies to output which does not involve global communications) 240 IF( ( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax ) .OR. & 241 & ( MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) ) & 242 & CALL nemo_set_cfctl( sn_cfctl, .FALSE., .FALSE. ) 243 ELSE 244 ! turn off all options. 245 CALL nemo_set_cfctl( sn_cfctl, .FALSE., .TRUE. ) 246 ENDIF 261 IF( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax .OR. MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) & 262 & CALL nemo_set_cfctl( sn_cfctl, .FALSE. ) 247 263 ! 248 264 lwp = (narea == 1) .OR. sn_cfctl%l_oceout ! control of all listing output print … … 290 306 ! 291 307 IF( ln_read_cfg ) THEN ! Read sizes in domain configuration file 292 CALL domain_cfg ( cn_cfg, nn_cfg, jpiglo, jpjglo, jpkglo, jperio )308 CALL domain_cfg ( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 293 309 ELSE ! user-defined namelist 294 CALL usr_def_nam( cn_cfg, nn_cfg, jpiglo, jpjglo, jpkglo, jperio )310 CALL usr_def_nam( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 295 311 ENDIF 296 312 ! … … 304 320 CALL mpp_init 305 321 322 CALL halo_mng_init() 306 323 ! Now we know the dimensions of the grid and numout has been set: we can allocate arrays 307 324 CALL nemo_alloc() … … 330 347 331 348 CALL sbc_init( Nbb, Nnn, Naa ) ! Forcings : surface module 332 CALL bdy_init ! Open boundaries initialisation 349 CALL bdy_init ! Open boundaries initialisation 350 351 CALL zdf_phy_init( Nnn ) ! Vertical physics 333 352 334 353 ! ! Tracer physics 335 354 CALL ldf_tra_init ! Lateral ocean tracer physics 336 CALL ldf_eiv_init ! Eddy induced velocity param 355 CALL ldf_eiv_init ! Eddy induced velocity param. must be done after ldf_tra_init 337 356 CALL tra_ldf_init ! lateral mixing 338 357 IF( l_ldfslp ) CALL ldf_slp_init ! slope of lateral mixing … … 348 367 CALL dta_dyn_init( Nbb, Nnn, Naa ) ! Initialization for the dynamics 349 368 #endif 350 351 369 CALL trc_init( Nbb, Nnn, Naa ) ! Passive tracers initialization 352 CALL dia_ptr_init ! Poleward TRansports initialization353 370 354 371 IF(lwp) WRITE(numout,cform_aaa) ! Flag AAAAAAA … … 373 390 WRITE(numout,*) '~~~~~~~~' 374 391 WRITE(numout,*) ' Namelist namctl' 375 WRITE(numout,*) ' sn_cfctl%l_glochk = ', sn_cfctl%l_glochk376 WRITE(numout,*) ' sn_cfctl%l_allon = ', sn_cfctl%l_allon377 WRITE(numout,*) ' finer control over o/p sn_cfctl%l_config = ', sn_cfctl%l_config378 392 WRITE(numout,*) ' sn_cfctl%l_runstat = ', sn_cfctl%l_runstat 379 393 WRITE(numout,*) ' sn_cfctl%l_trcstat = ', sn_cfctl%l_trcstat … … 387 401 WRITE(numout,*) ' sn_cfctl%procincr = ', sn_cfctl%procincr 388 402 WRITE(numout,*) ' sn_cfctl%ptimincr = ', sn_cfctl%ptimincr 389 WRITE(numout,*) ' level of print nn_print = ', nn_print390 WRITE(numout,*) ' Start i indice for SUM control nn_ictls = ', nn_ictls391 WRITE(numout,*) ' End i indice for SUM control nn_ictle = ', nn_ictle392 WRITE(numout,*) ' Start j indice for SUM control nn_jctls = ', nn_jctls393 WRITE(numout,*) ' End j indice for SUM control nn_jctle = ', nn_jctle394 WRITE(numout,*) ' number of proc. following i nn_isplt = ', nn_isplt395 WRITE(numout,*) ' number of proc. following j nn_jsplt = ', nn_jsplt396 403 WRITE(numout,*) ' timing by routine ln_timing = ', ln_timing 397 404 WRITE(numout,*) ' CFL diagnostics ln_diacfl = ', ln_diacfl 398 405 ENDIF 399 ! 400 nprint = nn_print ! convert DOCTOR namelist names into OLD names 401 nictls = nn_ictls 402 nictle = nn_ictle 403 njctls = nn_jctls 404 njctle = nn_jctle 405 isplt = nn_isplt 406 jsplt = nn_jsplt 407 406 407 IF( .NOT.ln_read_cfg ) ln_closea = .false. ! dealing possible only with a domcfg file 408 408 IF(lwp) THEN ! control print 409 409 WRITE(numout,*) … … 416 416 WRITE(numout,*) ' use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr 417 417 ENDIF 418 IF( .NOT.ln_read_cfg ) ln_closea = .false. ! dealing possible only with a domcfg file419 !420 ! ! Parameter control421 !422 IF( sn_cfctl%l_prtctl .OR. sn_cfctl%l_prttrc ) THEN ! sub-domain area indices for the control prints423 IF( lk_mpp .AND. jpnij > 1 ) THEN424 isplt = jpni ; jsplt = jpnj ; ijsplt = jpni*jpnj ! the domain is forced to the real split domain425 ELSE426 IF( isplt == 1 .AND. jsplt == 1 ) THEN427 CALL ctl_warn( ' - isplt & jsplt are equal to 1', &428 & ' - the print control will be done over the whole domain' )429 ENDIF430 ijsplt = isplt * jsplt ! total number of processors ijsplt431 ENDIF432 IF(lwp) WRITE(numout,*)' - The total number of processors over which the'433 IF(lwp) WRITE(numout,*)' print control will be done is ijsplt : ', ijsplt434 !435 ! ! indices used for the SUM control436 IF( nictls+nictle+njctls+njctle == 0 ) THEN ! print control done over the default area437 lsp_area = .FALSE.438 ELSE ! print control done over a specific area439 lsp_area = .TRUE.440 IF( nictls < 1 .OR. nictls > jpiglo ) THEN441 CALL ctl_warn( ' - nictls must be 1<=nictls>=jpiglo, it is forced to 1' )442 nictls = 1443 ENDIF444 IF( nictle < 1 .OR. nictle > jpiglo ) THEN445 CALL ctl_warn( ' - nictle must be 1<=nictle>=jpiglo, it is forced to jpiglo' )446 nictle = jpiglo447 ENDIF448 IF( njctls < 1 .OR. njctls > jpjglo ) THEN449 CALL ctl_warn( ' - njctls must be 1<=njctls>=jpjglo, it is forced to 1' )450 njctls = 1451 ENDIF452 IF( njctle < 1 .OR. njctle > jpjglo ) THEN453 CALL ctl_warn( ' - njctle must be 1<=njctle>=jpjglo, it is forced to jpjglo' )454 njctle = jpjglo455 ENDIF456 ENDIF457 ENDIF458 418 ! 459 419 IF( 1._wp /= SIGN(1._wp,-0._wp) ) CALL ctl_stop( 'nemo_ctl: The intrinsec SIGN function follows f2003 standard.', & … … 511 471 END SUBROUTINE nemo_alloc 512 472 513 SUBROUTINE nemo_set_cfctl(sn_cfctl, setto , for_all)473 SUBROUTINE nemo_set_cfctl(sn_cfctl, setto ) 514 474 !!---------------------------------------------------------------------- 515 475 !! *** ROUTINE nemo_set_cfctl *** 516 476 !! 517 477 !! ** Purpose : Set elements of the output control structure to setto. 518 !! for_all should be .false. unless all areas are to be 519 !! treated identically. 520 !! 478 !! 521 479 !! ** Method : Note this routine can be used to switch on/off some 522 !! types of output for selected areas but any output types 523 !! that involve global communications (e.g. mpp_max, glob_sum) 524 !! should be protected from selective switching by the 525 !! for_all argument 526 !!---------------------------------------------------------------------- 527 LOGICAL :: setto, for_all 528 TYPE(sn_ctl) :: sn_cfctl 529 !!---------------------------------------------------------------------- 530 IF( for_all ) THEN 531 sn_cfctl%l_runstat = setto 532 sn_cfctl%l_trcstat = setto 533 ENDIF 480 !! types of output for selected areas. 481 !!---------------------------------------------------------------------- 482 TYPE(sn_ctl), INTENT(inout) :: sn_cfctl 483 LOGICAL , INTENT(in ) :: setto 484 !!---------------------------------------------------------------------- 485 sn_cfctl%l_runstat = setto 486 sn_cfctl%l_trcstat = setto 534 487 sn_cfctl%l_oceout = setto 535 488 sn_cfctl%l_layout = setto … … 561 514 562 515 563 SUBROUTINE stp_ctl( kt , kindic)516 SUBROUTINE stp_ctl( kt ) 564 517 !!---------------------------------------------------------------------- 565 518 !! *** ROUTINE stp_ctl *** … … 572 525 !!---------------------------------------------------------------------- 573 526 INTEGER, INTENT(in ) :: kt ! ocean time-step index 574 INTEGER, INTENT(inout) :: kindic ! indicator of solver convergence575 527 !!---------------------------------------------------------------------- 576 528 !
Note: See TracChangeset
for help on using the changeset viewer.