*IF DEF,OCEAN @DYALLOC.4446
C ******************************COPYRIGHT****************************** GTS2F400.7039
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.7040
C GTS2F400.7041
C Use, duplication or disclosure of this code is subject to the GTS2F400.7042
C restrictions as set forth in the contract. GTS2F400.7043
C GTS2F400.7044
C Meteorological Office GTS2F400.7045
C London Road GTS2F400.7046
C BRACKNELL GTS2F400.7047
C Berkshire UK GTS2F400.7048
C RG12 2SZ GTS2F400.7049
C GTS2F400.7050
C If no contract has been raised with this copy of the code, the use, GTS2F400.7051
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.7052
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.7053
C Modelling at the above address. GTS2F400.7054
C ******************************COPYRIGHT****************************** GTS2F400.7055
C GTS2F400.7056
CLL Subroutine OCN_CTL ------------------------------------------------ OCN_CTL.2
CLL OCN_CTL.3
CLL Level 2 control routine OCN_CTL.4
CLL OCN_CTL.5
CLL version for CRAY YMP OCN_CTL.6
CLL written by S. Ineson OCN_CTL.7
CLL OCN_CTL.8
CLL code reviewed by : OCN_CTL.9
CLL OCN_CTL.10
CLL version number 1. dated 00/00/00 OCN_CTL.11
CLL programming standard : OCN_CTL.12
CLL system components covered : OCN_CTL.13
CLL system task : OCN_CTL.14
CLL OCN_CTL.15
CLL OCN_CTL.16
CLL OCN_CTL.17
CLL OCN_CTL.18
CLL Documentation : OCN_CTL.19
CLL Modification : CALL OCN_LAST modified to CALL DIAG_PRT OCN_CTL.20
CLL : 7/12/92 G.Kelly OCN_CTL.21
CLL : Ice dynamics and ice thickness advection added. JT161193.1
CLL : 31/12/93 J.Thomson JT161193.2
CLL : Extra *IF DEF ONOPOLO added to allow ocean models JT051193.1
CLL : without sea ice at the north pole to run. JT051193.2
CLL : 5/11/93 J.F.Thomson JT051193.3
CLL 3.4 16/6/94 : Change CHARACTER*(*) to CHARACTER*(80) N.Farnon ONF0F304.3
CLL 3.4 18/5/94 Remove sea ice flux correction and split OJT0F304.8
CLL haney forcing of ice from ocean. J F Thomson OJT0F304.9
! 3.5 16.01.95 Remove *IF dependency. R.Hill ORH1F305.5502
CLL 3.5 07/06/95 Add CSUBMODL to satisfy TYPSTS. RTHBarnes GRB4F305.319
CLL 4.0 Correct logic of sea ice haney forcing. J.F.Crossley OJC3F400.1
CLL 4.0 3/7/95 Add call to new subroutine INIT_OCEAN_ICE and OJC2F400.60
CLL arrays for correct splitting of leads heat fluxes OJC2F400.61
CLL and snowfall with ice dynamics. J.F.Crossley OJC2F400.62
CLL 4.1 Vertical mean vorticity diagnostics introduced. M. J. Bell OMB3F401.42
! Vn4.3 14/05/97 Prevent ANOMICEH initialisation if not ORH5F403.279
! L_IHANEY. R. Hill ORH5F403.280
! 4.4 Pass LCAL360 through to ROW_CTL. R.Forbes OFR8F404.3
! 4.4 Pass ZU and ZV from ROW_CTL to TROP_CTL OFRAF404.1
CLL 4.4 15/06/97 Changes to accomodate free surface solution. ORL1F404.716
CLL R.Lenton ORL1F404.717
! 4.5 Changes to dynamic ice control logicals ODC1F405.369
! Chris Sherlock and Doug Cresswell ODC1F405.370
CLLEND ----------------------------------------------------------------- OCN_CTL.22
C*L Arguments OCN_CTL.23
OCN_CTL.24
SUBROUTINE OCN_CTL( 1,18@DYALLOC.4447
*CALL ARGSIZE
@DYALLOC.4448
*CALL ARGD1
@DYALLOC.4449
*CALL ARGDUMA
@DYALLOC.4450
*CALL ARGDUMO
@DYALLOC.4451
*CALL ARGDUMW
GKR1F401.239
*CALL ARGPTRO
@DYALLOC.4453
*CALL ARGSTS
@DYALLOC.4454
*CALL ARGCONO
@DYALLOC.4456
*CALL ARGOCALL
@DYALLOC.4457
*CALL ARGPPX
GKR0F305.960
*CALL ARGOINDX
ORH7F402.73
* ICODE,CMESSAGE @DYALLOC.4458
OCN_CTL.26
C IN: model description held in dump OCN_CTL.27
OCN_CTL.28
&,ITT,TTSEC,SWLDEG,FKMP_GLOBAL ORH6F402.60
OCN_CTL.30
C INOUT: primary variables not controlled by FORTXD OCN_CTL.31
OCN_CTL.32
&,P_PASS,PB_PASS,PTD,PTDB ORH1F402.1
&,CGRES,CGRESB ORH1F401.35
! P,PB,PTD AND PTDB NOT AVAILABLE IF L_ONOCLIN OR L_OFREESFC = TRUE ORH1F305.5506
&,ETA,ETAB,UBT,UBTBBT,VBT,VBTBBT,UBTBBC,VBTBBC ORL1F404.718
! ETA,ETAB,UBT,UBTBBT,VBT,VBTBBT,UBTBBC,VBTBBC are not available to ORL1F404.719
! this model if L_OFREESFC = false ORL1F404.720
&,MLD OCN_CTL.44
! MLD is not available to this model if L_OMIXLAY = false ORH1F305.5508
! MLD is not available to this model if L_OISOPYC = false ORH1F305.5509
&,HSNOW,CARYHEAT,FLXTOICE,CARYSALT OCN_CTL.51
&,ISX,ISY JT161193.3
! HSNOW,CARYHEAT,FLXTOICE,CARYSALT not available if L_SEAICE = false ORH1F305.5510
! ISX,ISY are not available to this model if L_ICEFREEDR = false ODC1F405.371
&,AICE,HICE OCN_CTL.57
! AICE,HICE are not available to this model if L_SEAICE = false ORH1F305.5512
&,UICE,VICE JT161193.8
! UICE,VICE are not available to this model if L_ICEFREEDR = false ODC1F405.372
&,ATHKDFT OLA2F403.18
! ATHKDFT is not available to this model if L_OVISBECK=.FALSE. OLA2F403.19
OCN_CTL.61
C IN: ancillary fields not controlled by FORTXD OCN_CTL.62
OCN_CTL.63
&,SURFP OCN_CTL.64
! SURFP is not available to this model if L_OFREESFC = false ORH1F305.5514
&,HEATFLUX,SOLARFLX OCN_CTL.68
! HEATFLUX,SOLARFLX are not available to this model if L_SEAICE = false ORH1F305.5515
&,SNOWRATE,SUBLIM OCN_CTL.75
! SNOWRATE,SUBLIM are not available to this model if L_SEAICE = false ORH1F305.5517
&,TOPMELT_c,BOTMELT_c OCN_CTL.79
! TOPMELT_c,BOTMELT_c not available to this model if L_SEAICE = false ORH1F305.5518
! or L_OICECOUP = false ORH1F305.5519
&,SOLICE,TAIRDATA OCN_CTL.86
! SOLICE,TAIRDATA are not available to this model if L_SEAICE = false ORH1F305.5520
! or L_SEAICE and L_OICECOUP = true. ORH1F305.5521
&,HICE_REF OCN_CTL.93
! HICE_REF is not available if L_SEAICE and L_IHANEY = FALSE OJC3F400.2
&,WSX,WSY JT161193.12
&,fluxcorh,fluxcorw OJT0F304.10
OCN_CTL.100
C IN: Data assimilation OCN_CTL.102
OCN_CTL.103
&,LL_ASS_BTRP,DU_ASS_BTRP,DV_ASS_BTRP OCN_CTL.104
OCN_CTL.105
OCN_CTL.112
C IN: pointers to diagnostics OCN_CTL.113
OCN_CTL.114
&,SI201_30,SI202_30,SI203_30,SI204_30,SI205_30 OCN_CTL.115
&,SI208_30 OCN_CTL.116
&,SI248_30,SI249_30,SI250_30,SI251_30 NT071293.264
&,SI292_30,SI293_30 OJP0F404.890
&,SI201_31,SI202_31 OCN_CTL.117
&,SI201_32 OCN_CTL.118
OCN_CTL.119
C IN: stashflags for diagnostics OCN_CTL.120
OCN_CTL.121
&,SF201_30,SF202_30,SF203_30,SF204_30,SF205_30 OCN_CTL.122
&,SF208_30 OCN_CTL.123
&,SF248_30,SF249_30,SF250_30,SF251_30 NT071293.265
&,SF292_30,SF293_30 OJP0F404.891
&,SF201_31,SF202_31 OCN_CTL.124
&,SF201_32 OCN_CTL.125
OCN_CTL.126
C IN: stash_maxlen for dimensioning stash workspace OCN_CTL.127
OCN_CTL.128
&,sw_len30,sw_len31,sw_len32 OCN_CTL.129
*CALL ARGOCTOT
ORH1F304.131
OCN_CTL.130
&,LCAL360 OFR8F404.4
& ) OCN_CTL.131
OCN_CTL.132
IMPLICIT NONE OCN_CTL.133
OCN_CTL.134
INTEGER OCN_CTL.135
& ICODE ! Return code : 0 Normal Exit OCN_CTL.136
C ! : >0 Error OCN_CTL.137
OCN_CTL.138
CHARACTER*(80) ONF0F304.4
& CMESSAGE ! Error message if return code >0 OCN_CTL.140
OCN_CTL.141
*CALL OARRYSIZ
ORH6F401.15
*CALL CSUBMODL
GRB4F305.320
*CALL CMAXSIZE
@DYALLOC.4459
*CALL TYPSIZE
@DYALLOC.4460
*CALL TYPOINDX
PXORDER.28
*CALL TYPOCALL
@DYALLOC.4461
*CALL TYPD1
@DYALLOC.4462
*CALL TYPDUMA
@DYALLOC.4463
*CALL TYPDUMO
@DYALLOC.4464
*CALL TYPDUMW
GKR1F401.240
*CALL TYPPTRO
@DYALLOC.4466
*CALL TYPSTS
@DYALLOC.4467
*CALL TYPCONO
@DYALLOC.4469
*CALL TYPOCTOT
ORH1F304.132
*CALL CNTLOCN
ORH1F305.5503
*CALL OTIMER
ORH1F305.5505
*CALL PPXLOOK
GKR0F305.961
OCN_CTL.143
REAL OCN_CTL.144
& TTSEC,SWLDEG,FKMP_GLOBAL(IMT,JMT_GLOBAL) ORH6F402.61
&,ZU(IMT,JMT),ZV(IMT,JMT) OFRAF404.2
&,P_PASS(IMT_STREAM,JMT_STREAM),PB_PASS(IMT_STREAM,JMT_STREAM) ORH1F402.2
&,P(IMT_STREAM,0:JMT_STREAM+1),PB(IMT_STREAM,0:JMT_STREAM+1) ORH1F402.3
&,PTD(IMT_STREAM,JMT_STREAM),PTDB(IMT_STREAM,JMT_STREAM) ORH1F305.5524
&,ATHKDFT(IMT_VIS,JMT_VIS) OLA2F403.20
&,CGRES(IMT_STREAM,JMT_STREAM),CGRESB(IMT_STREAM,JMT_STREAM) ORH1F401.36
&,ETA(IMT_FSF,JMT_FSF),ETAB(IMT_FSF,JMT_FSF) ORL1F404.721
&,UBT(IMT_FSF,JMTM1_FSF),UBTBBT(IMT_FSF,JMTM1_FSF) ORL1F404.722
&,VBT(IMT_FSF,JMTM1_FSF),VBTBBT(IMT_FSF,JMTM1_FSF) ORL1F404.723
&,UBTBBC(IMT_FSF,JMTM1_FSF),VBTBBC(IMT_FSF,JMTM1_FSF) ORL1F404.724
&,MLD(IMT_IPD_MIX,JMT_IPD_MIX) ORH1F305.5527
&,HSNOW(IMT_ICE,JMT_ICE),CARYHEAT(IMT_ICE,JMT_ICE) ORH1F305.5528
&,FLXTOICE(IMT_ICE,JMT_ICE) ORH1F305.5529
&,ISX(IMT_idr,JMTM1_idr),ISY(IMT_idr,JMTM1_idr) ODC1F405.373
&,UICE(IMT_idr,JMTM1_idr),VICE(IMT_idr,JMTM1_idr) ODC1F405.374
&,CARYSALT(IMT_ICE,JMT_ICE) ORH1F305.5532
&,AICE(IMT_ICE,JMT_ICE),HICE(IMT_ICE,JMT_ICE) ORH1F305.5533
&,HICE_REF(IMT_IHY,JMT_IHY) ORH1F305.5534
&,WSX(IMT_idr,JMTM1_idr),WSY(IMT_idr,JMTM1_idr) ODC1F405.375
&,SURFP(IMT_CLN_FSF,JMT_CLN_FSF) ORH1F305.5536
&,TOPMELT_c(IMT_ICE_ICP,JMT_ICE_ICP) ORH1F305.5537
&,BOTMELT_c(IMT_ICE_ICP,JMT_ICE_ICP) ORH1F305.5538
&,HEATFLUX(IMT_ICE,JMT_ICE) OJC2F400.63
&,SOLARFLX(IMT_ICE,JMT_ICE) OJC2F400.64
&,SNOWRATE(IMT_ICE,JMT_ICE),SUBLIM(IMT_ICE,JMT_ICE) ORH1F305.5541
&,SOLICE(IMT_ICE_NOICP,JMT_ICE_NOICP) ORH1F305.5542
&,TAIRDATA(IMT_ICE_NOICP,JMT_ICE_NOICP) ORH1F305.5543
&,fluxcorh(IMT_FLX,JMT_flx),fluxcorw(IMT_FLX,JMT_flx) ORH1F305.5544
&,DU_ASS_BTRP(IMT_ASM,JMT_ASM),DV_ASS_BTRP(IMT_ASM,JMT_ASM) ORH1F305.5545
OCN_CTL.165
INTEGER OCN_CTL.166
& ITT OCN_CTL.167
&,SI201_30,SI202_30,SI203_30,SI204_30,SI205_30 OCN_CTL.178
&,SI208_30 OCN_CTL.179
&,SI248_30,SI249_30,SI250_30,SI251_30 NT071293.266
&,SI292_30,SI293_30 OJP0F404.892
&,SI201_31,SI202_31 OCN_CTL.180
&,SI201_32 OCN_CTL.181
&,sw_len30,sw_len31,sw_len32 OCN_CTL.182
OCN_CTL.183
LOGICAL OCN_CTL.185
& LL_ASS_BTRP OCN_CTL.186
&,LCAL360 OFR8F404.5
LOGICAL OCN_CTL.188
& SF201_30,SF202_30,SF203_30,SF204_30,SF205_30 @DYALLOC.4470
&,SF208_30 OCN_CTL.191
&,SF248_30,SF249_30,SF250_30,SF251_30 NT071293.267
&,SF292_30,SF293_30 OJP0F404.893
&,SF201_31,SF202_31 OCN_CTL.192
&,SF201_32 OCN_CTL.193
OCN_CTL.194
CL Locally allocated arrays for interfacing between sections 30,31,32 OCN_CTL.195
OCN_CTL.196
REAL ORH1F305.5546
& ZTD(IMT_STREAM,JMT_STREAM) ! vorticity ROWS to RELAX ORH1F305.5547
&,XF(IMT_FSF,JMT_FSF) ! ROWS to TROPIC ORH1F305.5548
&,YF(IMT_FSF,JMT_FSF) ! ROWS to TROPIC ORH1F305.5549
&,SURFTEMP(IMT_ICE,JMT_ICE)! ROWS to ICE ORH1F305.5550
&,SURFSAL(IMT_ICE,JMT_ICE) ! ROWS to ICE ORH1F305.5551
&,anomiceh(IMT_IHY,JMT_IHY)! Anomalous seaice heat flux (Haney) ORH1F305.5552
ORH1F305.5553
LOGICAL ORH1F305.5554
& ICY(IMT_ICE,JMT_ICE) ! ROWS and ICE ORH1F305.5555
&,NEWICE(IMT_ICE,JMT_ICE) ! ROWS to ICE ORH1F305.5556
ORH1F305.5557
REAL ORH1F305.5558
& UCURRENT(IMT_drsa,JMTM1_drsa) ! ROWS to ICE ODC1F405.376
&, VCURRENT(IMT_drsa,JMTM1_drsa) ! ROWS to ICE ODC1F405.377
&,WSX_ICE(IMT_idr,JMTM1_idr) ! ROWS to ICE ODC1F405.378
&,WSY_ICE(IMT_idr,JMTM1_idr) ! ROWS to ICE ODC1F405.379
&,WSX_LEADS(IMT_idr,JMTM1_idr)! ROWS to ICE ODC1F405.380
&,WSY_LEADS(IMT_idr,JMTM1_idr)! ROWS to ICE ODC1F405.381
REAL OJC2F400.65
& OCEANHEATFLUX(IMT,JMT) ! HEATFLUX fract for ocn budget OOM1F405.334
&,OCEANSNOWRATE(IMT,JMT) ! SNOWRATE for initial open sea OOM1F405.335
&,ICEHEATFLUX(IMT_ICE,JMT_ICE) ! HEATFLUX fract for ice budget OJC2F400.68
&,ICESNOWRATE(IMT_ICE,JMT_ICE) ! SNOWRATE at initial seaice pts OJC2F400.69
&,SWZVRT(IMT_ZVRT,JMT_ZVRT,N_ZVRT)! vorticity diagnostics OMB3F401.43
ORH1F305.5566
C Loop counting indexes. ORH1F305.5567
INTEGER I,J ORH1F305.5568
C External subroutines called OCN_CTL.227
OCN_CTL.228
EXTERNAL OCN_CTL.229
& ROW_CTL OCN_CTL.230
&, TROP_CTL OCN_CTL.232
&, ICE_CTL OCN_CTL.235
&, TIMER OCN_CTL.238
OCN_CTL.240
OCN_CTL.241
OCN_CTL.242
ICODE=0 OCN_CTL.243
CMESSAGE=' ' OCN_CTL.244
! Stream function variables are not relevant ORH0F405.13
! when the free surface is used. ORH0F405.14
IF (.NOT.(L_ONOCLIN.OR.L_OFREESFC)) THEN ORH0F405.15
! We must now copy P_PASS to P and PB_PASS to PB ORH1F402.5
! This has to be done in this manner because ORH1F402.6
! P_PASS and PB_PASS point directly into the D1 array. ORH1F402.7
! For these two fields, we need halo regions 2 rows ORH1F402.8
! wide - whereas all other fields only require 1 row. ORH1F402.9
! Hence an attempt to call SWAPBOUNDS for 2 halo rows ORH1F402.10
! would result corruption of other arrays in D1. ORH1F402.11
DO J=1,JMT_STREAM ORH1F402.12
DO I=1,IMT ORH1F402.13
P(I,J)=P_PASS(I,J) ORH1F402.14
PB(I,J)=PB_PASS(I,J) ORH1F402.15
ENDDO ORH1F402.16
ENDDO ORH1F402.17
ENDIF ORH1F402.18
OCN_CTL.245
IF (L_SEAICE) THEN ORH1F305.5569
C ------------------------------------------------------------------ OJC2F400.70
C Call subroutine to initialise sea ice variables and arrays used OJC2F400.71
C in ocean-ice coupling. OJC2F400.72
C OJC2F400.73
IF (l_otimer) call TIMER
('INITOICE',3) OJC2F400.74
OJC2F400.75
! Anomiceh does not get set in TRACER for 1st and last ORH6F402.22
! rows - make sure it's initialised. This needs further consideration ORH6F402.23
! for LAM configurations! ORH6F402.24
IF (L_IHANEY) THEN ORH5F403.281
DO J = J_1,J_JMT ORH5F403.282
DO I = 1, IMT ORH5F403.283
ANOMICEH(I,J) = 0.0 ORH5F403.284
ENDDO ORH5F403.285
ENDDO ORH5F403.286
ENDIF ORH5F403.287
CALL Init_Ocean_Ice
( ORH7F402.75
*CALL ARGOINDX
ORH7F402.76
& imt,itt,jmt,jmtm1 ORH7F402.77
&,amx,fkmp,heatflux,snowrate OJC2F400.77
&,wsx,wsy OJC2F400.78
&,icy,iceheatflux,oceanheatflux,icesnowrate,oceansnowrate OJC2F400.79
&,wsx_ice,wsx_leads,wsy_ice,wsy_leads OJC2F400.80
&,aice,newice ) OJC2F400.81
OJC2F400.82
IF (l_otimer) call TIMER
('INITOICE',4) OJC2F400.83
ENDIF ! L_SEAICE ORH1F305.5584
CL ******************************************************** OCN_CTL.257
CL Temporary section for miscellaneous code held in COX step OCN_CTL.258
C updates timestep counter OCN_CTL.259
C updates permuting disc I/O OCN_CTL.260
C adjusts quantities for mixing timestep OCN_CTL.261
OCN_CTL.262
OCN_CTL.263
CALL OCN_FRST
( OCN_CTL.264
*CALL ARGSIZE
@DYALLOC.4471
*CALL ARGOCALL
@DYALLOC.4472
*CALL ARGOINDX
ORH7F402.78
& ITT,TTSEC,SWLDEG ORH6F402.62
&,P(1,1),PB(1,1),PTD,PTDB ORH1F402.37
&,ETA,ETAB,UBT,UBTBBT,VBT,VBTBBT ORL1F404.725
& ) OCN_CTL.269
OCN_CTL.270
*IF DEF,MPP ORH2F403.164
! Stream function variables are not relevant ORH0F405.16
! when the free surface is used. ORH0F405.17
IF (.NOT.(L_ONOCLIN.OR.L_OFREESFC)) THEN ORH0F405.18
! Ensure halo regions are populated - 2 rows either side ORH2F403.166
! of the main data. ORH2F403.167
! This is done in two stages in order to allow for ORH2F403.168
! decompositions where each PE only has 1 row allocated to ORH2F403.169
! it - in such instances, trying to swap both halo ORH2F403.170
! rows in one step will cause indeterminate results. ORH2F403.171
ORH2F403.172
! First we do the inner halo rows: ORH2F403.173
CALL SWAPBOUNDS
(P(1,1),IMT_STREAM,JMT_STREAM,0,1,1) ORH2F403.174
CALL SWAPBOUNDS
(PB(1,1),IMT_STREAM,JMT_STREAM,0,1,1) ORH2F403.175
ORH2F403.176
! Now we do the outer halo rows: ORH2F403.177
CALL SWAPBOUNDS
(P(1,0),IMT_STREAM,(JMT_STREAM+2),0,2,1) ORH2F403.178
CALL SWAPBOUNDS
(PB(1,0),IMT_STREAM,(JMT_STREAM+2),0,2,1) ORH2F403.179
ENDIF ORH2F403.180
*ENDIF ORH2F403.181
ORH2F403.182
ORH2F403.183
ORH2F403.184
CL ******************************************************** OCN_CTL.271
CL Section 30: Row calculations OCN_CTL.272
OCN_CTL.273
IF (L_OTIMER) CALL TIMER
('ROW_CTL',3) ORH1F305.5585
OCN_CTL.277
CALL ROW_CTL
( @DYALLOC.4473
*CALL ARGSIZE
@DYALLOC.4474
*CALL ARGD1
@DYALLOC.4475
*CALL ARGDUMA
@DYALLOC.4476
*CALL ARGDUMO
@DYALLOC.4477
*CALL ARGDUMW
GKR1F401.241
*CALL ARGPTRO
@DYALLOC.4479
*CALL ARGSTS
@DYALLOC.4480
*CALL ARGCONO
@DYALLOC.4482
*CALL ARGOCALL
@DYALLOC.4483
*CALL ARGPPX
GKR0F305.963
*CALL ARGOINDX
ORH7F402.80
& ICODE,CMESSAGE ! ################################ @DYALLOC.4484
OCN_CTL.279
C IN: model description held in dump OCN_CTL.280
OCN_CTL.281
&,ITT,TTSEC,SWLDEG,FKMP_GLOBAL ORH6F402.63
OCN_CTL.283
C INOUT: primary variables not controlled by FORTXD OCN_CTL.284
OCN_CTL.285
&,ZU,ZV OFRAF404.3
&,P,PB,PTD,PTDB ORH1F305.5586
&,UBT,VBT,UBTBBC,VBTBBC ORL1F404.726
&,MLD ORH1F305.5588
&,AICE,HICE,HSNOW ORH1F305.5589
&,HICE_REF ORH1F305.5590
&,CARYHEAT,FLXTOICE,CARYSALT ORH1F305.5591
&,ISX,ISY,WSX_LEADS,WSY_LEADS,ATHKDFT OLA2F403.21
&,ICY ORH1F305.5593
&,OCEANHEATFLUX,OCEANSNOWRATE OJC2F400.84
&,anomiceh ORH1F305.5594
&,fluxcorh,fluxcorw ORH1F305.5595
&,LL_ASS_BTRP,DU_ASS_BTRP,DV_ASS_BTRP ORH1F305.5596
&,SURFTEMP,SURFSAL,NEWICE ORH1F305.5597
&,UCURRENT,VCURRENT ORH1F305.5598
&,ZTD ORH1F305.5599
&,XF,YF ORH1F305.5600
OMB3F401.44
C OUT: arrays for interfacing between sections OMB3F401.45
&,SWZVRT OMB3F401.46
OCN_CTL.335
C IN: pointers and stashflags to diagnostics OCN_CTL.342
OCN_CTL.343
&,SI201_30,SI202_30,SI203_30,SI204_30,SI205_30 OCN_CTL.344
&,SI208_30 OCN_CTL.345
&,SI248_30,SI249_30,SI250_30,SI251_30 NT071293.268
&,SI292_30,SI293_30 OJP0F404.894
&,SF201_30,SF202_30,SF203_30,SF204_30,SF205_30 OCN_CTL.346
&,SF208_30 OCN_CTL.347
&,SF248_30,SF249_30,SF250_30,SF251_30 NT071293.269
&,SF292_30,SF293_30 OJP0F404.895
OJP0F404.896
OCN_CTL.348
C IN: STASH_MAXLEN for dynamical allocation of STASH workspace OCN_CTL.349
OCN_CTL.350
&,sw_len30 OCN_CTL.351
*CALL ARGOCTOT
ORH1F304.133
OCN_CTL.352
&,LCAL360 OFR8F404.6
& ) OCN_CTL.353
OCN_CTL.354
IF (L_OTIMER) CALL TIMER
('ROW_CTL',4) ORH1F305.5601
OCN_CTL.358
IF(ICODE.GT.0) THEN OCN_CTL.359
RETURN OCN_CTL.360
ENDIF OCN_CTL.361
OCN_CTL.362
! Section 31: Option Y chosen. No barotropic solution if L_ONOCLIN = t ORH1F305.5602
! Section 31: Barotropic solution if L_ONOCLIN = f ORH1F305.5603
ORH1F305.5604
IF (.NOT.(L_ONOCLIN))THEN ORH1F305.5605
IF (L_OTIMER) CALL TIMER
('TROP_CTL',3) ORH1F305.5606
OCN_CTL.374
CALL TROP_CTL
( @DYALLOC.4485
*CALL ARGSIZE
@DYALLOC.4486
*CALL ARGD1
@DYALLOC.4487
*CALL ARGDUMA
@DYALLOC.4488
*CALL ARGDUMO
@DYALLOC.4489
*CALL ARGDUMW
GKR1F401.242
*CALL ARGSTS
@DYALLOC.4492
*CALL ARGOCALL
@DYALLOC.4495
*CALL ARGPPX
GKR0F305.964
*CALL ARGOINDX
ORH7F402.79
& ICODE,CMESSAGE @DYALLOC.4496
OCN_CTL.376
C IN: model description held in dump OCN_CTL.377
OCN_CTL.378
&, ITT ORH3F405.78
OCN_CTL.380
C INOUT: primary variables OCN_CTL.381
OCN_CTL.382
&,P,PB,PTD,PTDB ORH1F305.5607
&,CGRES,CGRESB ORH1F401.37
C IN: arrays for rigid lid pressure calculation OFRAF404.4
&,ZU,ZV OFRAF404.5
&,ETA,ETAB,UBT,UBTBBT,VBT,VBTBBT,UBTBBC,VBTBBC ORL1F404.727
C IN: arrays for interfacing between sections 30,31 ORH1F305.5611
&,ZTD ORH1F305.5612
&,XF,YF ORH1F305.5613
&,SWZVRT OMB3F401.47
OCN_CTL.410
C IN: pointers and stashflags to diagnostics OCN_CTL.411
OCN_CTL.412
&,SI201_31,SI202_31 OCN_CTL.413
&,SF201_31,SF202_31 OCN_CTL.414
OCN_CTL.415
C IN: STASH_MAXLEN for dynamical allocation of STASH workspace OCN_CTL.416
OCN_CTL.417
&,sw_len31 OCN_CTL.418
OCN_CTL.419
& ) OCN_CTL.420
OCN_CTL.421
IF (L_OTIMER) CALL TIMER
('TROP_CTL',4) ORH1F305.5614
OCN_CTL.427
IF(ICODE.GT.0) THEN OCN_CTL.428
RETURN OCN_CTL.429
ENDIF OCN_CTL.430
OCN_CTL.431
ENDIF ! L_ONOCLIN = false ORH1F305.5615
ORH1F305.5616
IF (L_SEAICE) THEN ORH1F305.5617
IF (L_OTIMER) CALL TIMER
('ICE_CTL',3) ORH1F305.5618
OCN_CTL.441
CALL ICE_CTL
( @DYALLOC.4497
*CALL ARGSIZE
@DYALLOC.4498
*CALL ARGD1
@DYALLOC.4499
*CALL ARGDUMA
JT161193.59
*CALL ARGDUMO
@DYALLOC.4500
*CALL ARGDUMW
GKR1F401.243
*CALL ARGSTS
@DYALLOC.4501
*CALL ARGOCALL
@DYALLOC.4504
*CALL ARGPPX
GKR0F305.962
*CALL ARGOINDX
ORH7F402.81
& ICODE,CMESSAGE @DYALLOC.4505
OCN_CTL.443
C INOUT: primary variables OCN_CTL.444
OCN_CTL.445
&,HSNOW,AICE,HICE OCN_CTL.446
&,UICE,VICE JT161193.63
OCN_CTL.447
C INOUT: variables required by ocean next timestep OCN_CTL.448
OCN_CTL.449
&,CARYSALT,CARYHEAT,FLXTOICE OCN_CTL.450
&,ISX,ISY JT161193.66
OCN_CTL.451
C IN: ancillary fields OCN_CTL.452
OCN_CTL.453
&,HEATFLUX,SOLARFLX OCN_CTL.456
&,SNOWRATE,SUBLIM OCN_CTL.459
&,TOPMELT_c,BOTMELT_c OCN_CTL.462
&,SOLICE,TAIRDATA OCN_CTL.465
&,anomiceh OCN_CTL.468
&,WSX_ICE,WSY_ICE JT161193.69
OCN_CTL.474
C IN: arrays for interfacing between sections 30,32 OCN_CTL.475
OCN_CTL.476
&,SURFTEMP,SURFSAL,NEWICE,ICY OCN_CTL.477
&,ICEHEATFLUX,ICESNOWRATE OJC2F400.85
&,UCURRENT,VCURRENT JT161193.72
OCN_CTL.479
C IN: pointers and stashflags to diagnostics OCN_CTL.480
OCN_CTL.481
&,SI201_32 OCN_CTL.482
&,SF201_32 OCN_CTL.483
OCN_CTL.484
C IN: STASH_MAXLEN for dynamical allocation of STASH workspace OCN_CTL.485
OCN_CTL.486
&,sw_len32 OCN_CTL.487
OCN_CTL.488
& ) OCN_CTL.489
OCN_CTL.490
IF (L_OTIMER) CALL TIMER
('ICE_CTL',4) ORH1F305.5619
ENDIF ! L_SEAICE = true ORH1F305.5620
CL Section for printing out diagnostic variables OCN_CTL.498
OCN_CTL.499
OCN_CTL.500
IF (.NOT.L_OFREESFC) THEN ORL1F404.728
CALL DIAG_PRT
( OCN_CTL.501
*CALL ARGSIZE
@DYALLOC.4506
*CALL ARGD1
@DYALLOC.4507
*CALL ARGDUMO
@DYALLOC.4508
*CALL ARGPTRO
@DYALLOC.4509
*CALL ARGOCALL
@DYALLOC.4510
*CALL ARGOINDX
ORH7F402.82
& ITT OCN_CTL.502
&,P(1,1),PB(1,1),PTD,PTDB OSI0F402.180
& ) OCN_CTL.506
ENDIF ORL1F404.729
OCN_CTL.507
! Stream function variables are not relevant ORH0F405.19
! when the free surface is used. ORH0F405.20
IF (.NOT.(L_ONOCLIN.OR.L_OFREESFC)) THEN ORH0F405.21
! We must now copy P and PB back to P_PASS and PB_PASS. ORH1F402.39
DO J=1,JMT_STREAM ORH1F402.40
DO I=1,IMT ORH1F402.41
P_PASS(I,J)=P(I,J) ORH1F402.42
PB_PASS(I,J)=PB(I,J) ORH1F402.43
ENDDO ORH1F402.44
ENDDO ORH1F402.45
ENDIF ORH1F402.46
OCN_CTL.513
RETURN OCN_CTL.514
END OCN_CTL.515
*ENDIF @DYALLOC.4511