*IF DEF,CONTROL PRINTCT1.2
C ******************************COPYRIGHT****************************** GTS2F400.7597
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.7598
C GTS2F400.7599
C Use, duplication or disclosure of this code is subject to the GTS2F400.7600
C restrictions as set forth in the contract. GTS2F400.7601
C GTS2F400.7602
C Meteorological Office GTS2F400.7603
C London Road GTS2F400.7604
C BRACKNELL GTS2F400.7605
C Berkshire UK GTS2F400.7606
C RG12 2SZ GTS2F400.7607
C GTS2F400.7608
C If no contract has been raised with this copy of the code, the use, GTS2F400.7609
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.7610
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.7611
C Modelling at the above address. GTS2F400.7612
C ******************************COPYRIGHT****************************** GTS2F400.7613
C GTS2F400.7614
CLL Routine: PRINTCTL ------------------------------------------------- PRINTCT1.3
CLL PRINTCT1.4
CLL Purpose: Outputs diagnostic printed output from primary model PRINTCT1.5
CLL data as zonal, quarter global and global mean quantities PRINTCT1.6
CLL in the case of the atmosphere; in a format yet to be PRINTCT1.7
CLL decided in the case of the ocean. PRINTCT1.8
CLL PRINTCT1.9
CLL Tested under compiler: cft77 PRINTCT1.10
CLL Tested under OS version: UNICOS 5.1 PRINTCT1.11
CLL PRINTCT1.12
CLL Author: T.C.Johns PRINTCT1.13
CLL PRINTCT1.14
CLL Model Modification history from model version 3.0: PRINTCT1.15
CLL version date PRINTCT1.16
CLL 3.1 3/02/93 : added comdeck CHSUNITS to define NUNITS for i/o RS030293.126
CLL 3.2 13/07/93 Changed CHARACTER*(*) to CHARACTER*(80) for TS150793.129
CLL portability. Author Tracey Smith. TS150793.130
CLL 3.3 08/02/94 Modify calls to TIME2SEC/SEC2TIME to output/input TJ080294.522
CLL elapsed times in days & secs, for portability. TCJ TJ080294.523
CLL 3.4 17/06/94 Argument LCAL360 added and passed to SEC2TIME GSS1F304.522
CLL S.J.Swarbrick GSS1F304.523
CLL 4.3 23/07/97 Disable this routine for MPP. To be enabled ARR0F403.44
CLL at a later version. R. Rawlins ARR0F403.45
CLL PRINTCT1.17
CLL Programming standard: UM Doc Paper 3, version 2 (7/9/90) PRINTCT1.18
CLL PRINTCT1.19
CLL Logical components covered: C61 PRINTCT1.20
CLL PRINTCT1.21
CLL Project task: C61 PRINTCT1.22
CLL PRINTCT1.23
CLL External documentation: On-line UM documents C0 - The top-level PRINTCT1.24
CLL control system, and C61 - Zonal mean PRINTCT1.25
CLL calculations PRINTCT1.26
CLL PRINTCT1.27
CLL ------------------------------------------------------------------- PRINTCT1.28
C*L Interface and arguments: ------------------------------------------ PRINTCT1.29
C PRINTCT1.30
SUBROUTINE PRINTCTL ( 3,4@DYALLOC.2971
*CALL ARGSIZE
@DYALLOC.2972
*CALL ARGD1
@DYALLOC.2973
*CALL ARGDUMA
@DYALLOC.2974
*CALL ARGPTRA
@DYALLOC.2975
*CALL ARGCONA
@DYALLOC.2976
+ I_AO,MEANLEV,ICODE,CMESSAGE) GDR3F305.298
C PRINTCT1.32
IMPLICIT NONE PRINTCT1.33
@DYALLOC.2978
*CALL CMAXSIZE
@DYALLOC.2979
*CALL TYPSIZE
@DYALLOC.2980
*CALL TYPD1
@DYALLOC.2981
*CALL TYPDUMA
@DYALLOC.2982
*CALL TYPPTRA
@DYALLOC.2983
*CALL TYPCONA
@DYALLOC.2984
@DYALLOC.2985
INTEGER I_AO ! IN - Atmosphere/ocean switch PRINTCT1.35
INTEGER MEANLEV ! IN - Mean level indicator PRINTCT1.36
INTEGER ICODE ! OUT - Error exit code PRINTCT1.37
CHARACTER*(80)CMESSAGE ! OUT - Error message TS150793.131
@DYALLOC.2986
C PRINTCT1.39
C*---------------------------------------------------------------------- PRINTCT1.40
C Common blocks PRINTCT1.41
*CALL CSUBMODL
GDR3F305.299
C PRINTCT1.42
*CALL CHSUNITS
RS030293.127
*CALL CHISTORY
GDR3F305.300
*CALL CCONTROL
GDR3F305.301
*CALL CTIME
PRINTCT1.46
C PRINTCT1.47
C Subroutines called PRINTCT1.48
C PRINTCT1.49
*IF DEF,ATMOS PRINTCT1.50
EXTERNAL ZONMCTL,SEC2TIME,STP2TIME GDR3F305.302
C PRINTCT1.52
C Local variables PRINTCT1.53
C PRINTCT1.54
INTEGER PRINTCT1.55
& PERIOD_DAYS, ! Length of period for mean data, days TJ080294.524
& PERIOD_SECS, ! Length of period for mean data, secs TJ080294.525
& PERIOD, ! Length of period in dump multiples TJ080294.526
& END_DAYS, ! End of period for mean data, days TJ080294.527
& END_SECS, ! End of period for mean data, secs TJ080294.528
& START_YEAR, ! Start time for mean data PRINTCT1.57
& START_MONTH, ! Start time for mean data PRINTCT1.58
& START_DAY, ! Start time for mean data PRINTCT1.59
& START_HOUR, ! Start time for mean data PRINTCT1.60
& START_MINUTE, ! Start time for mean data PRINTCT1.61
& START_SECOND, ! Start time for mean data PRINTCT1.62
& START_DAYNO ! Start time for mean data PRINTCT1.63
CHARACTER*80 BANNER ! Descriptive banner for ZONM_ATM PRINTCT1.64
*ENDIF PRINTCT1.65
*IF DEF,ATMOS PRINTCT1.66
*IF DEF,MPP ARR0F403.46
ARR0F403.47
CL Force exit unconditionally: lower routines not yet converted to MPP. ARR0F403.48
IF(I_AO.GT.0) THEN ARR0F403.49
WRITE(6,*) 'PRINTCTL: Printing of climate global and zonal ', ARR0F403.50
& 'mean diagnostics disabled for MPP.' ARR0F403.51
WRITE(6,*) ' : Switch off request for printing in ', ARR0F403.52
& 'UMUI window atmos_Control_PostProc_DumpMean' ARR0F403.53
RETURN ARR0F403.54
ENDIF ARR0F403.55
*ENDIF ARR0F403.56
CL---------------------------------------------------------------------- PRINTCT1.67
CL 1. If atmosphere, execute zonal mean subroutine. PRINTCT1.68
CL PRINTCT1.69
IF ( I_AO .EQ. 1 .AND. P_LEVELS.LE.20) THEN PRINTCT1.70
CL PRINTCT1.71
CL 1.1 Generate a banner message to describe the data PRINTCT1.72
CL PRINTCT1.73
IF (MEANLEV.EQ.0) THEN ! Instantaneous data PRINTCT1.74
IF (STEPim(a_im).EQ.0) THEN ! Start fields GDR5F305.150
WRITE(BANNER,'('' ----------------- '',A4,A1, PRINTCT1.76
& '': Initial data valid at '', PRINTCT1.77
& I2,''Z '',I2,''/'',I2,''/'',I4, PRINTCT1.78
& '' -----------------'')') PRINTCT1.79
& EXPT_ID,JOB_ID,MODEL_BASIS_TIME(4),MODEL_BASIS_TIME(3) PRINTCT1.80
& ,MODEL_BASIS_TIME(2),MODEL_BASIS_TIME(1) PRINTCT1.81
ELSE ! Forecast fields PRINTCT1.82
WRITE(BANNER,'('' ---- '',A4,A1, PRINTCT1.83
& '': Forecast from Data Time '', PRINTCT1.84
& I2,''Z '',I2,''/'',I2,''/'',I4,'' Valid at '', PRINTCT1.85
& I2,''Z '',I2,''/'',I2,''/'',I4, PRINTCT1.86
& '' ---'')') PRINTCT1.87
& EXPT_ID,JOB_ID,MODEL_DATA_TIME(4),MODEL_DATA_TIME(3), PRINTCT1.88
& MODEL_DATA_TIME(2),MODEL_DATA_TIME(1), PRINTCT1.89
& I_HOUR,I_DAY,I_MONTH,I_YEAR PRINTCT1.90
ENDIF PRINTCT1.91
C PRINTCT1.92
ELSEIF (MEANLEV.EQ.-1) THEN ! Analysis fields PRINTCT1.93
WRITE(BANNER,'('' ------------------- '',A4,A1, PRINTCT1.94
& '': Analysis valid at '', PRINTCT1.95
& I2,''Z '',I2,''/'',I2,''/'',I4, PRINTCT1.96
& '' -------------------'')') PRINTCT1.97
& EXPT_ID,JOB_ID,I_HOUR,I_DAY,I_MONTH,I_YEAR PRINTCT1.98
C PRINTCT1.99
ELSEIF (MEANLEV.LE.4) THEN ! Mean data PRINTCT1.100
PERIOD=MEANFREQim(1,I_AO) GDR3F305.303
IF (MEANLEV.GT.1) PERIOD=PERIOD*MEANFREQim(2,I_AO) GDR3F305.304
IF (MEANLEV.GT.2) PERIOD=PERIOD*MEANFREQim(3,I_AO) GDR3F305.305
IF (MEANLEV.GT.3) PERIOD=PERIOD*MEANFREQim(4,I_AO) GDR3F305.306
CALL STP2TIME
(PERIOD*DUMPFREQim(I_AO), GDR3F305.307
& STEPS_PER_PERIODim(I_AO),SECS_PER_PERIODim(I_AO), GDR3F305.308
& PERIOD_DAYS,PERIOD_SECS) TJ080294.530
CALL STP2TIME
(STEPim(I_AO), GDR3F305.309
& STEPS_PER_PERIODim(I_AO),SECS_PER_PERIODim(I_AO), GDR3F305.310
& END_DAYS,END_SECS) TJ080294.532
CALL SEC2TIME
(END_DAYS-PERIOD_DAYS,END_SECS-PERIOD_SECS, TJ080294.533
& BASIS_TIME_DAYS,BASIS_TIME_SECS, TJ080294.534
& START_YEAR,START_MONTH,START_DAY,START_HOUR, PRINTCT1.108
& START_MINUTE,START_SECOND,START_DAYNO,LCAL360) GSS1F304.526
WRITE(BANNER,'('' --- '',A4,A1,'': Period '',I1, PRINTCT1.110
& '' Time-mean fields from '', PRINTCT1.111
& I2,''Z '',I2,''/'',I2,''/'',I4,'' to '', PRINTCT1.112
& I2,''Z '',I2,''/'',I2,''/'',I4,'' ----'')') PRINTCT1.113
& EXPT_ID,JOB_ID,MEANLEV, PRINTCT1.114
& START_HOUR,START_DAY,START_MONTH,START_YEAR, PRINTCT1.115
& I_HOUR,I_DAY,I_MONTH,I_YEAR PRINTCT1.116
C PRINTCT1.117
ELSE ! Bad value for MEANLEV PRINTCT1.118
CMESSAGE='PRINTCTL : Illegal value of MEANLEV' PRINTCT1.119
ICODE=1 PRINTCT1.120
GOTO 999 PRINTCT1.121
ENDIF PRINTCT1.122
CL PRINTCT1.123
CL 1.2 Call the zonal mean print control routine PRINTCT1.124
CL PRINTCT1.125
CALL ZONMCTL
( @DYALLOC.2987
*CALL ARGSIZE
@DYALLOC.2988
*CALL ARGD1
@DYALLOC.2989
*CALL ARGDUMA
@DYALLOC.2990
*CALL ARGPTRA
@DYALLOC.2991
*CALL ARGCONA
@DYALLOC.2992
* BANNER, NF171193.81
* P_FIELD, ! for dynamic array NF171193.82
* P_LEVELS, ! for dynamic array NF171193.83
& ST_LEVELS, ! for dynamic array AJS1F401.1596
& SM_LEVELS, ! for dynamic array AJS1F401.1597
* U_FIELD, ! for dynamic array NF171193.85
* Q_LEVELS, ! for dynamic array NF171193.86
* ICODE, CMESSAGE) NF171193.87
IF (ICODE.GT.0) GOTO 999 PRINTCT1.128
ENDIF PRINTCT1.129
*ENDIF PRINTCT1.130
*IF DEF,OCEAN PRINTCT1.131
CL---------------------------------------------------------------------- PRINTCT1.132
CL 2. If ocean, print standard ocean diagnostics from primary fields PRINTCT1.133
CL (no code currently implemented as printed ocean diagnostics are PRINTCT1.134
CL handled within the ocean basecode) PRINTCT1.135
CL PRINTCT1.136
IF (I_AO.EQ.2) THEN PRINTCT1.137
ICODE=-1 PRINTCT1.138
CMESSAGE= PRINTCT1.139
& "PRINTCTL : Warning - printed ocean diagnostics not implemented" PRINTCT1.140
WRITE(6,*)CMESSAGE GIE0F403.556
ENDIF PRINTCT1.142
*ENDIF PRINTCT1.143
C PRINTCT1.144
999 CONTINUE PRINTCT1.145
RETURN PRINTCT1.146
CL---------------------------------------------------------------------- PRINTCT1.147
END PRINTCT1.148
*ENDIF PRINTCT1.149