Changeset 10570
- Timestamp:
- 2019-01-24T16:14:49+01:00 (6 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/cfgs/SHARED/namelist_ref
r10499 r10570 501 501 ! ! diagnostics: 502 502 ln_bergdia = .true. ! Calculate budgets 503 nn_verbose_level = 1! Turn on more verbose output if level > 0503 nn_verbose_level = 0 ! Turn on more verbose output if level > 0 504 504 nn_verbose_write = 15 ! Timesteps between verbose messages 505 505 nn_sample_rate = 1 ! Timesteps between sampling for trajectory storage … … 1304 1304 &namctl ! Control prints (default: OFF) 1305 1305 !----------------------------------------------------------------------- 1306 ln_ctl = .false. ! trends control print (expensive!) 1306 ln_ctl = .FALSE. ! Toggle all report printing on/off (T/F); Ignored if sn_cfctl%l_config is T 1307 sn_cfctl%l_config = .TRUE. ! IF .true. then control which reports are written with the following 1308 sn_cfctl%l_runstat = .FALSE. ! switches and which areas produce reports with the proc integer settings. 1309 sn_cfctl%l_trcstat = .FALSE. ! The default settings for the proc integers should ensure 1310 sn_cfctl%l_oceout = .FALSE. ! that all areas report. 1311 sn_cfctl%l_layout = .FALSE. ! 1312 sn_cfctl%l_mppout = .FALSE. ! 1313 sn_cfctl%l_mpptop = .FALSE. ! 1314 sn_cfctl%procmin = 0 ! Minimum area number for reporting [default:0] 1315 sn_cfctl%procmax = 1000000 ! Maximum area number for reporting [default:1000000] 1316 sn_cfctl%procincr = 1 ! Increment for optional subsetting of areas [default:1] 1317 sn_cfctl%ptimincr = 1 ! Timestep increment for writing time step progress info 1307 1318 nn_print = 0 ! level of print (0 no extra print) 1308 1319 nn_ictls = 0 ! start i indice of control sum (use to compare mono versus -
NEMO/trunk/src/OCE/ICB/icbdia.F90
r10425 r10570 327 327 & 'returned',calving_ret_net) 328 328 ENDIF 329 WRITE( numicb, '("calved by class = ",i6,20(",",i6))') (nbergs_calved_by_class(ik),ik=1,nclasses) 330 IF( nspeeding_tickets > 0 ) WRITE( numicb, '("speeding tickets issued = ",i6)') nspeeding_tickets 329 IF (nn_verbose_level > 0) THEN 330 WRITE( numicb, '("calved by class = ",i6,20(",",i6))') (nbergs_calved_by_class(ik),ik=1,nclasses) 331 IF( nspeeding_tickets > 0 ) WRITE( numicb, '("speeding tickets issued = ",i6)') nspeeding_tickets 332 ENDIF 331 333 ! 332 334 nbergs_start = nbergs_end … … 437 439 stored_start = SUM( berg_grid%stored_ice(:,:,:) ) 438 440 CALL mpp_sum( 'icbdia', stored_start ) 439 WRITE(numicb,'(a,es13.6,a)') 'icb_dia_income: initial stored mass=',stored_start,' kg'440 441 ! 441 442 stored_heat_start = SUM( berg_grid%stored_heat(:,:) ) 442 443 CALL mpp_sum( 'icbdia', stored_heat_start ) 443 WRITE(numicb,'(a,es13.6,a)') 'icb_dia_income: initial stored heat=',stored_heat_start,' J' 444 IF (nn_verbose_level > 0) THEN 445 WRITE(numicb,'(a,es13.6,a)') 'icb_dia_income: initial stored mass=',stored_start,' kg' 446 WRITE(numicb,'(a,es13.6,a)') 'icb_dia_income: initial stored heat=',stored_heat_start,' J' 447 ENDIF 444 448 ENDIF 445 449 ! … … 515 519 !!---------------------------------------------------------------------- 516 520 ! 521 IF (nn_verbose_level == 0) RETURN 517 522 IF( PRESENT(kbergs) ) THEN 518 523 WRITE(numicb,100) cd_budgetstr // ' state:', & … … 539 544 !!---------------------------------------------------------------------- 540 545 ! 546 IF (nn_verbose_level == 0) RETURN 541 547 WRITE(numicb,200) cd_budgetstr // ' check:', & 542 548 & cd_startstr, pstartval, cd_budgetunits, & … … 558 564 !!---------------------------------------------------------------------- 559 565 ! 566 IF (nn_verbose_level == 0) RETURN 560 567 zval = ( ( pendval - pstartval ) - ( pinval - poutval ) ) / & 561 568 & MAX( 1.e-30, MAX( ABS( pendval - pstartval ) , ABS( pinval - poutval ) ) ) … … 578 585 !!---------------------------------------------------------------------- 579 586 ! 587 IF (nn_verbose_level == 0) RETURN 580 588 WRITE(numicb,100) cd_budgetstr // ' state:', & 581 589 & cd_startstr // ' start', pstartval, & … … 595 603 !!---------------------------------------------------------------------- 596 604 ! 605 IF (nn_verbose_level == 0) RETURN 597 606 WRITE(numicb,200) cd_budgetstr // ' budget:', & 598 607 & cd_instr // ' in', pinval, & -
NEMO/trunk/src/OCE/ICB/icbdyn.F90
r10068 r10570 371 371 ENDIF 372 372 ! ! check the speed and acceleration limits 373 IF( ABS( zuveln ) > pp_vel_lim .OR. ABS( zvveln ) > pp_vel_lim ) & 374 WRITE(numicb,'("pe=",i3,x,a)') narea,'Dump triggered by excessive velocity' 375 IF( ABS( pax ) > pp_accel_lim .OR. ABS( pay ) > pp_accel_lim ) & 376 WRITE(numicb,'("pe=",i3,x,a)') narea,'Dump triggered by excessive acceleration' 373 IF (nn_verbose_level > 0) THEN 374 IF( ABS( zuveln ) > pp_vel_lim .OR. ABS( zvveln ) > pp_vel_lim ) & 375 WRITE(numicb,'("pe=",i3,x,a)') narea,'Dump triggered by excessive velocity' 376 IF( ABS( pax ) > pp_accel_lim .OR. ABS( pay ) > pp_accel_lim ) & 377 WRITE(numicb,'("pe=",i3,x,a)') narea,'Dump triggered by excessive acceleration' 378 ENDIF 377 379 ! 378 380 END SUBROUTINE icb_accel -
NEMO/trunk/src/OCE/ICB/icbini.F90
r10425 r10570 78 78 ! ! note that we choose to do this on all processors since we cannot 79 79 ! ! predict where icebergs will be ahead of time 80 CALL ctl_opn( numicb, 'icebergs.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 80 IF( nn_verbose_level > 0) THEN 81 CALL ctl_opn( numicb, 'icebergs.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 82 ENDIF 81 83 82 84 ! set parameters (mostly from namelist) … … 241 243 CALL iom_close( inum ) ! close file 242 244 ! 243 WRITE(numicb,*) 244 WRITE(numicb,*) ' calving read in a file' 245 IF( nn_verbose_level > 0) THEN 246 WRITE(numicb,*) 247 WRITE(numicb,*) ' calving read in a file' 248 ENDIF 245 249 ALLOCATE( sf_icb(1), STAT=istat1 ) ! Create sf_icb structure (calving) 246 250 ALLOCATE( sf_icb(1)%fnow(jpi,jpj,1), STAT=istat2 ) … … 336 340 ibergs = icb_utl_count() 337 341 CALL mpp_sum('icbini', ibergs) 338 WRITE(numicb,'(a,i6,a)') 'diamonds, icb_ini_gen: ',ibergs,' were generated' 342 IF( nn_verbose_level > 0) THEN 343 WRITE(numicb,'(a,i6,a)') 'diamonds, icb_ini_gen: ',ibergs,' were generated' 344 ENDIF 339 345 ! 340 346 END SUBROUTINE icb_ini_gen -
NEMO/trunk/src/OCE/ICB/icblbc.F90
r10425 r10570 640 640 zsbergs(0) = narea 641 641 zsbergs(1) = nicbfldnsend(jn) 642 !IF ( nicbfldnsend(jn) .GT. 0 ) write(numicb,*) 'ICB sending ',nicbfldnsend(jn),' to ', ifldproc642 !IF ( nicbfldnsend(jn) .GT. 0 .AND. nn_verbose_level > 0 ) write(numicb,*) 'ICB sending ',nicbfldnsend(jn),' to ', ifldproc 643 643 CALL mppsend( 21, zsbergs(0:1), 2, ifldproc-1, nicbfldreq(jn)) 644 644 ENDIF … … 656 656 IF( nicbfldproc(jjn) .eq. INT(znbergs(1)) ) EXIT 657 657 END DO 658 IF( jjn .GT. jpni ) write(numicb,*) 'ICB ERROR'658 IF( jjn .GT. jpni .AND. nn_verbose_level > 0 ) write(numicb,*) 'ICB ERROR' 659 659 nicbfldexpect(jjn) = INT( znbergs(2) ) 660 !IF ( nicbfldexpect(jjn) .GT. 0 ) write(numicb,*) 'ICB expecting ',nicbfldexpect(jjn),' from ', nicbfldproc(jjn)661 ! CALL FLUSH(numicb)660 !IF ( nicbfldexpect(jjn) .GT. 0 .AND. nn_verbose_level > 0 ) write(numicb,*) 'ICB expecting ',nicbfldexpect(jjn),' from ', nicbfldproc(jjn) 661 !IF (nn_verbose_level > 0) CALL FLUSH(numicb) 662 662 ENDIF 663 663 ! … … 911 911 ENDIF 912 912 old => new 913 !WRITE( numicb,*) 'icb_increase_ibuffer',narea,' increased to',inew_size913 !IF (nn_verbose_level > 0) WRITE( numicb,*) 'icb_increase_ibuffer',narea,' increased to',inew_size 914 914 ENDIF 915 915 ! -
NEMO/trunk/src/OCE/ICB/icbstp.F90
r10068 r10570 163 163 IF(lwp) WRITE(numout,'(a,i6)') 'icebergs: icb_end complete', narea 164 164 ! 165 CALL flush( numicb ) 166 CLOSE( numicb ) 165 IF( nn_verbose_level > 0 ) THEN 166 CALL flush( numicb ) 167 CLOSE( numicb ) 168 ENDIF 167 169 ! 168 170 END SUBROUTINE icb_end -
NEMO/trunk/src/OCE/ICB/icbutl.F90
r10425 r10570 625 625 !!---------------------------------------------------------------------- 626 626 ! 627 IF (nn_verbose_level == 0) RETURN 627 628 pt => berg%current_point 628 629 WRITE(numicb, 9200) kt, berg%number(1), & … … 649 650 !!---------------------------------------------------------------------- 650 651 ! 652 IF (nn_verbose_level == 0) RETURN 651 653 this => first_berg 652 654 IF( ASSOCIATED(this) ) THEN -
NEMO/trunk/src/OCE/IOM/in_out_manager.F90
r10425 r10570 100 100 !!---------------------------------------------------------------------- 101 101 LOGICAL :: ln_ctl !: run control for debugging 102 TYPE :: sn_ctl !: optional use structure for finer control over output selection 103 LOGICAL :: l_config = .FALSE. !: activate/deactivate finer control 104 ! Note if l_config is True then ln_ctl is ignored. 105 ! Otherwise setting ln_ctl True is equivalent to setting 106 ! all the following logicals in this structure True 107 LOGICAL :: l_runstat = .FALSE. !: Produce/do not produce run.stat file (T/F) 108 LOGICAL :: l_trcstat = .FALSE. !: Produce/do not produce tracer.stat file (T/F) 109 LOGICAL :: l_oceout = .FALSE. !: Produce all ocean.outputs (T) or just one (F) 110 LOGICAL :: l_layout = .FALSE. !: Produce all layout.dat files (T) or just one (F) 111 LOGICAL :: l_mppout = .FALSE. !: Produce/do not produce mpp.output_XXXX files (T/F) 112 LOGICAL :: l_mpptop = .FALSE. !: Produce/do not produce mpp.top.output_XXXX files (T/F) 113 ! Optional subsetting of processor report files 114 ! Default settings of 0/1000000/1 should ensure all areas report. 115 ! Set to a more restrictive range to select specific areas 116 INTEGER :: procmin = 0 !: Minimum narea to output 117 INTEGER :: procmax = 1000000 !: Maximum narea to output 118 INTEGER :: procincr = 1 !: narea increment to output 119 INTEGER :: ptimincr = 1 !: timestep increment to output (time.step and run.stat) 120 END TYPE 121 TYPE (sn_ctl) :: sn_cfctl !: run control structure for selective output 102 122 LOGICAL :: ln_timing !: run control for timing 103 123 LOGICAL :: ln_diacfl !: flag whether to create CFL diagnostics -
NEMO/trunk/src/OCE/LBC/mppini.F90
r10560 r10570 151 151 INTEGER :: inbi, inbj, iimax, ijmax, icnt1, icnt2 152 152 LOGICAL :: llbest 153 LOGICAL :: llwrtlay 153 154 INTEGER, ALLOCATABLE, DIMENSION(:) :: iin, ii_nono, ii_noea ! 1D workspace 154 155 INTEGER, ALLOCATABLE, DIMENSION(:) :: ijn, ii_noso, ii_nowe ! - - … … 167 168 !!---------------------------------------------------------------------- 168 169 170 llwrtlay = lwp .OR. ln_ctl .OR. sn_cfctl%l_layout 169 171 ! do we need to take into account bdy_msk? 170 172 REWIND( numnam_ref ) ! Namelist nambdy in reference namelist : BDY … … 554 556 555 557 ! Save processor layout in ascii file 556 IF (l wp) THEN558 IF (llwrtlay) THEN 557 559 CALL ctl_opn( inum, 'layout.dat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE., narea ) 558 560 WRITE(inum,'(a)') ' jpnij jpimax jpjmax jpk jpiglo jpjglo'//& … … 615 617 WRITE(numout,*) ' ==>>> North fold boundary prepared for jpni >1' 616 618 ! additional prints in layout.dat 619 ENDIF 620 IF (llwrtlay) THEN 617 621 WRITE(inum,*) 618 622 WRITE(inum,*) … … 629 633 IF( ln_nnogather ) THEN 630 634 CALL mpp_init_nfdcom ! northfold neighbour lists 631 IF (l wp) THEN635 IF (llwrtlay) THEN 632 636 WRITE(inum,*) 633 637 WRITE(inum,*) … … 640 644 ENDIF 641 645 ! 642 IF (l wp) CLOSE(inum)646 IF (llwrtlay) CLOSE(inum) 643 647 ! 644 648 DEALLOCATE(iin, ijn, ii_nono, ii_noea, ii_noso, ii_nowe, & -
NEMO/trunk/src/OCE/SBC/sbcfwb.F90
r10425 r10570 144 144 ENDIF 145 145 ! 146 IF( kt == nitend .AND. lw p ) THEN ! save fwfold value in a file146 IF( kt == nitend .AND. lwm ) THEN ! save fwfold value in a file (only one required) 147 147 CALL ctl_opn( inum, 'EMPave.dat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE., narea ) 148 148 WRITE( inum, "(24X,I8,2ES24.16)" ) nyear, a_fwb_b, a_fwb -
NEMO/trunk/src/OCE/nemogcm.F90
r10510 r10570 257 257 CHARACTER(len=120), DIMENSION(60) :: cltxt, cltxt2, clnam 258 258 !! 259 NAMELIST/namctl/ ln_ctl , nn_print, nn_ictls, nn_ictle, &260 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, &259 NAMELIST/namctl/ ln_ctl , sn_cfctl, nn_print, nn_ictls, nn_ictle, & 260 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, & 261 261 & ln_timing, ln_diacfl 262 262 NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_closea, ln_write_cfg, cn_domcfg_out, ln_use_jattr … … 327 327 328 328 narea = narea + 1 ! mynode return the rank of proc (0 --> jpnij -1 ) 329 330 IF( sn_cfctl%l_config ) THEN 331 ! Activate finer control of report outputs 332 ! optionally switch off output from selected areas (note this only 333 ! applies to output which does not involve global communications) 334 IF( ( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax ) .OR. & 335 & ( MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) ) & 336 & CALL nemo_set_cfctl( sn_cfctl, .FALSE., .FALSE. ) 337 ELSE 338 ! Use ln_ctl to turn on or off all options. 339 CALL nemo_set_cfctl( sn_cfctl, ln_ctl, .TRUE. ) 340 ENDIF 329 341 330 342 lwm = (narea == 1) ! control of output namelists … … 504 516 WRITE(numout,*) ' Namelist namctl' 505 517 WRITE(numout,*) ' run control (for debugging) ln_ctl = ', ln_ctl 518 WRITE(numout,*) ' finer control over o/p sn_cfctl%l_config = ', sn_cfctl%l_config 519 WRITE(numout,*) ' sn_cfctl%l_runstat = ', sn_cfctl%l_runstat 520 WRITE(numout,*) ' sn_cfctl%l_trcstat = ', sn_cfctl%l_trcstat 521 WRITE(numout,*) ' sn_cfctl%l_oceout = ', sn_cfctl%l_oceout 522 WRITE(numout,*) ' sn_cfctl%l_layout = ', sn_cfctl%l_layout 523 WRITE(numout,*) ' sn_cfctl%l_mppout = ', sn_cfctl%l_mppout 524 WRITE(numout,*) ' sn_cfctl%l_mpptop = ', sn_cfctl%l_mpptop 525 WRITE(numout,*) ' sn_cfctl%procmin = ', sn_cfctl%procmin 526 WRITE(numout,*) ' sn_cfctl%procmax = ', sn_cfctl%procmax 527 WRITE(numout,*) ' sn_cfctl%procincr = ', sn_cfctl%procincr 528 WRITE(numout,*) ' sn_cfctl%ptimincr = ', sn_cfctl%ptimincr 506 529 WRITE(numout,*) ' level of print nn_print = ', nn_print 507 530 WRITE(numout,*) ' Start i indice for SUM control nn_ictls = ', nn_ictls … … 650 673 END SUBROUTINE nemo_alloc 651 674 675 SUBROUTINE nemo_set_cfctl(sn_cfctl, setto, for_all ) 676 !!---------------------------------------------------------------------- 677 !! *** ROUTINE nemo_set_cfctl *** 678 !! 679 !! ** Purpose : Set elements of the output control structure to setto. 680 !! for_all should be .false. unless all areas are to be 681 !! treated identically. 682 !! 683 !! ** Method : Note this routine can be used to switch on/off some 684 !! types of output for selected areas but any output types 685 !! that involve global communications (e.g. mpp_max, glob_sum) 686 !! should be protected from selective switching by the 687 !! for_all argument 688 !!---------------------------------------------------------------------- 689 LOGICAL :: setto, for_all 690 TYPE (sn_ctl) :: sn_cfctl 691 !!---------------------------------------------------------------------- 692 IF( for_all ) THEN 693 sn_cfctl%l_runstat = setto 694 sn_cfctl%l_trcstat = setto 695 ENDIF 696 sn_cfctl%l_oceout = setto 697 sn_cfctl%l_layout = setto 698 sn_cfctl%l_mppout = setto 699 sn_cfctl%l_mpptop = setto 700 END SUBROUTINE nemo_set_cfctl 701 652 702 !!====================================================================== 653 703 END MODULE nemogcm -
NEMO/trunk/src/OCE/stpctl.F90
r10425 r10570 67 67 REAL(wp) :: zzz ! local real 68 68 REAL(wp), DIMENSION(9) :: zmax 69 LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns 69 70 CHARACTER(len=20) :: clname 70 71 !!---------------------------------------------------------------------- 71 72 ! 73 ll_wrtstp = ( MOD( kt, sn_cfctl%ptimincr ) == 0 ) .OR. ( kt == nitend ) 74 ll_colruns = ll_wrtstp .AND. ( ln_ctl .OR. sn_cfctl%l_runstat ) 75 ll_wrtruns = ll_colruns .AND. lwm 72 76 IF( kt == nit000 .AND. lwp ) THEN 73 77 WRITE(numout,*) … … 76 80 ! ! open time.step file 77 81 IF( lwm ) CALL ctl_opn( numstp, 'time.step', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 78 ! ! open run.stat file 79 IF( ln_ctl .AND. lwm ) THEN 82 ! ! open run.stat file(s) at start whatever 83 ! ! the value of sn_cfctl%ptimincr 84 IF( lwm .AND. ( ln_ctl .OR. sn_cfctl%l_runstat ) ) THEN 80 85 CALL ctl_opn( numrun, 'run.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 81 86 clname = 'run.stat.nc' … … 99 104 IF( kt == nit000 ) lsomeoce = COUNT( ssmask(:,:) == 1._wp ) > 0 100 105 ! 101 IF(lwm ) THEN!== current time step ==! ("time.step" file)106 IF(lwm .AND. ll_wrtstp) THEN !== current time step ==! ("time.step" file) 102 107 WRITE ( numstp, '(1x, i8)' ) kt 103 108 REWIND( numstp ) … … 121 126 ENDIF 122 127 ! 123 IF( l n_ctl) THEN128 IF( ll_colruns ) THEN 124 129 CALL mpp_max( "stpctl", zmax ) ! max over the global domain 125 130 nstop = NINT( zmax(7) ) ! nstop indicator sheared among all local domains 126 131 ENDIF 127 132 ! !== run statistics ==! ("run.stat" files) 128 IF( l n_ctl .AND. lwm) THEN133 IF( ll_wrtruns ) THEN 129 134 WRITE(numrun,9500) kt, zmax(1), zmax(2), -zmax(3), zmax(4) 130 135 istatus = NF90_PUT_VAR( idrun, idssh, (/ zmax(1)/), (/kt/), (/1/) ) -
NEMO/trunk/src/OFF/nemogcm.F90
r10457 r10570 159 159 CHARACTER(len=120), DIMENSION(30) :: cltxt, cltxt2, clnam 160 160 !! 161 NAMELIST/namctl/ ln_ctl , nn_print, nn_ictls, nn_ictle, &162 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, &161 NAMELIST/namctl/ ln_ctl , sn_cfctl, nn_print, nn_ictls, nn_ictle, & 162 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, & 163 163 & ln_timing, ln_diacfl 164 164 NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_closea, ln_write_cfg, cn_domcfg_out, ln_use_jattr … … 215 215 narea = narea + 1 ! mynode return the rank of proc (0 --> jpnij -1 ) 216 216 217 IF( sn_cfctl%l_config ) THEN 218 ! Activate finer control of report outputs 219 ! optionally switch off output from selected areas (note this only 220 ! applies to output which does not involve global communications) 221 IF( ( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax ) .OR. & 222 & ( MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) ) & 223 & CALL nemo_set_cfctl( sn_cfctl, .FALSE., .FALSE. ) 224 ELSE 225 ! Use ln_ctl to turn on or off all options. 226 CALL nemo_set_cfctl( sn_cfctl, ln_ctl, .TRUE. ) 227 ENDIF 228 217 229 lwm = (narea == 1) ! control of output namelists 218 230 lwp = (narea == 1) .OR. ln_ctl ! control of all listing output print … … 238 250 WRITE(numout,*) ' NEMO team' 239 251 WRITE(numout,*) ' Off-line TOP Model' 240 WRITE(numout,*) ' NEMO version 4.0 (2017) ' 241 WRITE(numout,*) 252 WRITE(numout,*) ' NEMO version 4.0 (2019) ' 253 WRITE(numout,*) 254 WRITE(numout,*) " ._ ._ ._ ._ ._ " 255 WRITE(numout,*) " _.-._)`\_.-._)`\_.-._)`\_.-._)`\_.-._)`\_ " 256 WRITE(numout,*) 257 WRITE(numout,*) " o _, _, " 258 WRITE(numout,*) " o .' ( .-' / " 259 WRITE(numout,*) " o _/..._'. .' / " 260 WRITE(numout,*) " ( o .-'` ` '-./ _.' " 261 WRITE(numout,*) " ) ( o) ;= <_ ( " 262 WRITE(numout,*) " ( '-.,\\__ __.-;`\ '. ) " 263 WRITE(numout,*) " ) ) \) |`\ \) '. \ ( ( " 264 WRITE(numout,*) " ( ( \_/ '-._\ ) ) " 265 WRITE(numout,*) " ) ) ` ( ( " 266 WRITE(numout,*) " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ " 242 267 WRITE(numout,*) 243 268 DO ji = 1, SIZE(cltxt) 244 IF( TRIM(cltxt (ji)) /= '' ) WRITE(numout,*) cltxt(ji) ! control print of mynode269 IF( TRIM(cltxt (ji)) /= '' ) WRITE(numout,*) TRIM(cltxt(ji)) ! control print of mynode 245 270 END DO 246 271 WRITE(numout,*) 247 272 WRITE(numout,*) 248 273 DO ji = 1, SIZE(cltxt2) 249 IF( TRIM(cltxt2(ji)) /= '' ) WRITE(numout,*) cltxt2(ji) ! control print of domain size274 IF( TRIM(cltxt2(ji)) /= '' ) WRITE(numout,*) TRIM(cltxt2(ji)) ! control print of domain size 250 275 END DO 251 276 ! … … 324 349 WRITE(numout,*) ' Namelist namctl' 325 350 WRITE(numout,*) ' run control (for debugging) ln_ctl = ', ln_ctl 351 WRITE(numout,*) ' finer control over o/p sn_cfctl%l_config = ', sn_cfctl%l_config 352 WRITE(numout,*) ' sn_cfctl%l_runstat = ', sn_cfctl%l_runstat 353 WRITE(numout,*) ' sn_cfctl%l_trcstat = ', sn_cfctl%l_trcstat 354 WRITE(numout,*) ' sn_cfctl%l_oceout = ', sn_cfctl%l_oceout 355 WRITE(numout,*) ' sn_cfctl%l_layout = ', sn_cfctl%l_layout 356 WRITE(numout,*) ' sn_cfctl%l_mppout = ', sn_cfctl%l_mppout 357 WRITE(numout,*) ' sn_cfctl%l_mpptop = ', sn_cfctl%l_mpptop 358 WRITE(numout,*) ' sn_cfctl%procmin = ', sn_cfctl%procmin 359 WRITE(numout,*) ' sn_cfctl%procmax = ', sn_cfctl%procmax 360 WRITE(numout,*) ' sn_cfctl%procincr = ', sn_cfctl%procincr 361 WRITE(numout,*) ' sn_cfctl%ptimincr = ', sn_cfctl%ptimincr 326 362 WRITE(numout,*) ' level of print nn_print = ', nn_print 327 363 WRITE(numout,*) ' Start i indice for SUM control nn_ictls = ', nn_ictls … … 449 485 END SUBROUTINE nemo_alloc 450 486 487 SUBROUTINE nemo_set_cfctl(sn_cfctl, setto, for_all ) 488 !!---------------------------------------------------------------------- 489 !! *** ROUTINE nemo_set_cfctl *** 490 !! 491 !! ** Purpose : Set elements of the output control structure to setto. 492 !! for_all should be .false. unless all areas are to be 493 !! treated identically. 494 !! 495 !! ** Method : Note this routine can be used to switch on/off some 496 !! types of output for selected areas but any output types 497 !! that involve global communications (e.g. mpp_max, glob_sum) 498 !! should be protected from selective switching by the 499 !! for_all argument 500 !!---------------------------------------------------------------------- 501 LOGICAL :: setto, for_all 502 TYPE (sn_ctl) :: sn_cfctl 503 !!---------------------------------------------------------------------- 504 IF( for_all ) THEN 505 sn_cfctl%l_runstat = setto 506 sn_cfctl%l_trcstat = setto 507 ENDIF 508 sn_cfctl%l_oceout = setto 509 sn_cfctl%l_layout = setto 510 sn_cfctl%l_mppout = setto 511 sn_cfctl%l_mpptop = setto 512 END SUBROUTINE nemo_set_cfctl 513 451 514 SUBROUTINE istate_init 452 515 !!---------------------------------------------------------------------- -
NEMO/trunk/src/SAO/nemogcm.F90
r10425 r10570 93 93 CHARACTER(len=120), DIMENSION(30) :: cltxt, cltxt2, clnam 94 94 ! 95 NAMELIST/namctl/ ln_ctl , nn_print, nn_ictls, nn_ictle, &96 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, &95 NAMELIST/namctl/ ln_ctl , sn_cfctl, nn_print, nn_ictls, nn_ictle, & 96 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, & 97 97 & ln_timing, ln_diacfl 98 98 NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_closea, ln_write_cfg, cn_domcfg_out, ln_use_jattr … … 164 164 narea = narea + 1 ! mynode return the rank of proc (0 --> jpnij -1 ) 165 165 166 IF( sn_cfctl%l_config ) THEN 167 ! Activate finer control of report outputs 168 ! optionally switch off output from selected areas (note this only 169 ! applies to output which does not involve global communications 170 IF( ( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax ) .OR. & 171 & ( MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) ) & 172 & CALL nemo_set_cfctl( sn_cfctl, .FALSE., .FALSE. ) 173 ELSE 174 ! Use ln_ctl to turn on or off all options. 175 CALL nemo_set_cfctl( sn_cfctl, ln_ctl, .TRUE. ) 176 ENDIF 177 166 178 lwm = (narea == 1) ! control of output namelists 167 179 lwp = (narea == 1) .OR. ln_ctl ! control of all listing output print … … 188 200 WRITE(numout,*) ' NEMO team' 189 201 WRITE(numout,*) ' Stand Alone Observation operator' 190 WRITE(numout,*) ' NEMO version 4.0 (2017) ' 191 WRITE(numout,*) 202 WRITE(numout,*) ' NEMO version 4.0 (2019) ' 203 WRITE(numout,*) 204 WRITE(numout,*) " ._ ._ ._ ._ ._ " 205 WRITE(numout,*) " _.-._)`\_.-._)`\_.-._)`\_.-._)`\_.-._)`\_ " 206 WRITE(numout,*) 207 WRITE(numout,*) " o _, _, " 208 WRITE(numout,*) " o .' ( .-' / " 209 WRITE(numout,*) " o _/..._'. .' / " 210 WRITE(numout,*) " ( o .-'` ` '-./ _.' " 211 WRITE(numout,*) " ) ( o) ;= <_ ( " 212 WRITE(numout,*) " ( '-.,\\__ __.-;`\ '. ) " 213 WRITE(numout,*) " ) ) \) |`\ \) '. \ ( ( " 214 WRITE(numout,*) " ( ( \_/ '-._\ ) ) " 215 WRITE(numout,*) " ) ) ` ( ( " 216 WRITE(numout,*) " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ " 192 217 WRITE(numout,*) 193 218 DO ji = 1, SIZE(cltxt) 194 IF( TRIM(cltxt (ji)) /= '' ) WRITE(numout,*) cltxt(ji) ! control print of mynode219 IF( TRIM(cltxt (ji)) /= '' ) WRITE(numout,*) TRIM(cltxt(ji)) ! control print of mynode 195 220 END DO 196 221 WRITE(numout,*) 197 222 WRITE(numout,*) 198 223 DO ji = 1, SIZE(cltxt2) 199 IF( TRIM(cltxt2(ji)) /= '' ) WRITE(numout,*) cltxt2(ji) ! control print of domain size224 IF( TRIM(cltxt2(ji)) /= '' ) WRITE(numout,*) TRIM(cltxt2(ji)) ! control print of domain size 200 225 END DO 201 226 ! … … 245 270 WRITE(numout,*) ' Namelist namctl' 246 271 WRITE(numout,*) ' run control (for debugging) ln_ctl = ', ln_ctl 272 WRITE(numout,*) ' finer control over o/p sn_cfctl%l_config = ', sn_cfctl%l_config 273 WRITE(numout,*) ' sn_cfctl%l_runstat = ', sn_cfctl%l_runstat 274 WRITE(numout,*) ' sn_cfctl%l_trcstat = ', sn_cfctl%l_trcstat 275 WRITE(numout,*) ' sn_cfctl%l_oceout = ', sn_cfctl%l_oceout 276 WRITE(numout,*) ' sn_cfctl%l_layout = ', sn_cfctl%l_layout 277 WRITE(numout,*) ' sn_cfctl%l_mppout = ', sn_cfctl%l_mppout 278 WRITE(numout,*) ' sn_cfctl%l_mpptop = ', sn_cfctl%l_mpptop 279 WRITE(numout,*) ' sn_cfctl%procmin = ', sn_cfctl%procmin 280 WRITE(numout,*) ' sn_cfctl%procmax = ', sn_cfctl%procmax 281 WRITE(numout,*) ' sn_cfctl%procincr = ', sn_cfctl%procincr 282 WRITE(numout,*) ' sn_cfctl%ptimincr = ', sn_cfctl%ptimincr 247 283 WRITE(numout,*) ' level of print nn_print = ', nn_print 248 284 WRITE(numout,*) ' Start i indice for SUM control nn_ictls = ', nn_ictls … … 266 302 IF(lwp) THEN ! control print 267 303 WRITE(numout,*) 268 WRITE(numout,*) 'namcfg : configuration initialization through namelist read'269 WRITE(numout,*) '~~~~~~~ '270 304 WRITE(numout,*) ' Namelist namcfg' 271 305 WRITE(numout,*) ' read domain configuration file ln_read_cfg = ', ln_read_cfg 272 306 WRITE(numout,*) ' filename to be read cn_domcfg = ', TRIM(cn_domcfg) 273 307 WRITE(numout,*) ' keep closed seas in the domain (if exist) ln_closea = ', ln_closea 274 WRITE(numout,*) ' write configuration definition fileln_write_cfg = ', ln_write_cfg308 WRITE(numout,*) ' create a configuration definition file ln_write_cfg = ', ln_write_cfg 275 309 WRITE(numout,*) ' filename to be written cn_domcfg_out = ', TRIM(cn_domcfg_out) 276 310 WRITE(numout,*) ' use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr … … 317 351 ENDIF 318 352 ! 319 IF( 1 _wp /= SIGN(1._wp,-0._wp) ) CALL ctl_stop( 'nemo_ctl: The intrinsec SIGN function follows', &320 & 'f2003 standard. ' ,&321 & 'Compile with key_nosignedzero enabled' )353 IF( 1._wp /= SIGN(1._wp,-0._wp) ) CALL ctl_stop( 'nemo_ctl: The intrinsec SIGN function follows f2003 standard.', & 354 & 'Compile with key_nosignedzero enabled:', & 355 & '--> add -Dkey_nosignedzero to the definition of %CPP in your arch file' ) 322 356 ! 323 357 END SUBROUTINE nemo_ctl … … 377 411 END SUBROUTINE nemo_alloc 378 412 413 SUBROUTINE nemo_set_cfctl(sn_cfctl, setto, for_all ) 414 !!---------------------------------------------------------------------- 415 !! *** ROUTINE nemo_set_cfctl *** 416 !! 417 !! ** Purpose : Set elements of the output control structure to setto. 418 !! for_all should be .false. unless all areas are to be 419 !! treated identically. 420 !! 421 !! ** Method : Note this routine can be used to switch on/off some 422 !! types of output for selected areas but any output types 423 !! that involve global communications (e.g. mpp_max, glob_sum) 424 !! should be protected from selective switching by the 425 !! for_all argument 426 !!---------------------------------------------------------------------- 427 LOGICAL :: setto, for_all 428 TYPE (sn_ctl) :: sn_cfctl 429 !!---------------------------------------------------------------------- 430 IF( for_all ) THEN 431 sn_cfctl%l_runstat = setto 432 sn_cfctl%l_trcstat = setto 433 ENDIF 434 sn_cfctl%l_oceout = setto 435 sn_cfctl%l_layout = setto 436 sn_cfctl%l_mppout = setto 437 sn_cfctl%l_mpptop = setto 438 END SUBROUTINE nemo_set_cfctl 439 379 440 !!====================================================================== 380 441 END MODULE nemogcm -
NEMO/trunk/src/SAS/nemogcm.F90
r10459 r10570 183 183 CHARACTER(len=80) :: clname 184 184 !! 185 NAMELIST/namctl/ ln_ctl , nn_print, nn_ictls, nn_ictle, &186 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, &185 NAMELIST/namctl/ ln_ctl , sn_cfctl, nn_print, nn_ictls, nn_ictle, & 186 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, & 187 187 & ln_timing, ln_diacfl 188 188 NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_closea, ln_write_cfg, cn_domcfg_out, ln_use_jattr … … 261 261 narea = narea + 1 ! mynode return the rank of proc (0 --> jpnij -1 ) 262 262 263 IF( sn_cfctl%l_config ) THEN 264 ! Activate finer control of report outputs 265 ! optionally switch off output from selected areas (note this only 266 ! applies to output which does not involve global communications) 267 IF( ( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax ) .OR. & 268 & ( MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) ) & 269 & CALL nemo_set_cfctl( sn_cfctl, .FALSE., .FALSE. ) 270 ELSE 271 ! Use ln_ctl to turn on or off all options. 272 CALL nemo_set_cfctl( sn_cfctl, ln_ctl, .TRUE. ) 273 ENDIF 274 263 275 lwm = (narea == 1) ! control of output namelists 264 276 lwp = (narea == 1) .OR. ln_ctl ! control of all listing output print … … 286 298 WRITE(numout,*) ' NEMO team' 287 299 WRITE(numout,*) ' Ocean General Circulation Model' 288 WRITE(numout,*) ' NEMO version 4.0 (201 7) '300 WRITE(numout,*) ' NEMO version 4.0 (2019) ' 289 301 WRITE(numout,*) ' StandAlone Surface version (SAS) ' 290 WRITE(numout,*) 302 WRITE(numout,*) " ._ ._ ._ ._ ._ " 303 WRITE(numout,*) " _.-._)`\_.-._)`\_.-._)`\_.-._)`\_.-._)`\_ " 304 WRITE(numout,*) 305 WRITE(numout,*) " o _, _, " 306 WRITE(numout,*) " o .' ( .-' / " 307 WRITE(numout,*) " o _/..._'. .' / " 308 WRITE(numout,*) " ( o .-'` ` '-./ _.' " 309 WRITE(numout,*) " ) ( o) ;= <_ ( " 310 WRITE(numout,*) " ( '-.,\\__ __.-;`\ '. ) " 311 WRITE(numout,*) " ) ) \) |`\ \) '. \ ( ( " 312 WRITE(numout,*) " ( ( \_/ '-._\ ) ) " 313 WRITE(numout,*) " ) ) ` ( ( " 314 WRITE(numout,*) " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ " 291 315 WRITE(numout,*) 292 316 DO ji = 1, SIZE(cltxt) … … 361 385 WRITE(numout,*) ' Namelist namctl' 362 386 WRITE(numout,*) ' run control (for debugging) ln_ctl = ', ln_ctl 387 WRITE(numout,*) ' finer control over o/p sn_cfctl%l_config = ', sn_cfctl%l_config 388 WRITE(numout,*) ' sn_cfctl%l_runstat = ', sn_cfctl%l_runstat 389 WRITE(numout,*) ' sn_cfctl%l_trcstat = ', sn_cfctl%l_trcstat 390 WRITE(numout,*) ' sn_cfctl%l_oceout = ', sn_cfctl%l_oceout 391 WRITE(numout,*) ' sn_cfctl%l_layout = ', sn_cfctl%l_layout 392 WRITE(numout,*) ' sn_cfctl%l_mppout = ', sn_cfctl%l_mppout 393 WRITE(numout,*) ' sn_cfctl%l_mpptop = ', sn_cfctl%l_mpptop 394 WRITE(numout,*) ' sn_cfctl%procmin = ', sn_cfctl%procmin 395 WRITE(numout,*) ' sn_cfctl%procmax = ', sn_cfctl%procmax 396 WRITE(numout,*) ' sn_cfctl%procincr = ', sn_cfctl%procincr 397 WRITE(numout,*) ' sn_cfctl%ptimincr = ', sn_cfctl%ptimincr 363 398 WRITE(numout,*) ' level of print nn_print = ', nn_print 364 399 WRITE(numout,*) ' Start i indice for SUM control nn_ictls = ', nn_ictls … … 494 529 END SUBROUTINE nemo_alloc 495 530 531 SUBROUTINE nemo_set_cfctl(sn_cfctl, setto, for_all ) 532 !!---------------------------------------------------------------------- 533 !! *** ROUTINE nemo_set_cfctl *** 534 !! 535 !! ** Purpose : Set elements of the output control structure to setto. 536 !! for_all should be .false. unless all areas are to be 537 !! treated identically. 538 !! 539 !! ** Method : Note this routine can be used to switch on/off some 540 !! types of output for selected areas but any output types 541 !! that involve global communications (e.g. mpp_max, glob_sum) 542 !! should be protected from selective switching by the 543 !! for_all argument 544 !!---------------------------------------------------------------------- 545 LOGICAL :: setto, for_all 546 TYPE (sn_ctl) :: sn_cfctl 547 !!---------------------------------------------------------------------- 548 IF( for_all ) THEN 549 sn_cfctl%l_runstat = setto 550 sn_cfctl%l_trcstat = setto 551 ENDIF 552 sn_cfctl%l_oceout = setto 553 sn_cfctl%l_layout = setto 554 sn_cfctl%l_mppout = setto 555 sn_cfctl%l_mpptop = setto 556 END SUBROUTINE nemo_set_cfctl 557 496 558 !!====================================================================== 497 559 END MODULE nemogcm -
NEMO/trunk/src/TOP/prtctl_trc.F90
r9125 r10570 210 210 sind = narea 211 211 eind = narea 212 clb_name = "('mpp.top.output_',I 3.3)"212 clb_name = "('mpp.top.output_',I4.4)" 213 213 cl_run = 'MULTI processor run' 214 214 ! use indices for each area computed by mpp_init subroutine … … 229 229 sind = 1 230 230 eind = ijsplt 231 clb_name = "('mono.top.output_',I 3.3)"231 clb_name = "('mono.top.output_',I4.4)" 232 232 cl_run = 'MONO processor run ' 233 233 ! compute indices for each area as done in mpp_init subroutine -
NEMO/trunk/src/TOP/trcini.F90
r10425 r10570 72 72 CALL trc_ice_ini ! Tracers in sea ice 73 73 ! 74 IF(lwm) CALL ctl_opn( numstr, 'tracer.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp , narea ) 74 IF( lwm .AND. sn_cfctl%l_trcstat ) THEN 75 CALL ctl_opn( numstr, 'tracer.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp , narea ) 76 ENDIF 75 77 ! 76 78 CALL trc_ini_state ! passive tracers initialisation : from a restart or from clim -
NEMO/trunk/src/TOP/trcstp.F90
r10425 r10570 57 57 INTEGER :: jk, jn ! dummy loop indices 58 58 REAL(wp):: ztrai ! local scalar 59 LOGICAL :: ll_trcstat ! local logical 59 60 CHARACTER (len=25) :: charout ! 60 61 !!------------------------------------------------------------------- … … 68 69 ENDIF 69 70 ! 71 ll_trcstat = ( ln_ctl .OR. sn_cfctl%l_trcstat ) .AND. & 72 & ( ( MOD( kt, sn_cfctl%ptimincr ) == 0 ) .OR. ( kt == nitend ) ) 70 73 IF( kt == nittrc000 .AND. lk_trdmxl_trc ) CALL trd_mxl_trc_init ! trends: Mixed-layer 71 74 ! … … 109 112 ENDIF 110 113 ! 111 IF (l n_ctl) THEN114 IF (ll_trcstat) THEN 112 115 ztrai = 0._wp ! content of all tracers 113 116 DO jn = 1, jptra
Note: See TracChangeset
for help on using the changeset viewer.