Changeset 10570 for NEMO/trunk/src/OCE
- Timestamp:
- 2019-01-24T16:14:49+01:00 (5 years ago)
- Location:
- NEMO/trunk/src/OCE
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
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/) )
Note: See TracChangeset
for help on using the changeset viewer.