*IF DEF,CONTROL,AND,DEF,ATMOS,AND,DEF,OCEAN,AND,-DEF,MPP GRR0F402.45
C ******************************COPYRIGHT****************************** GTS2F400.9901
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.9902
C GTS2F400.9903
C Use, duplication or disclosure of this code is subject to the GTS2F400.9904
C restrictions as set forth in the contract. GTS2F400.9905
C GTS2F400.9906
C Meteorological Office GTS2F400.9907
C London Road GTS2F400.9908
C BRACKNELL GTS2F400.9909
C Berkshire UK GTS2F400.9910
C RG12 2SZ GTS2F400.9911
C GTS2F400.9912
C If no contract has been raised with this copy of the code, the use, GTS2F400.9913
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.9914
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.9915
C Modelling at the above address. GTS2F400.9916
C ******************************COPYRIGHT****************************** GTS2F400.9917
C GTS2F400.9918
CLL Routine: SWAP_A2O ------------------------------------------------- SWAPA2O1.3
CLL SWAPA2O1.4
CLL Purpose: 2nd level control routine to control the interchange of SWAPA2O1.5
CLL data when swapping from atmosphere to ocean in a coupled SWAPA2O1.6
CLL model. Fields required from the completed atmosphere SWAPA2O1.7
CLL phase are copied to workspace from D1 addresses worked SWAPA2O1.8
CLL out by INIT_A2O; atmosphere data is written from D1 to SWAPA2O1.9
CLL disk; ocean data read from disk to overlay D1; and finally SWAPA2O1.10
CLL routine TRANSA2O is called to perform the data processing SWAPA2O1.11
CLL required to complete the coupling. SWAPA2O1.12
CLL SWAPA2O1.13
CLL Tested under compiler: cft77 SWAPA2O1.14
CLL Tested under OS version: UNICOS 5.1 SWAPA2O1.15
CLL SWAPA2O1.16
CLL JG, TJ <- programmer of some or all of previous code or changes SWAPA2O1.17
CLL SWAPA2O1.18
CLL Model Modification history from model version 3.0: SWAPA2O1.19
CLL version Date SWAPA2O1.20
CLL 3.1 3/02/93 : added comdeck CHSUNITS to define NUNITS for i/o RS030293.130
CLL 3.2 25/05/93 : Changes for dynamic allocation (TCJ). @DYALLOC.3487
CLL 4.2 22/11/96 : Allow uncompressed ocean dumps. S Ineson GSI0F402.28
CLL 4.2 11/10/96 : Enable atmos-ocean coupling for MPP. GRR0F402.46
CLL (1): Coupled fields. Disable this deck for MPP GRR0F402.47
CLL running (a separate deck SWAPA2O2 introduced for GRR0F402.48
CLL MPP). Add global size arguments for consistency GRR0F402.49
CLL with SWAPA2O2. R. Rawlins GRR0F402.50
CLL 4.2 11/10/96 : Enable atmos-ocean coupling for MPP. GRR1F402.306
CLL (2): Swap D1 memory. New argument in TRANSIN, GRR1F402.307
CLL TRANSOUT routines. R. Rawlins GRR1F402.308
CLL 4.5 1/07/98 Include code to pass atmospheric surface CO2 CCN1F405.344
CLL C.D.Jones CCN1F405.345
CLL SWAPA2O1.21
CLL Programming standard: UM Doc Paper 3, version 2 (7/9/90) SWAPA2O1.22
CLL SWAPA2O1.23
CLL Logical components covered: C??? SWAPA2O1.24
CLL SWAPA2O1.25
CLL Project task: C0 SWAPA2O1.26
CLL SWAPA2O1.27
CLL External documentation: SWAPA2O1.28
CLL Unified Model Doc Paper C2 - Atmosphere-Ocean coupling: overview CCN1F405.346
CLL SWAPA2O1.30
CLL ------------------------------------------------------------------- SWAPA2O1.31
C*L Interface and arguments: ------------------------------------------ SWAPA2O1.32
C SWAPA2O1.33
SUBROUTINE SWAP_A2O (G_P_FIELD,G_IMTJMT,CO2_DIMA,CO2_DIMO, 2,53CCN1F405.347
*CALL ARGSIZE
@DYALLOC.3489
*CALL ARGD1
@DYALLOC.3490
*CALL ARGDUMO
@DYALLOC.3491
*CALL ARGPTRA
@DYALLOC.3492
*CALL ARGPTRO
@DYALLOC.3493
*CALL ARGCONA
@DYALLOC.3494
*CALL ARGCONO
CJG6F401.18
*CALL ARGAOCPL
@DYALLOC.3495
& ICODE,CMESSAGE) SWAPA2O1.35
C SWAPA2O1.36
IMPLICIT NONE SWAPA2O1.37
C SWAPA2O1.38
*CALL CMAXSIZE
@DYALLOC.3496
*CALL TYPSIZE
@DYALLOC.3497
*CALL TYPD1
@DYALLOC.3498
*CALL TYPDUMO
@DYALLOC.3499
*CALL TYPPTRA
@DYALLOC.3500
*CALL TYPPTRO
@DYALLOC.3501
*CALL TYPCONA
@DYALLOC.3502
*CALL TYPCONO
CJG6F401.19
*CALL TYPAOCPL
@DYALLOC.3503
C @DYALLOC.3504
INTEGER G_P_FIELD, ! IN Not used: required for GRR0F402.52
& G_IMTJMT ! IN consistency with MPP GRR0F402.53
& ,CO2_DIMA ! IN : dimension of atmos CO2 array CCN1F405.348
& ,CO2_DIMO ! IN : dimension of ocean CO2 array CCN1F405.349
& ,CO2_ICOLS,CO2_JROWS ! OUT: CO2 array dimensions CCN1F405.350
& ,CO2_IMT, CO2_JMT CCN1F405.351
INTEGER SWAPA2O1.39
& ICODE ! OUT - Error return code SWAPA2O1.42
CHARACTER*(*) CMESSAGE ! OUT - Error return message SWAPA2O1.43
C*---------------------------------------------------------------------- SWAPA2O1.44
C Common blocks SWAPA2O1.45
C SWAPA2O1.46
*CALL CAOPTR
SWAPA2O1.50
*CALL C_LHEAT
SWAPA2O1.51
*CALL C_0_DG_C
SWAPA2O1.52
*CALL C_MDI
SWAPA2O1.53
*CALL CHSUNITS
RS030293.131
*CALL CNTLALL
GDR3F305.185
*CALL TYPOCDPT
CJG6F401.20
*CALL CSMID
GRR1F402.309
*CALL CNTLATM
CCN1F405.352
C SWAPA2O1.56
C Subroutines called SWAPA2O1.57
C SWAPA2O1.58
EXTERNAL TRANSOUT,TRANSIN,TRANSA2O CJG6F401.21
C SWAPA2O1.60
C Local variables SWAPA2O1.61
C SWAPA2O1.62
INTEGER SWAPA2O1.63
& NFTASWAP,NFTOSWAP, ! FT units for swap files SWAPA2O1.64
& I ! Loop index SWAPA2O1.65
*IF DEF,TRANGRID,OR,DEF,RIVERS SWAPA2O1.66
LOGICAL SWAPA2O1.67
& AMASKTP(P_FIELD) ! Atmosphere land-sea mask @DYALLOC.3505
*ENDIF SWAPA2O1.69
REAL SWAPA2O1.70
& TAUX(P_FIELD),TAUY(P_FIELD), ! Surface windstress @DYALLOC.3508
& WINDMIX(P_FIELD), ! Windmixing power @DYALLOC.3509
& SOLAR(P_FIELD), ! Surface net solar @DYALLOC.3510
& BLUE(P_FIELD), ! Surface net blueband solar @DYALLOC.3511
& EVAP(P_FIELD), ! Evaporation over sea @DYALLOC.3512
& LONGWAVE(P_FIELD), ! Net downward longwave @DYALLOC.3513
& SENSIBLE(P_FIELD), ! Sensible heat flux @DYALLOC.3514
& LSSNOW(P_FIELD),CVSNOW(P_FIELD),! LS and CV snowfall rates @DYALLOC.3515
& LSRAIN(P_FIELD),CVRAIN(P_FIELD) ! LS and CV rainfall rates @DYALLOC.3516
&, ATMCO2(CO2_DIMA) ! atmospheric surface CO2 CCN1F405.353
CCN1F405.354
*IF DEF,SEAICE SWAPA2O1.82
&, AICE(P_FIELD), ! Seaice fraction @DYALLOC.3517
& SUBLIM(P_FIELD), ! Sublimation @DYALLOC.3518
& BOTMELT(P_FIELD), ! Bottom melting heat flux @DYALLOC.3519
& TOPMELT(P_FIELD) ! Top melting heat flux @DYALLOC.3520
*ENDIF SWAPA2O1.87
*IF DEF,RIVERS SWAPA2O1.88
INTEGER SWAPA2O1.89
& OCENTPTS(P_FIELD) ! Ocean entry points index @DYALLOC.3521
REAL SWAPA2O1.91
& RUNOFFIN(P_FIELD) ! Total runoff from land @DYALLOC.3522
*ENDIF SWAPA2O1.93
CL---------------------------------------------------------------------- SWAPA2O1.94
CL 1. Copy coupling fields from atmosphere D1 addresses to workspace. SWAPA2O1.95
CL Note that sublimation must be converted from total amount over SWAPA2O1.96
CL the coupling period, to rate. The same is also true for runoff. SWAPA2O1.97
CL Ocean entry points field is dimensioned P_FIELD, but only @DYALLOC.3523
CL LAND_FIELD points are needed since the field is compressed. SWAPA2O1.99
CL SWAPA2O1.100
DO I=1,P_FIELD @DYALLOC.3524
TAUX(I)=D1(JA_TAUX+I-1) ! NB: TAUX and TAUY are SWAPA2O1.102
TAUY(I)=D1(JA_TAUY+I-1) ! over-dimensioned SWAPA2O1.103
WINDMIX(I)=D1(JA_WINDMIX+I-1) SWAPA2O1.104
SOLAR(I)=D1(JA_SOLAR+I-1) SWAPA2O1.105
BLUE(I)=D1(JA_BLUE+I-1) SWAPA2O1.106
EVAP(I)=D1(JA_EVAP+I-1) SWAPA2O1.107
LONGWAVE(I)=D1(JA_LONGWAVE+I-1) SWAPA2O1.108
SENSIBLE(I)=D1(JA_SENSIBLE+I-1) SWAPA2O1.109
LSSNOW(I)=D1(JA_LSSNOW+I-1) SWAPA2O1.110
CVSNOW(I)=D1(JA_CVSNOW+I-1) SWAPA2O1.111
LSRAIN(I)=D1(JA_LSRAIN+I-1) SWAPA2O1.112
CVRAIN(I)=D1(JA_CVRAIN+I-1) SWAPA2O1.113
*IF DEF,SEAICE SWAPA2O1.114
AICE(I)=D1(JA_AICE+I-1) SWAPA2O1.115
SUBLIM(I)=D1(JA_SUBLIM+I-1)/REAL(MODEL_HRS_PER_GROUP*3600) SWAPA2O1.116
BOTMELT(I)=D1(JA_BOTMELT+I-1) SWAPA2O1.117
TOPMELT(I)=D1(JA_TOPMELT+I-1) SWAPA2O1.118
*ENDIF SWAPA2O1.119
*IF DEF,TRANGRID,OR,DEF,RIVERS SWAPA2O1.120
AMASKTP(I)=LD1(JLAND+I-1) SWAPA2O1.121
*ENDIF SWAPA2O1.122
*IF DEF,RIVERS SWAPA2O1.123
RUNOFFIN(I)=(D1(JA_SLOWRUNOFF+I-1)+D1(JA_FASTRUNOFF+I-1))/ SWAPA2O1.124
* REAL(MODEL_HRS_PER_GROUP*3600) SWAPA2O1.125
*ENDIF SWAPA2O1.126
ENDDO SWAPA2O1.127
*IF DEF,RIVERS SWAPA2O1.128
DO I=1,LAND_FIELD SWAPA2O1.129
OCENTPTS(I)=ID1(JA_OCENTPTS+I-1) SWAPA2O1.130
ENDDO SWAPA2O1.131
*ENDIF SWAPA2O1.132
IF (L_CO2_INTERACTIVE) THEN CCN1F405.355
DO I=1,CO2_DIMA CCN1F405.356
ATMCO2(I)=D1(JA_CO2+I-1) CCN1F405.357
ENDDO CCN1F405.358
ENDIF CCN1F405.359
SWAPA2O1.133
CL---------------------------------------------------------------------- SWAPA2O1.134
CL 2. Perform IO to swap data in D1 from atmosphere to ocean SWAPA2O1.135
CL SWAPA2O1.136
NFTASWAP=18 SWAPA2O1.137
NFTOSWAP=19 SWAPA2O1.138
C SWAPA2O1.139
CALL TRANSOUT
( @DYALLOC.3525
*CALL ARGD1
@DYALLOC.3526
& A_LEN_DATA+(P_LEVELS+1+2*Q_LEVELS)*P_FIELD, @DYALLOC.3527
& NFTASWAP,atmos_sm,ICODE,CMESSAGE) GRR1F402.310
IF (ICODE.GT.0) GOTO 999 SWAPA2O1.142
C SWAPA2O1.143
CALL TRANSIN
( @DYALLOC.3528
*CALL ARGD1
@DYALLOC.3529
& O_LEN_DATA+O_LEN_DUALDATA, GSI0F402.29
& NFTOSWAP,ocean_sm,ICODE,CMESSAGE) GRR1F402.311
IF (ICODE.GT.0) GOTO 999 SWAPA2O1.146
CL---------------------------------------------------------------------- SWAPA2O1.157
CL 3. Perform the coupling calculations SWAPA2O1.158
CL SWAPA2O1.159
IF (L_CO2_INTERACTIVE) THEN CCN1F405.360
CO2_ICOLS = ROW_LENGTH CCN1F405.361
CO2_JROWS = P_ROWS CCN1F405.362
CO2_IMT = IMT CCN1F405.363
CO2_JMT = JMT CCN1F405.364
ELSE CCN1F405.365
ATMCO2(1) = 0.0 CCN1F405.366
CO2_ICOLS = 1 CCN1F405.367
CO2_JROWS = 1 CCN1F405.368
CO2_IMT = 1 CCN1F405.369
CO2_JMT = 1 CCN1F405.370
ENDIF CCN1F405.371
CALL TRANSA2O
( SWAPA2O1.160
& TAUX,D1(JO_TAUX),TAUY,D1(JO_TAUY),WINDMIX,D1(JO_WINDMIX), SWAPA2O1.162
& SOLAR,BLUE,D1(JO_BLUE),EVAP,LONGWAVE,SENSIBLE,D1(JO_HEATFLUX), SWAPA2O1.163
& LSSNOW,CVSNOW,LSRAIN,CVRAIN,D1(JO_PMINUSE), SWAPA2O1.164
& RMDI,LC, SWAPA2O1.165
*IF DEF,SEAICE SWAPA2O1.166
& AICE,SUBLIM,BOTMELT,TOPMELT, SWAPA2O1.167
& D1(JO_SNOWFALL),D1(JO_SUBLIM),D1(JO_BOTMELT),D1(JO_TOPMELT), SWAPA2O1.168
*ENDIF SWAPA2O1.169
*IF DEF,TRANGRID SWAPA2O1.170
& XUO,XTO,YUO,YTO,XTA,XUA,YTA,YUA, SWAPA2O1.171
*ENDIF SWAPA2O1.172
*IF DEF,TRANGRID,OR,DEF,RIVERS SWAPA2O1.173
& AMASKTP, SWAPA2O1.174
*ENDIF SWAPA2O1.175
*IF DEF,RIVERS SWAPA2O1.176
+ RUNOFFIN,OCENTPTS,D1(JO_RIVEROUT),LAND_FIELD, SWAPA2O1.177
+ COS_P_LATITUDE, SWAPA2O1.178
*ENDIF SWAPA2O1.179
& ATMCO2, D1(JO_CO2), CO2_ICOLS, CO2_JROWS, CO2_IMT, CO2_JMT, CCN1F405.372
+ IMT,JMT,JMTM1,ROW_LENGTH,P_ROWS,U_ROWS CJG6F401.22
&,(IMT+ROW_LENGTH)*(JMT+P_ROWS),O_FLDDEPC,O_SPCON(jocp_fkmq) CJG6F401.23
+,INVERT_OCEAN,CYCLIC_OCEAN,GLOBAL_OCEAN CJG6F401.24
&,icode,cmessage) CJG6F401.25
C SWAPA2O1.182
999 CONTINUE SWAPA2O1.183
RETURN SWAPA2O1.184
CL---------------------------------------------------------------------- SWAPA2O1.185
END SWAPA2O1.186
*ENDIF SWAPA2O1.187