*IF DEF,CONTROL,OR,DEF,RECON,OR,DEF,CAMDUMP,OR,DEF,FLDOP GAV0F405.90 C ******************************COPYRIGHT****************************** GTS2F400.12480 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.12481 C GTS2F400.12482 C Use, duplication or disclosure of this code is subject to the GTS2F400.12483 C restrictions as set forth in the contract. GTS2F400.12484 C GTS2F400.12485 C Meteorological Office GTS2F400.12486 C London Road GTS2F400.12487 C BRACKNELL GTS2F400.12488 C Berkshire UK GTS2F400.12489 C RG12 2SZ GTS2F400.12490 C GTS2F400.12491 C If no contract has been raised with this copy of the code, the use, GTS2F400.12492 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.12493 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.12494 C Modelling at the above address. GTS2F400.12495 C GTS2F400.12496 !+Decode the STASH level code LEVCOD1.3 ! Subroutine Interface: LEVCOD1.4SUBROUTINE LEVCOD(ILIN,ILOUT,ErrorStatus,CMESSAGE) 9GSS3F401.647 IMPLICIT NONE LEVCOD1.7 ! Description: LEVCOD1.8 ! Sets ILOUT to an appropriate level size according to the value of IL LEVCOD1.9 ! Level sizes are parametrised in comdeck MODEL. LEVCOD1.10 ! LEVCOD1.12 ! Current code owner: S.J.Swarbrick LEVCOD1.13 ! LEVCOD1.14 ! History: LEVCOD1.15 ! Version Date Comment LEVCOD1.16 ! ======= ==== ======= LEVCOD1.17 ! 3.5 Mar. 95 Original code. S.J.Swarbrick LEVCOD1.18 ! 4.1 Apr. 96 Inclusion of wave model codes GSS3F401.648 ! S.J.Swarbrick GSS3F401.649 ! 4.5 18/08/98 Added DEF,FLDOP (A Van der Wal) GAV0F405.91 ! LEVCOD1.19 ! Code description: LEVCOD1.20 ! FORTRAN 77 + common Fortran 90 extensions. LEVCOD1.21 ! Written to UM programming standards version 7. LEVCOD1.22 ! LEVCOD1.23 ! System component covered: LEVCOD1.24 ! System task: Sub-Models Project LEVCOD1.25 ! LEVCOD1.26 ! Global variables: LEVCOD1.27 LEVCOD1.28 *CALL CSUBMODL
LEVCOD1.29 *CALL VERSION
LEVCOD1.30 *CALL TYPSIZE
GSS3F401.650 *CALL MODEL
GSS3F401.651 *CALL CNTLATM
GSS3F401.652 LEVCOD1.33 ! Subroutine arguments: LEVCOD1.34 ! Scalar arguments with intent(in): GSS3F401.653 INTEGER ILIN ! Model level code LEVCOD1.38 LEVCOD1.39 ! Scalar arguments with intent(out): LEVCOD1.40 INTEGER ILOUT ! An actual level LEVCOD1.42 CHARACTER*80 CMESSAGE GSS3F401.654 LEVCOD1.43 ! Local scalars: LEVCOD1.44 INTEGER I LEVCOD1.46 INTEGER J LEVCOD1.47 GSS3F401.655 ! ErrorStatus: GSS3F401.656 INTEGER ErrorStatus GSS3F401.657 LEVCOD1.48 !- End of Header --------------------------------------------------- LEVCOD1.49 LEVCOD1.50 IF(ILIN.EQ.1) THEN LEVCOD1.51 ! First atmos level GSS3F401.658 ILOUT=1 LEVCOD1.52 ELSE IF(ILIN.EQ.2) THEN LEVCOD1.53 ! Top atmos level GSS3F401.659 ILOUT=P_LEVELS LEVCOD1.54 ELSE IF(ILIN.EQ.3) THEN LEVCOD1.55 ! Top wet level GSS3F401.660 ILOUT=Q_LEVELS LEVCOD1.56 ELSE IF(ILIN.EQ.4) THEN LEVCOD1.57 ILOUT=P_LEVELS-1 LEVCOD1.58 ELSE IF(ILIN.EQ.5) THEN LEVCOD1.59 ! First boundary layer level GSS3F401.661 ILOUT=MIN(1,BL_LEVELS) LEVCOD1.60 ELSE IF(ILIN.EQ.6) THEN LEVCOD1.61 ! Last boundary layer level GSS3F401.662 ILOUT=BL_LEVELS LEVCOD1.62 ELSE IF(ILIN.EQ.7) THEN LEVCOD1.63 ILOUT=BL_LEVELS+1 LEVCOD1.64 ELSE IF(ILIN.EQ.8) THEN LEVCOD1.65 ! First soil level GSS3F401.663 ILOUT=MIN(1,ST_LEVELS) GSS3F401.664 ELSE IF(ILIN.EQ.9) THEN LEVCOD1.67 ! Last soil level GSS3F401.665 ILOUT=ST_LEVELS GSS3F401.666 ELSE IF(ILIN.EQ.10) THEN LEVCOD1.69 ! First tracer level GSS3F401.667 ILOUT=P_LEVELS-TR_LEVELS+1 LEVCOD1.70 ELSE IF(ILIN.EQ.11) THEN LEVCOD1.71 ! Last tracer level GSS3F401.668 ILOUT=P_LEVELS LEVCOD1.72 ELSE IF(ILIN.EQ.12) THEN LEVCOD1.73 ILOUT=P_LEVELS+1 LEVCOD1.74 ELSE IF(ILIN.EQ.13) THEN LEVCOD1.75 ! First gravity wave drag level GSS3F401.669 ILOUT=StLevGWdrag LEVCOD1.76 ELSE IF(ILIN.EQ.14) THEN LEVCOD1.77 ! Last gravity wave drag level GSS3F401.670 ILOUT=P_LEVELS LEVCOD1.78 ELSE IF(ILIN.EQ.15) THEN LEVCOD1.79 ILOUT=BotVDiffLev LEVCOD1.80 ELSE IF(ILIN.EQ.16) THEN LEVCOD1.81 ILOUT=TopVDiffLev-1 LEVCOD1.82 ELSE IF(ILIN.EQ.17) THEN LEVCOD1.83 ILOUT=TopVDiffLev LEVCOD1.84 ELSE IF(ILIN.EQ.18) THEN LEVCOD1.85 ILOUT=BL_LEVELS-1 LEVCOD1.86 ELSE IF(ILIN.EQ.19) THEN LEVCOD1.87 ILOUT=P_LEVELS+1 LEVCOD1.88 ELSE IF(ILIN.EQ.20) THEN LEVCOD1.89 ILOUT=MIN(2,ST_LEVELS) GSS3F401.671 ELSE IF(ILIN.EQ.21) THEN LEVCOD1.91 ILOUT=1 LEVCOD1.92 ELSE IF(ILIN.EQ.22) THEN LEVCOD1.93 ILOUT=NLEVSO LEVCOD1.94 ELSE IF(ILIN.EQ.23) THEN LEVCOD1.95 ILOUT=OZONE_LEVELS LEVCOD1.96 ELSE IF(ILIN.EQ.24) THEN LEVCOD1.97 ILOUT=P_LEVELS*H_SWBANDS LEVCOD1.98 ELSE IF(ILIN.EQ.25) THEN LEVCOD1.99 ILOUT=(P_LEVELS+1)*H_SWBANDS LEVCOD1.100 ELSE IF(ILIN.EQ.26) THEN LEVCOD1.101 ILOUT=Q_LEVELS*H_SWBANDS LEVCOD1.102 ELSE IF(ILIN.EQ.27) THEN LEVCOD1.103 ILOUT=P_LEVELS*H_LWBANDS LEVCOD1.104 ELSE IF(ILIN.EQ.28) THEN LEVCOD1.105 ILOUT=(P_LEVELS+1)*H_LWBANDS LEVCOD1.106 ELSE IF(ILIN.EQ.29) THEN LEVCOD1.107 ILOUT=Q_LEVELS*H_LWBANDS LEVCOD1.108 ELSE IF(ILIN.EQ.30) THEN LEVCOD1.109 ILOUT=2 LEVCOD1.110 ELSE IF(ILIN.EQ.32) THEN LEVCOD1.113 ILOUT=H_SWBANDS LEVCOD1.114 ELSE IF(ILIN.EQ.33) THEN LEVCOD1.115 ILOUT=H_LWBANDS LEVCOD1.116 ELSE IF(ILIN.EQ.34) THEN LEVCOD1.117 ILOUT=SM_LEVELS GSS3F401.672 ELSE IF(ILIN.EQ.35) THEN LEVCOD1.119 ILOUT=CLOUD_LEVELS LEVCOD1.120 ELSE IF(ILIN.EQ.36) THEN GSS3F401.673 ! Wave model first level (direction) GSS3F401.674 ILOUT=1 GSS3F401.675 ELSE IF(ILIN.EQ.37) THEN GSS3F401.676 ! Wave model last level (direction) GSS3F401.677 ILOUT=NANG GSS3F401.678 ELSE IF(ILIN.EQ.41) THEN GSS1F400.1461 ILOUT=OASLEV(1) GSS1F400.1462 ! Allow room for expansion of ocean assimilation groups. GSS1F400.1463 ELSE IF(ILIN.EQ.42) THEN GSS1F400.1464 ILOUT=OASLEV(2) GSS1F400.1465 ! Allow room for expansion of ocean assimilation groups. GSS1F400.1466 ELSE IF(ILIN.EQ.43) THEN GSS1F400.1467 ILOUT=OASLEV(3) GSS1F400.1468 ! Allow room for expansion of ocean assimilation groups. GSS1F400.1469 ELSE IF(ILIN.EQ.44) THEN GSS1F400.1470 ILOUT=OASLEV(4) GSS1F400.1471 ! Allow room for expansion of ocean assimilation groups. GSS1F400.1472 ELSE IF(ILIN.EQ.45) THEN GSS1F400.1473 ILOUT=OASLEV(5) GSS1F400.1474 ! Allow room for expansion of ocean assimilation groups. GSS1F400.1475 ELSE IF(ILIN.EQ.46) THEN GSS1F400.1476 ILOUT=OASLEV(6) GSS1F400.1477 ! Allow room for expansion of ocean assimilation groups. GSS1F400.1478 ELSE LEVCOD1.121 WRITE(6,*)'LEVCOD: IMPOSSIBLE LEVEL CODE FOUND ',ILIN LEVCOD1.122 ErrorStatus=1 GSS3F401.679 END IF LEVCOD1.124 LEVCOD1.125 RETURN LEVCOD1.126 END LEVCOD1.127 *ENDIF LEVCOD1.128