*IF DEF,OCEAN @DYALLOC.4353 C ******************************COPYRIGHT****************************** GTS2F400.8101 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.8102 C GTS2F400.8103 C Use, duplication or disclosure of this code is subject to the GTS2F400.8104 C restrictions as set forth in the contract. GTS2F400.8105 C GTS2F400.8106 C Meteorological Office GTS2F400.8107 C London Road GTS2F400.8108 C BRACKNELL GTS2F400.8109 C Berkshire UK GTS2F400.8110 C RG12 2SZ GTS2F400.8111 C GTS2F400.8112 C If no contract has been raised with this copy of the code, the use, GTS2F400.8113 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.8114 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.8115 C Modelling at the above address. GTS2F400.8116 C ******************************COPYRIGHT****************************** GTS2F400.8117 C GTS2F400.8118 CLL Subroutine READNLST_OCEAN -------------------------------------- READNLST.2 CLL READNLST.3 CLL version for CRAY YMP READNLST.4 CLL written by S. Ineson READNLST.5 CLL READNLST.6 CLL code reviewed by : READNLST.7 CLL READNLST.8 CLL version number 1. dated 00/00/00 READNLST.9 CLL @DYALLOC.4354 CLL August 1993: changes for dynamic allocation. S Foreman @DYALLOC.4355 CLL 3.4 16/6/94 : Change CHARACTER*(*) to CHARACTER*(80) N.Farnon ONF0F304.9 CLL 01.09.94: Version 3.4 Parallelisation changes. R. Hill ORH1F304.110 CLL 3.5 11/04/95 Sub-models stage 1: revised History/control files GRB1F305.507 CLL contents. Add ocean control variables. RTHBarnes. GRB1F305.508 CLL 3.5 01/02/95: Remove *IF dependecies. R.Hill ORH1F305.154 CLL 4.0 27/03/95 : Add new namelist for ice variables. C.Cooper OCC0F400.25 CLL 4.1 07/06/96 : Initialise KKK. S. Ineson ORH2F401.86 CLL 4.1 11/04/96 : Add coeffs for Gent and McWilliams scheme OLA0F401.46 CLL thickness diffusion to EDDY namelist OLA0F401.47 CLL 4.4 15/06/97 : Add to timestep namelist for DTBT and params ORL1F404.122 CLL namelist for wght_delplus used with the free ORL1F404.123 CLL surface solution R.Lenton ORL1F404.124 CLL 4.5 05/08/97 : Removed old boundary logical from namelist OSI1F405.9 CLL OPENNL and added constants for Gill OSI1F405.10 CLL ocean boundary routine. C.G. Jones OSI1F405.11 CLL 4.5 10/11/98 Read in biharmonic momentum and GM variables, and OOM1F405.53 CLL variables for Large scheme. M. Roberts OOM1F405.54 CLL 4.5 3.9.98 Add new variables for HADCM4 sea-ice scheme and ODC1F405.167 CLL remove cavitating fluid variables. ODC1F405.168 CLL Doug Cresswell and Jonathan Gregory ODC1F405.169 CLL @DYALLOC.4356 CLL programming standard : READNLST.10 CLL system components covered : READNLST.11 CLL purpose : READNLST.12 CLL Island information is intended to be held in dump READNLST.13 CLL READNLST.14 CLL READNLST.15 CLL READNLST.16 CLL READNLST.17 CLL Documentation : READNLST.18 CLL READNLST.19 CLL READNLST.20 CLLEND ----------------------------------------------------------------- READNLST.21 READNLST.22SUBROUTINE READNLST_OCEAN( 1@DYALLOC.4357 *CALL ARGSIZE
@DYALLOC.4358 *CALL ARGOCALL
@DYALLOC.4359 & ICODE, CMESSAGE, @DYALLOC.4360 & O_EXTCNST) @DYALLOC.4361 C--------------------------------------------------------------------- READNLST.24 C DEFINE GLOBAL DATA READNLST.25 C--------------------------------------------------------------------- READNLST.26 READNLST.27 C RH141293.72 IMPLICIT NONE RH141293.73 C RH141293.74 REAL AH_SI ! Coef of horizontal T mixing (si units) RH141293.75 & ,AM_SI ! Coef of horizontal U,V mixing (si units) RH141293.76 & ,AM0_SI ! } Coefs for lateral viscosity.. variation RH141293.77 & ,AM1_SI ! } with latitude (si units) RH141293.78 & ,FKPH_SI ! Coef of vertical T mixing (si units) RH141293.79 & ,FKPM_SI ! Coef of vertical U,V mixing (si units) RH141293.80 & ,ATHKDF_BI_SI ! Coefficient of biharmonic GM mixing (si units) OOM1F405.55 & ,BM_SI ! Coefficient of biharmonic U,V mixing (si units) OOM1F405.56 C RH141293.81 INTEGER N ! Index over segment counts RH141293.82 & ,NI ! Index over island count RH141293.83 & ,ISUM ! Sum of ISEG over all islands RH141293.84 C RH141293.85 *CALL OARRYSIZ
ORH6F401.11 *CALL TYPSIZE
@DYALLOC.4362 *CALL COCNINDX
PXORDER.42 *CALL TYPOCALL
@DYALLOC.4363 *CALL UMSCALAR
READNLST.30 *CALL CSUBMODL
GRB1F305.509 *CALL CHSUNITS
GRB1F305.510 *CALL CCONTROL
GRB1F305.511 INTEGER @DYALLOC.4364 & i_val ! Loop counter @DYALLOC.4365 &,j_val ! Loop counter @DYALLOC.4366 &,k_val ! loop counter @DYALLOC.4367 C @DYALLOC.4368 REAL READNLST.32 & O_EXTCNST(*) READNLST.33 C @DYALLOC.4369 INTEGER ICODE ! INOUT Error code @DYALLOC.4370 CHARACTER*(80) CMESSAGE ! INOUT Error message ONF0F304.10 C @DYALLOC.4372 READNLST.34 C--------------------------------------------------------------------- READNLST.35 C DEFINE NAMELIST INPUT READNLST.36 C--------------------------------------------------------------------- READNLST.37 C This section needs to type and dimension all run constants READNLST.38 C not already specified in Cox common blocks READNLST.39 NAMELIST /CONTRL/ NNERGY,NMIX,NTSI READNLST.40 &,NBLOCK,O_ADVECT_SCHEME OSY1F405.6 NAMELIST /EDDY/ READNLST.41 & AM_SI READNLST.43 &,AM0_SI,AM1_SI ORH1F305.156 &,AH_SI READNLST.48 &,FKPM_SI,FKPH_SI READNLST.50 &,FNUB_SI,FNU0_SI,KAPPA0_SI,DKAPPA_DZ_SI,STABLM_SI RW071293.3 &,max_qLarge_depth ! max depth allowed for quadratic Large (m) OLA0F404.7 &,crit_Ri ! critical Richardson no used for depth of OLA0F404.8 ! quadratic Large scheme OLA0F404.9 &,MAX_LARGE_DEPTH,CRIT_RI_FL ! Equivalent numbers for Full Large OOM1F405.58 &,AHI1_SI,AHI2_SI,AHI3_SI,SLOPE_MAX READNLST.56 &,ATHKDF1_SI,ATHKDF2_SI,ATHKDF3_SI OLA0F401.48 &,ATHKDF_BI_SI,BM_SI OOM1F405.57 ORH1F305.157 NAMELIST /TSTEPS/ READNLST.58 & DTTS,DTUV,DTSF READNLST.59 &,DTBT ORL1F404.125 %,PNU READNLST.60 &,RAT READNLST.62 ORH1F305.158 NAMELIST /PARMS/ ACOR,MXSCAN,SOR,CRIT,WGHT_DELPLUS ORL1F404.126 Namelist /SALIN/ SALREF,SALLOW,SALUP OJL1F405.89 NAMELIST /DIAGNL/ROWPRT,ALLROW,ISTRT,ISTOP, READNLST.65 & JRPRT,TSUVPRT,KKK,ANCILPRT READNLST.66 ORH1F305.159 NAMELIST /HANEYNL/ HANEY_SI READNLST.68 ORH1F305.160 NAMELIST /SOLARNL/ ETA1_SI,ETA2_SI,RSOL READNLST.71 ORH1F305.161 NAMELIST /MIXLAYNL/ LAMDA,DELTA_SI,EPSILON READNLST.74 ORH1F305.162 NAMELIST /OPENNL/ OBDY_GILL_MU,OBDY_GILL_LAMDA OSI1F405.12 ORH1F305.163 NAMELIST /IBOX/ ISIS,IEIS,JSIS,JEIS READNLST.79 ORH1F305.164 NAMELIST /SEAICENL/ OCC0F400.26 & EDDYDIFFN,EDDYDIFFS,SALICE,H0,AMXNORTH,AMXSOUTH,AICEMIN,HICEMIN ODC1F405.170 &,ah_ice,quad_ice_drag,hicestop,hiceslow,aicemizfry ODC1F405.171 OCC0F400.30 NAMELIST /CARBONNL/ PCO2_ATM_0 NT071293.22 &,C14TO12_ATM_0 NT071293.25 NAMELIST /CONVROUS/ ISROUS,IEROUS,JSROUS,JEROUS OOM2F403.11 ORH1F305.165 C READNLST.80 C--------------------------------------------------------------------- READNLST.81 C BEGIN EXECUTABLE CODE READNLST.82 C--------------------------------------------------------------------- READNLST.83 C READNLST.84 C--------------------------------------------------------------------- READNLST.85 C CODE MOVED TO THIS POSITION ASSUMING NLIST CALLED PRIOR TO CONFIG READNLST.86 C--------------------------------------------------------------------- READNLST.87 READNLST.88 C @DYALLOC.4373 C Initialise arrays to zero @DYALLOC.4374 C @DYALLOC.4375 DO j_val=1,LSEG @DYALLOC.4376 DO i_val=J_1,J_JMT ORH3F402.237 isz(i_val,j_val)=0 @DYALLOC.4378 END DO @DYALLOC.4379 END DO @DYALLOC.4380 C @DYALLOC.4381 DO i_val=1,NISLE @DYALLOC.4382 iseg(i_val)=0 @DYALLOC.4383 END DO @DYALLOC.4384 C @DYALLOC.4385 DO j_val=1,ISEGM @DYALLOC.4386 DO i_val=1,NISLE @DYALLOC.4387 isis(i_val,j_val)=0 @DYALLOC.4388 ieis(i_val,j_val)=0 @DYALLOC.4389 jsis(i_val,j_val)=0 @DYALLOC.4390 ieis(i_val,j_val)=0 @DYALLOC.4391 END DO @DYALLOC.4392 END DO @DYALLOC.4393 C @DYALLOC.4394 DO k_val=1,KM @DYALLOC.4395 DO j_val=1,LSEGF @DYALLOC.4396 DO i_val=1,NJTBFT @DYALLOC.4397 istf(i_val,j_val,k_val)=0 @DYALLOC.4398 ietf(i_val,j_val,k_val)=0 @DYALLOC.4399 END DO @DYALLOC.4400 END DO @DYALLOC.4401 END DO @DYALLOC.4402 C @DYALLOC.4403 DO k_val=1,KM @DYALLOC.4404 DO j_val=1,LSEGF @DYALLOC.4405 DO i_val=1,NJTBFU @DYALLOC.4406 isuf(i_val,j_val,k_val)=0 @DYALLOC.4407 ieuf(i_val,j_val,k_val)=0 @DYALLOC.4408 END DO @DYALLOC.4409 END DO @DYALLOC.4410 END DO @DYALLOC.4411 C @DYALLOC.4412 DO j_val=1,LSEGF @DYALLOC.4413 DO i_val=1,NJTBFU @DYALLOC.4414 iszf(i_val,j_val)=0 @DYALLOC.4415 iezf(i_val,j_val)=0 @DYALLOC.4416 END DO @DYALLOC.4417 END DO @DYALLOC.4418 C @DYALLOC.4419 READNLST.92 C--------------------------------------------------------------------- READNLST.93 C READ IN RUN PARAMETERS READNLST.94 C--------------------------------------------------------------------- READNLST.95 READNLST.96 READ (5,CONTRL) READNLST.97 WRITE(6,CONTRL) READNLST.98 READ (5,EDDY) READNLST.99 WRITE(6,EDDY) READNLST.100 IF (.NOT.L_OLATVISC) THEN ORH1F305.166 AM=AM_SI*10000. ! CM2S-1 ORH1F305.167 AM0=0. ORH1F305.168 AM1=0. ORH1F305.169 ELSE ORH1F305.170 AM=0. ORH1F305.171 AM0=AM0_SI*10000. ! CM2S-1 ORH1F305.172 AM1=AM1_SI*10000. ! CM2S-1 ORH1F305.173 ENDIF ORH1F305.174 AH=AH_SI*10000. ! CM2S-1 READNLST.108 IF (.NOT.L_ORICHARD) THEN ORH1F305.175 FKPM=FKPM_SI*10000. ! CM2S-1 ORH1F305.176 FKPH=FKPH_SI*10000. ! CM2S-1 ORH1F305.177 ELSE ORH1F305.178 FKPM=0. ORH1F305.179 FKPH=0. ORH1F305.180 ENDIF ORH1F305.181 IF (L_OBIHARMGM) THEN OOM1F405.59 ATHKDF_BI=ATHKDF_BI_SI*1.e8 OOM1F405.60 ELSE OOM1F405.61 ATHKDF_BI=0. OOM1F405.62 ENDIF OOM1F405.63 C Biharmonic coeff for momentum needs to be negative OOM1F405.64 IF (L_OBIMOM) THEN OOM1F405.65 BM=-BM_SI*1.e8 OOM1F405.66 ELSE OOM1F405.67 BM=0. OOM1F405.68 ENDIF OOM1F405.69 ORH1F305.182 READ (5,TSTEPS) READNLST.113 WRITE(6,TSTEPS) READNLST.114 PNU2M=1.-2.*PNU READNLST.115 READ (5,PARMS) READNLST.116 WRITE(6,PARMS) READNLST.117 ORH1F305.183 READ (5,SALIN) OJL1F405.90 WRITE(6,SALIN) OJL1F405.91 salup=aint(salup*100000-3500)/100000.0 OJL1F405.92 sallow=aint(sallow*100000-3500)/100000.0 OJL1F405.93 OJL1F405.94 IF (L_OSOLAR) THEN ORH1F305.184 READ(5,SOLARNL) ORH1F305.185 WRITE(6,SOLARNL) ORH1F305.186 ELSE ORH1F305.187 ETA1_SI=0.0 ORH1F305.188 ETA2_SI=0.0 ORH1F305.189 RSOL =0.0 ORH1F305.190 ENDIF ORH1F305.191 ORH1F305.192 IF (L_OMIXLAY) THEN ORH1F305.193 READ(5,MIXLAYNL) ORH1F305.194 WRITE(6,MIXLAYNL) ORH1F305.195 ELSE ORH1F305.196 LAMDA = 0.0 ORH1F305.197 DELTA_SI = 0.0 ORH1F305.198 EPSILON = 0.0 ORH1F305.199 ENDIF ORH1F305.200 ORH1F305.201 IF (L_OHANEY) THEN ORH1F305.202 READ(5,HANEYNL) ORH1F305.203 WRITE(6,HANEYNL) ORH1F305.204 ELSE ORH1F305.205 HANEY_SI = 0.0 ORH1F305.206 ENDIF ORH1F305.207 ORH1F305.208 IF (L_SEAICE) THEN OCC0F400.31 READ(5,SEAICENL) OCC0F400.32 WRITE(6,SEAICENL) OCC0F400.33 ELSE OCC0F400.34 EDDYDIFFN = 0.0 OCC0F400.35 EDDYDIFFS = 0.0 OCC0F400.36 SALICE = 0.0 OCC0F400.37 H0 = 0.0 OCC0F400.38 AMXNORTH = 0.0 OCC0F400.39 AMXSOUTH = 0.0 OCC0F400.40 AICEMIN = 0.0 OCC0F400.41 HICEMIN = 0.0 OCC0F400.42 AH_ICE = 0.0 OCC0F400.43 quad_ice_drag=0.0 ODC1F405.172 hicestop=0.0 ODC1F405.173 hiceslow=0.0 ODC1F405.174 aicemizfry=0.0 ODC1F405.175 ENDIF OCC0F400.52 OCC0F400.53 ORH1F305.209 IF (L_OPENBC) THEN ORH1F305.210 READ(5,OPENNL) ORH1F305.211 WRITE(6,OPENNL) ORH1F305.212 ENDIF OSI1F405.13 ORH1F305.216 DO k_val=1,KM ORH2F401.87 KKK(k_val)=0 ORH2F401.88 END DO ORH2F401.89 READ(5,DIAGNL) READNLST.134 WRITE(6,DIAGNL) READNLST.135 OOM2F403.12 IF (L_OCONVROUS) THEN OOM2F403.13 READ(5,CONVROUS) OOM2F403.14 WRITE(6,CONVROUS) OOM2F403.15 ENDIF OOM2F403.16 READNLST.136 C--------------------------------------------------------------------- READNLST.137 C COPY INFORMATION INTO DUMP HEADER READNLST.138 C--------------------------------------------------------------------- READNLST.139 C READNLST.140 C O_INTHD(22)= READNLST.141 C O_REALHD(37)= READNLST.142 C READNLST.143 IF (L_OISLANDS) THEN ORH1F305.217 C--------------------------------------------------------------------- READNLST.145 C COPY ISLAND BOX CORNER POINT INDICES (IBOX NOW HELD IN DUMP) READNLST.146 C--------------------------------------------------------------------- READNLST.147 C READNLST.148 DO N=1,ISEGM READNLST.149 DO NI=1,NISLE READNLST.150 ISIS(NI,N)=0 READNLST.151 IEIS(NI,N)=0 READNLST.152 JSIS(NI,N)=0 READNLST.153 JEIS(NI,N)=0 READNLST.154 END DO READNLST.155 END DO READNLST.156 READNLST.157 ISUM=0 READNLST.158 DO NI=1,NISLE READNLST.159 ISEG(NI)=O_EXTCNST(1+NI+ISUM*4) READNLST.160 DO N=1,ISEG(NI) READNLST.161 ISIS(NI,N)=O_EXTCNST(1+NI+ISUM*4+N) READNLST.162 IEIS(NI,N)=O_EXTCNST(1+NI+ISUM*4+ISEG(NI)*1+N) READNLST.163 JSIS(NI,N)=O_EXTCNST(1+NI+ISUM*4+ISEG(NI)*2+N) READNLST.164 JEIS(NI,N)=O_EXTCNST(1+NI+ISUM*4+ISEG(NI)*3+N) READNLST.165 END DO READNLST.166 ISUM=ISUM+ISEG(NI) READNLST.167 END DO READNLST.168 WRITE(6,IBOX) READNLST.169 ENDIF ORH1F305.218 ORH1F305.219 ! initialise variables which might not be read from namelist ORH1F305.220 PCO2_ATM_0 = 0.0 ORH1F305.221 C14TO12_ATM_0 = 0.0 ORH1F305.222 ORH1F305.223 IF (L_OCARBON) THEN ORH1F305.224 READ(5,CARBONNL) ORH1F305.225 WRITE(6,CARBONNL) ORH1F305.226 ENDIF ORH1F305.227 READNLST.171 C Send an error message and code to stop further processing ORH1F304.112 C if there are insufficient ocean rows per ocean block. ORH1F304.113 IF (INT(JMTM1/NBLOCK).LT.3) THEN ORH1F304.114 ICODE = 99 ORH1F304.115 CMESSAGE = 'TOO FEW ROWS PER PROCESSOR' ORH1F304.116 END IF ORH1F304.117 RETURN READNLST.172 END READNLST.173 *ENDIF @DYALLOC.4420