Changeset 13899 for NEMO/branches/2020/tickets_icb_1900/src/SAS/nemogcm.F90
- Timestamp:
- 2020-11-27T17:26:33+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/tickets_icb_1900
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/tickets_icb_1900
- Property svn:externals
-
NEMO/branches/2020/tickets_icb_1900/src/SAS/nemogcm.F90
r13365 r13899 2 2 !!====================================================================== 3 3 !! *** MODULE nemogcm *** 4 !! StandAlone Surface module : surface fluxes + sea-ice + iceberg floats 4 !! StandAlone Surface module : surface fluxes + sea-ice + iceberg floats + ABL 5 5 !!====================================================================== 6 6 !! History : 3.6 ! 2011-11 (S. Alderson, G. Madec) original code … … 36 36 USE icb_oce ! icebergs 37 37 ! 38 USE prtctl ! Print control 38 39 USE in_out_manager ! I/O manager 39 40 USE lib_mpp ! distributed memory computing 40 41 USE mppini ! shared/distributed memory setting (mpp_init routine) 41 USE lbcnfd , ONLY : isendto, nsndto , nfsloop, nfeloop! Setup of north fold exchanges42 USE lbcnfd , ONLY : isendto, nsndto ! Setup of north fold exchanges 42 43 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 43 44 #if defined key_iomput … … 47 48 USE agrif_ice_update ! ice update 48 49 #endif 50 USE halo_mng 49 51 50 52 IMPLICIT NONE … … 57 59 58 60 #if defined key_mpp_mpi 61 ! need MPI_Wtime 59 62 INCLUDE 'mpif.h' 60 63 #endif … … 82 85 !!---------------------------------------------------------------------- 83 86 INTEGER :: istp ! time step index 87 REAL(wp):: zstptiming ! elapsed time for 1 time step 84 88 !!---------------------------------------------------------------------- 85 89 ! … … 92 96 #if defined key_agrif 93 97 Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs ! agrif_oce module copies of time level indices 94 CALL Agrif_Declare_Var ! " " " " " DYN/TRA 98 CALL Agrif_Declare_Var ! " " " " " DYN/TRA 95 99 # if defined key_top 96 100 CALL Agrif_Declare_Var_top ! " " " " " TOP … … 106 110 ! !== time stepping ==! 107 111 ! !-----------------------! 112 ! 113 ! !== set the model time-step ==! 114 ! 108 115 istp = nit000 109 116 ! … … 123 130 END DO 124 131 ! 125 # else132 # else 126 133 ! 127 134 IF( .NOT.ln_diurnal_only ) THEN !== Standard time-stepping ==! 128 135 ! 129 136 DO WHILE( istp <= nitend .AND. nstop == 0 ) 130 #if defined key_mpp_mpi 137 131 138 ncom_stp = istp 132 IF ( istp == ( nit000 + 1 ) ) elapsed_time = MPI_Wtime() 133 IF ( istp == nitend ) elapsed_time = MPI_Wtime() - elapsed_time 134 #endif 139 IF( ln_timing ) THEN 140 zstptiming = MPI_Wtime() 141 IF ( istp == ( nit000 + 1 ) ) elapsed_time = zstptiming 142 IF ( istp == nitend ) elapsed_time = zstptiming - elapsed_time 143 ENDIF 144 135 145 CALL stp ( istp ) 136 146 istp = istp + 1 147 148 IF( lwp .AND. ln_timing ) WRITE(numtime,*) 'timing step ', istp-1, ' : ', MPI_Wtime() - zstptiming 149 137 150 END DO 138 151 ! … … 198 211 INTEGER :: ios, ilocal_comm ! local integers 199 212 !! 200 NAMELIST/namctl/ sn_cfctl, nn_print, nn_ictls, nn_ictle, & 201 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, & 202 & ln_timing, ln_diacfl 213 NAMELIST/namctl/ sn_cfctl, ln_timing, ln_diacfl, & 214 & nn_isplt, nn_jsplt, nn_ictls, nn_ictle, nn_jctls, nn_jctle 203 215 NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_closea, ln_write_cfg, cn_domcfg_out, ln_use_jattr 204 216 !!---------------------------------------------------------------------- … … 207 219 ELSE ; cxios_context = 'nemo' 208 220 ENDIF 221 nn_hls = 1 209 222 ! 210 223 ! !-------------------------------------------------! … … 304 317 WRITE(numout,*) " ) ) \) |`\ \) '. \ ( ( " 305 318 WRITE(numout,*) " ( ( \_/ '-._\ ) ) " 306 WRITE(numout,*) " ) ) jgs `( ( "319 WRITE(numout,*) " ) ) jgs ` ( ( " 307 320 WRITE(numout,*) " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ " 308 321 WRITE(numout,*) … … 325 338 ! 326 339 IF( ln_read_cfg ) THEN ! Read sizes in domain configuration file 327 CALL domain_cfg ( cn_cfg, nn_cfg, jpiglo, jpjglo, jpkglo, jperio )340 CALL domain_cfg ( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 328 341 ELSE ! user-defined namelist 329 CALL usr_def_nam( cn_cfg, nn_cfg, jpiglo, jpjglo, jpkglo, jperio )342 CALL usr_def_nam( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 330 343 ENDIF 331 344 ! … … 337 350 CALL mpp_init 338 351 352 CALL halo_mng_init() 339 353 ! Now we know the dimensions of the grid and numout has been set: we can allocate arrays 340 354 CALL nemo_alloc() … … 353 367 ! 354 368 ! ! General initialization 355 IF( ln_timing ) CALL timing_init ! timing369 IF( ln_timing ) CALL timing_init ( 'timing_sas.output' ) 356 370 IF( ln_timing ) CALL timing_start( 'nemo_init') 357 371 … … 365 379 & CALL prt_ctl_init ! Print control 366 380 381 IF( ln_rstart ) CALL rst_read_open 367 382 CALL day_init ! model calendar (using both namelist and restart infos) 368 IF( ln_rstart ) CALL rst_read_open 369 383 384 #if defined key_agrif 385 uu(:,:,:,:) = 0.0_wp ; vv(:,:,:,:) = 0.0_wp ; ts(:,:,:,:,:) = 0.0_wp ! needed for interp done at initialization phase 386 #endif 370 387 ! ! external forcing 371 388 CALL sbc_init( Nbb, Nnn, Naa ) ! Forcings : surface module … … 416 433 WRITE(numout,*) ' sn_cfctl%procincr = ', sn_cfctl%procincr 417 434 WRITE(numout,*) ' sn_cfctl%ptimincr = ', sn_cfctl%ptimincr 418 WRITE(numout,*) ' level of print nn_print = ', nn_print419 WRITE(numout,*) ' Start i indice for SUM control nn_ictls = ', nn_ictls420 WRITE(numout,*) ' End i indice for SUM control nn_ictle = ', nn_ictle421 WRITE(numout,*) ' Start j indice for SUM control nn_jctls = ', nn_jctls422 WRITE(numout,*) ' End j indice for SUM control nn_jctle = ', nn_jctle423 WRITE(numout,*) ' number of proc. following i nn_isplt = ', nn_isplt424 WRITE(numout,*) ' number of proc. following j nn_jsplt = ', nn_jsplt425 435 WRITE(numout,*) ' timing by routine ln_timing = ', ln_timing 426 436 WRITE(numout,*) ' CFL diagnostics ln_diacfl = ', ln_diacfl 427 437 ENDIF 428 438 ! 429 nprint = nn_print ! convert DOCTOR namelist names into OLD names 430 nictls = nn_ictls 431 nictle = nn_ictle 432 njctls = nn_jctls 433 njctle = nn_jctle 434 isplt = nn_isplt 435 jsplt = nn_jsplt 436 439 IF( .NOT.ln_read_cfg ) ln_closea = .FALSE. ! dealing possible only with a domcfg file 437 440 IF(lwp) THEN ! control print 438 441 WRITE(numout,*) … … 445 448 WRITE(numout,*) ' use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr 446 449 ENDIF 447 IF( .NOT.ln_read_cfg ) ln_closea = .false. ! dealing possible only with a domcfg file448 !449 ! ! Parameter control450 !451 IF( sn_cfctl%l_prtctl .OR. sn_cfctl%l_prttrc ) THEN ! sub-domain area indices for the control prints452 IF( lk_mpp .AND. jpnij > 1 ) THEN453 isplt = jpni ; jsplt = jpnj ; ijsplt = jpni*jpnj ! the domain is forced to the real split domain454 ELSE455 IF( isplt == 1 .AND. jsplt == 1 ) THEN456 CALL ctl_warn( ' - isplt & jsplt are equal to 1', &457 & ' - the print control will be done over the whole domain' )458 ENDIF459 ijsplt = isplt * jsplt ! total number of processors ijsplt460 ENDIF461 IF(lwp) WRITE(numout,*)' - The total number of processors over which the'462 IF(lwp) WRITE(numout,*)' print control will be done is ijsplt : ', ijsplt463 !464 ! ! indices used for the SUM control465 IF( nictls+nictle+njctls+njctle == 0 ) THEN ! print control done over the default area466 lsp_area = .FALSE.467 ELSE ! print control done over a specific area468 lsp_area = .TRUE.469 IF( nictls < 1 .OR. nictls > jpiglo ) THEN470 CALL ctl_warn( ' - nictls must be 1<=nictls>=jpiglo, it is forced to 1' )471 nictls = 1472 ENDIF473 IF( nictle < 1 .OR. nictle > jpiglo ) THEN474 CALL ctl_warn( ' - nictle must be 1<=nictle>=jpiglo, it is forced to jpiglo' )475 nictle = jpiglo476 ENDIF477 IF( njctls < 1 .OR. njctls > jpjglo ) THEN478 CALL ctl_warn( ' - njctls must be 1<=njctls>=jpjglo, it is forced to 1' )479 njctls = 1480 ENDIF481 IF( njctle < 1 .OR. njctle > jpjglo ) THEN482 CALL ctl_warn( ' - njctle must be 1<=njctle>=jpjglo, it is forced to jpjglo' )483 njctle = jpjglo484 ENDIF485 ENDIF486 ENDIF487 450 ! 488 451 IF( 1._wp /= SIGN(1._wp,-0._wp) ) CALL ctl_stop( 'nemo_ctl: The intrinsec SIGN function follows f2003 standard.', & … … 538 501 ierr = dia_wri_alloc() 539 502 ierr = ierr + dom_oce_alloc() ! ocean domain 540 ierr = ierr + oce_alloc () ! (ts n...) needed for agrif and/or SI3 and bdy503 ierr = ierr + oce_alloc () ! (ts...) needed for agrif and/or SI3 and bdy 541 504 ierr = ierr + bdy_oce_alloc() ! bdy masks (incl. initialization) 542 505 !
Note: See TracChangeset
for help on using the changeset viewer.