Changeset 8393
- Timestamp:
- 2017-07-28T17:26:12+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/AMM15_v3_6_STABLE_package/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfmxl.F90
r8059 r8393 48 48 END TYPE MXL_ZINT 49 49 50 !Used for 25h mean 51 LOGICAL, PRIVATE :: mld_25h_init = .TRUE. !Logical used to initalise 25h 52 !outputs. Necassary, because we need to 53 !initalise the mld_25h on the zeroth 54 !timestep (i.e in the nemogcm_init call) 55 LOGICAL, PRIVATE :: mld_25h_write = .FALSE. !Logical confirm 25h calculating/processing 56 57 INTEGER, SAVE :: i_cnt_25h ! Counter for 25 hour means 58 59 REAL(wp),SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: hmld_zint_25h 60 50 61 !! * Substitutions 51 62 # include "domzgr_substitute.h90" … … 441 452 INTEGER :: nn_mld_diag = 0 ! number of diagnostics 442 453 454 INTEGER :: i_steps ! no of timesteps per hour 455 INTEGER :: ierror ! logical error message 456 457 REAL(wp) :: zdt ! timestep variable 458 443 459 CHARACTER(len=1) :: cmld 444 460 … … 496 512 CALL iom_put( "mldhtc_"//cmld , htc_mld(:,:) ) 497 513 ENDIF 514 515 IF( iom_use( "mldzint25h_"//cmld ) ) THEN 516 IF( .NOT. mld_25h_write ) mld_25h_write = .TRUE. 517 zdt = rdt 518 IF( nacc == 1 ) zdt = rdtmin 519 IF( MOD( 3600,INT(zdt) ) == 0 ) THEN 520 i_steps = 3600/INT(zdt) 521 ELSE 522 CALL ctl_stop('STOP', 'zdf_mxl_zint 25h: timestep must give MOD(3600,rdt) = 0 otherwise no hourly values are possible') 523 ENDIF 524 IF( ( mld_25h_init ) .OR. ( kt == nit000 ) ) THEN 525 i_cnt_25h = 1 526 IF( .NOT. ALLOCATED(hmld_zint_25h) ) THEN 527 ALLOCATE( hmld_zint_25h(jpi,jpj,nn_mld_diag), STAT=ierror ) 528 IF( ierror > 0 ) CALL ctl_stop( 'zdf_mxl_zint 25h: unable to allocate hmld_zint_25h' ) 529 ENDIF 530 hmld_zint_25h(:,:,jn) = hmld_zint(:,:) 531 ENDIF 532 IF( MOD( kt, i_steps ) == 0 .AND. kt .NE. nn_it000 ) THEN 533 hmld_zint_25h(:,:,jn) = hmld_zint_25h(:,:,jn) + hmld_zint(:,:) 534 ENDIF 535 IF( i_cnt_25h .EQ. 25 .AND. MOD( kt, i_steps*24) == 0 .AND. kt .NE. nn_it000 ) THEN 536 CALL iom_put( "mldzint25h_"//cmld , hmld_zint_25h(:,:,jn) / 25._wp ) 537 ENDIF 538 ENDIF 539 498 540 ENDIF 499 541 END DO 542 543 IF( mld_25h_write ) THEN 544 IF( ( MOD( kt, i_steps ) == 0 ) .OR. mld_25h_init ) THEN 545 IF (lwp) THEN 546 WRITE(numout,*) 'zdf_mxl_zint (25h) : Summed the following number of hourly values so far',i_cnt_25h 547 ENDIF 548 i_cnt_25h = i_cnt_25h + 1 549 IF( mld_25h_init ) mld_25h_init = .FALSE. 550 ENDIF 551 IF( i_cnt_25h .EQ. 25 .AND. MOD( kt, i_steps*24) == 0 .AND. kt .NE. nn_it000 ) THEN 552 i_cnt_25h = 1 553 ENDIF 554 ENDIF 555 500 556 ENDIF 501 557
Note: See TracChangeset
for help on using the changeset viewer.