*IF DEF,CONTROL OCNARYPT.2 C ******************************COPYRIGHT****************************** GTS2F400.6967 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.6968 C GTS2F400.6969 C Use, duplication or disclosure of this code is subject to the GTS2F400.6970 C restrictions as set forth in the contract. GTS2F400.6971 C GTS2F400.6972 C Meteorological Office GTS2F400.6973 C London Road GTS2F400.6974 C BRACKNELL GTS2F400.6975 C Berkshire UK GTS2F400.6976 C RG12 2SZ GTS2F400.6977 C GTS2F400.6978 C If no contract has been raised with this copy of the code, the use, GTS2F400.6979 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.6980 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.6981 C Modelling at the above address. GTS2F400.6982 C ******************************COPYRIGHT****************************** GTS2F400.6983 C GTS2F400.6984SUBROUTINE OCNARYPT ( 1SF011193.74 *CALL ARGSIZE
SF011193.75 *LEN_ARRAY,ICODE,CMESSAGE) SF011193.76 CLL OCNARYPT.4 CLL Subroutine OCNARYPT OCNARYPT.5 CLL OCNARYPT.6 CLL Purpose: set pointers to start positions in ocean "super arrays" OCNARYPT.7 CLL which are used for dynamic allocation of memory. OCNARYPT.8 CLL OCNARYPT.9 CLL The arrays involved are in COMDECKs TYPOCFLW, TYPOCINC, TYPOCONE OCNARYPT.10 CLL TYPOCFLD, TYPOCFIL OCNARYPT.11 CLL If any arrays are added to, removed from, or have changed lengths OCNARYPT.12 CLL this routine must be changed as well. OCNARYPT.13 CLL OCNARYPT.14 CLL Their dimensions are calculated from primary model dimensions OCNARYPT.15 CLL which are stored in a COMDECK called from TYPOCPAR. OCNARYPT.16 CLL OCNARYPT.17 CLL Author: S J Foreman, 15 June 1993 OCNARYPT.18 CLL Version 1.0: introduction of dynamic allocation for ocean arrays. OCNARYPT.19 CLL 3.4 16/6/94 : Change CHARACTER*(*) to CHARACTER*(80) N.Farnon ANF0F304.32 CLL 4.4 15/06/97 : Introduced new pointers used by the delplus ORL1F404.135 CLL operator in the Free Surface solution. R.Lenton ORL1F404.136 CLL 4.5 14/08/97 Removed the calculations for the pointers.. OSI1F405.45 CLL jocp_tbound_n,.. C.G. Jones OSI1F405.46 CLL 4.5 3/11/98 added calculations for pointers jocp_csrjp ... OOM3F405.51 CLL M. Roberts OOM3F405.52 CLL OCNARYPT.20 IMPLICIT NONE OCNARYPT.21 C OCNARYPT.22 C Define parameters to size the model. OCNARYPT.23 C OCNARYPT.24 *CALL TYPOCPAR
OCNARYPT.25 *CALL COMOCBAS
OCNARYPT.26 *CALL COMOCASZ
OCNARYPT.27 C OCNARYPT.28 C Pointers to arrays are in COMMON OCNARYPT.29 C OCNARYPT.30 *CALL TYPOCDPT
OCNARYPT.31 *CALL COCNINDX
ORH6F402.81 C OCNARYPT.32 C DECLARE LOGICALS ORL1F404.137 *CALL CNTLOCN
ORL1F404.138 C ORL1F404.139 ORL1F404.140 C Define arguments OCNARYPT.33 C OCNARYPT.34 INTEGER OCNARYPT.35 & LEN_ARRAY ! OUT Length of ocean super-array OCNARYPT.36 &,ICODE ! OUT Error code OCNARYPT.37 C OCNARYPT.38 CHARACTER*(80) CMESSAGE ! OUT Error message ANF0F304.33 C OCNARYPT.40 C OCNARYPT.41 C Declare local variables OCNARYPT.42 C OCNARYPT.43 INTEGER OCNARYPT.44 & icount ! Next free position in super array OCNARYPT.45 C OCNARYPT.46 C Initialize error code and message OCNARYPT.47 ICODE = 0 OCNARYPT.48 CMESSAGE = ' ' OCNARYPT.49 C OCNARYPT.50 C Add lengths in turn. OCNARYPT.51 C OCNARYPT.52 icount=1 OCNARYPT.53 C OCNARYPT.54 C==================== Pointers for COMDECK TYPOCFLW ============== OCNARYPT.55 C OCNARYPT.56 C OCNARYPT.65 jocp_kar=icount OCNARYPT.66 icount=icount+KM OCNARYPT.67 jocp_isz=icount OCNARYPT.81 icount=icount+JMT*LSEG OCNARYPT.82 C OCNARYPT.83 jocp_iez=icount OCNARYPT.84 icount=icount+JMT*LSEG OCNARYPT.85 C OCNARYPT.86 C ORL1F404.141 jocp_ise=icount ORL1F404.142 icount=icount+JMT*LSEGFS ORL1F404.143 C ORL1F404.144 jocp_iee=icount ORL1F404.145 icount=icount+JMT*LSEGFS ORL1F404.146 C ORL1F404.147 jocp_isu=icount ORL1F404.148 icount=icount+JMTM1*LSEGFS ORL1F404.149 C ORL1F404.150 jocp_ieu=icount ORL1F404.151 icount=icount+JMTM1*LSEGFS ORL1F404.152 C ORL1F404.153 jocp_lse=icount ORL1F404.154 icount=icount+JMT ORL1F404.155 C ORL1F404.156 jocp_lsu=icount ORL1F404.157 icount=icount+JMTM1 ORL1F404.158 jocp_iseg=icount OCNARYPT.87 icount=icount+NISLE OCNARYPT.88 C OCNARYPT.89 jocp_istf=icount OCNARYPT.90 icount=icount+NJTBFT*LSEGF*KM OCNARYPT.91 C OCNARYPT.92 jocp_ietf=icount OCNARYPT.93 icount=icount+NJTBFT*LSEGF*KM OCNARYPT.94 C OCNARYPT.95 jocp_isuf=icount OCNARYPT.96 icount=icount+NJTBFU*LSEGF*KM OCNARYPT.97 C OCNARYPT.98 jocp_ieuf=icount OCNARYPT.99 icount=icount+NJTBFU*LSEGF*KM OCNARYPT.100 C OCNARYPT.101 jocp_iszf=icount OCNARYPT.102 icount=icount+NJTBFU*LSEGF OCNARYPT.103 C OCNARYPT.104 jocp_iezf=icount OCNARYPT.105 icount=icount+NJTBFU*LSEGF OCNARYPT.106 C OCNARYPT.107 jocp_spsin=icount OCNARYPT.108 icount=icount+IMT OCNARYPT.109 C OCNARYPT.110 jocp_spcos=icount OCNARYPT.111 icount=icount+IMT OCNARYPT.112 C OCNARYPT.113 C================= End of pointers for COMDECK TYPOCFLW OCNARYPT.122 C OCNARYPT.123 C================= Pointers for COMDECK TYPOCONE ======================= OCNARYPT.124 jocp_dxt=icount OCNARYPT.125 icount=icount+IMT OCNARYPT.126 jocp_dxtr=icount OCNARYPT.127 icount=icount+IMT OCNARYPT.128 jocp_dxt2r=icount OCNARYPT.129 icount=icount+IMT OCNARYPT.130 jocp_dxu=icount OCNARYPT.131 icount=icount+IMT OCNARYPT.132 jocp_dxur=icount OCNARYPT.133 icount=icount+IMT OCNARYPT.134 jocp_dxu2r=icount OCNARYPT.135 icount=icount+IMT OCNARYPT.136 jocp_dxu4r=icount OCNARYPT.137 icount=icount+IMT OCNARYPT.138 jocp_dxt4r=icount OCNARYPT.139 icount=icount+IMT OCNARYPT.140 jocp_dyt=icount OCNARYPT.141 icount=icount+JMT OCNARYPT.142 jocp_dytr=icount OCNARYPT.143 icount=icount+JMT OCNARYPT.144 jocp_dyt2r=icount OCNARYPT.145 icount=icount+JMT OCNARYPT.146 jocp_dyu=icount OCNARYPT.147 icount=icount+JMT OCNARYPT.148 jocp_dyur=icount OCNARYPT.149 icount=icount+JMT OCNARYPT.150 jocp_dyu2r=icount OCNARYPT.151 icount=icount+JMT OCNARYPT.152 jocp_dyu2rj=icount ORH3F403.320 icount=icount+1 ORH3F403.321 jocp_dyu4r=icount OCNARYPT.153 icount=icount+JMT OCNARYPT.154 jocp_dyt4r=icount OCNARYPT.155 icount=icount+JMT OCNARYPT.156 jocp_cs=icount OCNARYPT.157 icount=icount+JMT OCNARYPT.158 jocp_csr=icount OCNARYPT.159 icount=icount+JMT OCNARYPT.160 jocp_csrj=icount ORH3F403.322 icount=icount+1 ORH3F403.323 jocp_cst=icount OCNARYPT.161 icount=icount+JMT OCNARYPT.162 jocp_cstr=icount OCNARYPT.163 icount=icount+JMT OCNARYPT.164 jocp_phi=icount OCNARYPT.165 icount=icount+JMT OCNARYPT.166 jocp_phit=icount OCNARYPT.167 icount=icount+JMT OCNARYPT.168 jocp_sine=icount OCNARYPT.169 icount=icount+JMT OCNARYPT.170 jocp_tng=icount OCNARYPT.171 icount=icount+JMT OCNARYPT.172 jocp_c2dz=icount OCNARYPT.173 icount=icount+KM OCNARYPT.174 jocp_dz=icount OCNARYPT.175 icount=icount+KM OCNARYPT.176 jocp_dz2r=icount OCNARYPT.177 icount=icount+KM OCNARYPT.178 jocp_eeh=icount OCNARYPT.179 icount=icount+KM OCNARYPT.180 jocp_eem=icount OCNARYPT.181 icount=icount+KM OCNARYPT.182 jocp_ffh=icount OCNARYPT.183 icount=icount+KM OCNARYPT.184 jocp_ffm=icount OCNARYPT.185 icount=icount+KM OCNARYPT.186 jocp_zdz=icount OCNARYPT.187 icount=icount+KM OCNARYPT.188 jocp_dzz=icount OCNARYPT.189 icount=icount+KMP1 OCNARYPT.190 jocp_dzz2r=icount OCNARYPT.191 icount=icount+KMP1 OCNARYPT.192 jocp_zdzz=icount OCNARYPT.193 icount=icount+KMP1 OCNARYPT.194 jocp_sol_pen=icount OCNARYPT.195 icount=icount+1+KM OCNARYPT.196 jocp_dttsa=icount OCNARYPT.197 icount=icount+km OCNARYPT.198 jocp_rz=icount OCNARYPT.199 icount=icount+KM OCNARYPT.200 jocp_c2rz=icount OCNARYPT.201 icount=icount+KM OCNARYPT.202 jocp_rzz=icount OCNARYPT.203 icount=icount+KMP1 OCNARYPT.204 jocp_rzz2r=icount OCNARYPT.205 icount=icount+KMP1 OCNARYPT.206 jocp_delpsl=icount OCNARYPT.207 icount=icount+1+KM OCNARYPT.208 jocp_decay=icount OCNARYPT.209 icount=icount+KM OCNARYPT.210 jocp_ahi=icount OCNARYPT.211 icount=icount+KM OCNARYPT.212 jocp_amt=icount OCNARYPT.213 icount=icount+JMT OCNARYPT.214 jocp_amu=icount OCNARYPT.215 icount=icount+JMTM1 OCNARYPT.216 jocp_kappabsi=icount RW071293.26 icount=icount+KM RW071293.27 jocp_cosine=icount OCNARYPT.217 icount=icount+IMT OCNARYPT.218 jocp_rlambda=icount OCNARYPT.219 icount=icount+IMT OCNARYPT.220 jocp_eddydiff=icount OCNARYPT.221 icount=icount+JMT OCNARYPT.222 jocp_amx=icount OCNARYPT.223 icount=icount+JMT OCNARYPT.224 jocp_bbu=icount ORL1F404.159 icount=icount+JMTM1 ORL1F404.160 jocp_ccu=icount ORL1F404.161 icount=icount+JMTM1 ORL1F404.162 jocp_ddu=icount ORL1F404.163 icount=icount+JMTM1 ORL1F404.164 jocp_ggu=icount ORL1F404.165 icount=icount+JMTM1 ORL1F404.166 jocp_hhu=icount ORL1F404.167 icount=icount+JMTM1 ORL1F404.168 jocp_athkdf=icount OLA0F401.33 icount=icount+KM OLA0F401.34 jocp_kri=icount OLA2F403.38 icount=icount+2 OLA2F403.39 jocp_csrjp=icount OOM3F405.53 icount=icount+1 OOM3F405.54 jocp_dyu2rjp=icount OOM3F405.55 icount=icount+1 OOM3F405.56 jocp_cstjp=icount OOM3F405.57 icount=icount+1 OOM3F405.58 jocp_dytrjp=icount OOM3F405.59 icount=icount+1 OOM3F405.60 jocp_csjm=icount OOM3F405.61 icount=icount+1 OOM3F405.62 jocp_dyurjm=icount OOM3F405.63 icount=icount+1 OOM3F405.64 JOCP_MAXLARGELEVELS=ICOUNT OOM1F405.422 ICOUNT=ICOUNT+1 OOM1F405.423 JOCP_NOLEVSINLAYER=ICOUNT OOM1F405.424 ICOUNT=ICOUNT+1 OOM1F405.425 C====================== End of pointers for COMDECK TYPOCONE ======= OCNARYPT.225 C OCNARYPT.226 C==== Pointers for COMDECK TYPOCFLD================================ OCNARYPT.227 jocp_hr=icount OCNARYPT.228 icount=icount+IMT*JMT OCNARYPT.229 jocp_hrj=icount ORH3F403.324 icount=icount+IMT ORH3F403.325 jocp_fkmp=icount ORH6F402.51 icount=icount+IMT*JMT ORH6F402.52 jocp_fkmq_global=icount ORH6F402.53 icount=icount+IMT*JMT_GLOBAL ORH6F402.54 jocp_fkmq=icount OCNARYPT.230 icount=icount+IMT*JMT OCNARYPT.231 jocp_coriolis=icount OCNARYPT.232 icount=icount+IMT*JMT OCNARYPT.233 jocp_em=icount OCNARYPT.234 icount=icount+IMT*JMT OCNARYPT.235 jocp_hrjp=icount OOM3F405.65 icount=icount+IMT OOM3F405.66 jocp_pjp=icount OOM3F405.67 icount=icount+IMT OOM3F405.68 jocp_pbjp=icount OOM3F405.69 icount=icount+IMT OOM3F405.70 jocp_fkmqjp=icount OOM3F405.71 icount=icount+IMT OOM3F405.72 C==================== End of pointers for TYPOCFLD =================== OCNARYPT.244 C OCNARYPT.245 C ==================== Pointers for COMDECK TYPOCFIL ================= OCNARYPT.246 jocp_icbase=icount OCNARYPT.247 icount=icount+IMTP1 OCNARYPT.248 jocp_idbase=icount OCNARYPT.249 icount=icount+IMTP1 OCNARYPT.250 jocp_ind=icount OCNARYPT.251 icount=icount+IMTX8 OCNARYPT.252 jocp_cossav=icount OCNARYPT.253 icount=icount+LQMSUM OCNARYPT.254 jocp_denmsv=icount OCNARYPT.255 icount=icount+LHSUM OCNARYPT.256 jocp_cosnpi=icount OCNARYPT.257 icount=icount+IMT OCNARYPT.258 JP_MCU=icount ORH1F405.1 icount=icount+JMT ORH1F405.2 JP_MCT=icount ORH1F405.3 icount=icount+JMT ORH1F405.4 JP_MCF=icount ORH1F405.5 icount=icount+1 ORH1F405.6 JP_MPU=icount ORH1F405.7 icount=icount+KM*LSEGF*JMT ORH1F405.8 JP_MPT=icount ORH1F405.9 icount=icount+KM*LSEGF*JMT ORH1F405.10 JP_MPF=icount ORH1F405.11 icount=icount+LSEGF*JMT ORH1F405.12 JP_MKU=icount ORH1F405.13 icount=icount+KM*LSEGF*JMT ORH1F405.14 JP_MKT=icount ORH1F405.15 icount=icount+KM*LSEGF*JMT ORH1F405.16 JP_MSU=icount ORH1F405.17 icount=icount+KM*LSEGF*JMT ORH1F405.18 JP_MST=icount ORH1F405.19 icount=icount+KM*LSEGF*JMT ORH1F405.20 JP_MSF=icount ORH1F405.21 icount=icount+LSEGF*JMT ORH1F405.22 JP_MRF=icount ORH1F405.23 icount=icount+LSEGF*JMT ORH1F405.24 JP_SCU=icount ORH1F405.25 icount=icount+JMT ORH1F405.26 JP_SCT=icount ORH1F405.27 icount=icount+JMT ORH1F405.28 JP_SCF=icount ORH1F405.29 icount=icount+1 ORH1F405.30 C =================== End of pointers for COMDECK TYPOCFIL =========== OCNARYPT.261 C OCNARYPT.262 C ==== Pointers for COMDECK TYPOCMEA ================================= OCNARYPT.263 jocp_isht=icount OCNARYPT.264 icount=icount+JMMD*LSEGC*LDIV OCNARYPT.265 jocp_IEHT=icount OCNARYPT.266 icount=icount+JMMD*LSEGC*LDIV OCNARYPT.267 C ==== End of pointers for TYPOCMEA ================================= OCNARYPT.268 C OCNARYPT.269 C ================ Pointers for COMDECK TYPOCAC ==================== OCNARYPT.270 jocp_o_lon_m=icount OCNARYPT.271 icount=icount+IMT OCNARYPT.272 jocp_o_lat_m=icount OCNARYPT.273 icount=icount+JMT OCNARYPT.274 jocp_o_dep_levs_m=icount OCNARYPT.275 icount=icount+KM OCNARYPT.276 C ====================== End of pointers for TYPOCAC ================== OCNARYPT.277 C NT080993.9 C ==== Pointers for COMDECK TYPOCBIO NT080993.10 jocp_daylen=icount NT080993.11 icount=icount+JMT*360 NT080993.12 jocp_dlco=icount NT080993.13 icount=icount+KM*3 NT080993.14 C NT080993.15 C Note that the 360 in the dimensioning of DAYLEN refers to NT080993.16 C number of days in a climatological year - ie 360-day year is NT080993.17 C assumed as biological model would only be using for climate NT080993.18 C runs. NT080993.19 C NT080993.20 C ==== End of pointers for COMDECK TYPOCBIO ========================= NT080993.21 C OCNARYPT.278 C Now subtract one from icount to get total length of array. OCNARYPT.279 C OCNARYPT.280 LEN_ARRAY=icount-1 OCNARYPT.281 RETURN OCNARYPT.282 END OCNARYPT.283 *ENDIF CONTROL OCNARYPT.284