File indexing completed on 2018-03-02 18:42:48 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
071fa694ec Jean*0001 #include "OCN_CPL_OPTIONS.h"
2bd29ade83 Jean*0002
69e21e3ef0 Jean*0003
0004
0005
2bd29ade83 Jean*0006 SUBROUTINE OCN_APPLY_IMPORT(
e596558d31 Jean*0007 I apply2AllFields, myTime, myIter, myThid )
69e21e3ef0 Jean*0008
0009
2bd29ade83 Jean*0010
69e21e3ef0 Jean*0011
0012
0013
0014
0015
0016
0017 IMPLICIT NONE
0018
0019 #include "SIZE.h"
0020 #include "EEPARAMS.h"
0021 #include "PARAMS.h"
0022 #include "CPL_PARAMS.h"
9ffc618587 Jean*0023 #include "SURFACE.h"
0024 #include "FFIELDS.h"
0025 #include "OCNCPL.h"
0026 #ifdef ALLOW_THSICE
0027 # include "THSICE_VARS.h"
e7c6a47db7 Jeff*0028 #endif
2bd29ade83 Jean*0029
69e21e3ef0 Jean*0030
0031
e596558d31 Jean*0032
0033
69e21e3ef0 Jean*0034
0035
0036
e596558d31 Jean*0037 LOGICAL apply2AllFields
69e21e3ef0 Jean*0038 _RL myTime
0039 INTEGER myIter
0040 INTEGER myThid
2bd29ade83 Jean*0041
69e21e3ef0 Jean*0042
0043
0044 INTEGER bi,bj,i,j
0045
0046
e596558d31 Jean*0047
d4b28e407b Jean*0048 DO bj = myByLo(myThid), myByHi(myThid)
0049 DO bi = myBxLo(myThid), myBxHi(myThid)
0050
0051
0052 IF ( apply2AllFields ) THEN
e596558d31 Jean*0053
0054
d4b28e407b Jean*0055 IF ( useImportTau ) THEN
071fa694ec Jean*0056 DO j=1-OLy,sNy+OLy
0057 DO i=1-OLx,sNx+OLx
e596558d31 Jean*0058 fu(i,j,bi,bj) = tauX(i,j,bi,bj)
0059 fv(i,j,bi,bj) = tauY(i,j,bi,bj)
0060 ENDDO
0061 ENDDO
0062 ENDIF
0063 IF ( useImportSLP ) THEN
071fa694ec Jean*0064 DO j=1-OLy,sNy+OLy
0065 DO i=1-OLx,sNx+OLx
e596558d31 Jean*0066 pLoad(i,j,bi,bj) = atmSLPr(i,j,bi,bj)
0067 ENDDO
0068 ENDDO
0069 ENDIF
d4b28e407b Jean*0070 IF ( useImportSIce ) THEN
071fa694ec Jean*0071 DO j=1-OLy,sNy+OLy
0072 DO i=1-OLx,sNx+OLx
d4b28e407b Jean*0073 sIceLoad(i,j,bi,bj) = seaIceMass(i,j,bi,bj)
e596558d31 Jean*0074 ENDDO
0075 ENDDO
0076 ENDIF
0077
0078
0079 IF ( useImportFW ) THEN
071fa694ec Jean*0080 DO j=1-OLy,sNy+OLy
0081 DO i=1-OLx,sNx+OLx
e596558d31 Jean*0082 EmPmR(i,j,bi,bj) = FWFlux (i,j,bi,bj)
0083 ENDDO
0084 ENDDO
0085 ENDIF
d4b28e407b Jean*0086 IF ( useImportFW ) THEN
071fa694ec Jean*0087 DO j=1-OLy,sNy+OLy
0088 DO i=1-OLx,sNx+OLx
e596558d31 Jean*0089 saltFlux(i,j,bi,bj)= iceSaltFlx(i,j,bi,bj)
0090 ENDDO
0091 ENDDO
0092 ENDIF
0093
0094
d4b28e407b Jean*0095 IF ( useImportHFlx ) THEN
071fa694ec Jean*0096 DO j=1-OLy,sNy+OLy
0097 DO i=1-OLx,sNx+OLx
e596558d31 Jean*0098 Qnet(i,j,bi,bj)= HeatFlux (i,j,bi,bj)
0099 ENDDO
0100 ENDDO
0101 #ifdef SHORTWAVE_HEATING
071fa694ec Jean*0102 DO j=1-OLy,sNy+OLy
0103 DO i=1-OLx,sNx+OLx
e596558d31 Jean*0104 Qsw(i,j,bi,bj) = qShortWave(i,j,bi,bj)
0105 ENDDO
0106 ENDDO
69e21e3ef0 Jean*0107 #endif
e596558d31 Jean*0108 ENDIF
0109
9ffc618587 Jean*0110 #ifdef ALLOW_THSICE
0111 IF ( useImportThSIce .AND. useThSIce ) THEN
0112 DO j=1-OLy,sNy+OLy
0113 DO i=1-OLx,sNx+OLx
0114 iceMask (i,j,bi,bj) = sIceFrac_cpl (i,j,bi,bj)
0115 iceHeight (i,j,bi,bj) = sIceThick_cpl(i,j,bi,bj)
0116 snowHeight(i,j,bi,bj) = sIceSnowH_cpl(i,j,bi,bj)
0117 Qice1 (i,j,bi,bj) = sIceQ1_cpl (i,j,bi,bj)
0118 Qice2 (i,j,bi,bj) = sIceQ2_cpl (i,j,bi,bj)
0119 ENDDO
0120 ENDDO
0121 ENDIF
0122 #endif /* ALLOW_THSICE */
0123
d4b28e407b Jean*0124
0125 ELSE
0126
0127 IF ( useImportSIce .AND. useImportSLP ) THEN
071fa694ec Jean*0128 DO j=1-OLy,sNy+OLy
0129 DO i=1-OLx,sNx+OLx
d4b28e407b Jean*0130 phi0surf(i,j,bi,bj) = atmSLPr(i,j,bi,bj)*recip_rhoConst
0131 & + gravity*seaIceMass(i,j,bi,bj)*recip_rhoConst
0132 ENDDO
0133 ENDDO
0134 ELSEIF ( useImportSIce ) THEN
071fa694ec Jean*0135 DO j=1-OLy,sNy+OLy
0136 DO i=1-OLx,sNx+OLx
2bd29ade83 Jean*0137 phi0surf(i,j,bi,bj) = pLoad(i,j,bi,bj)*recip_rhoConst
d4b28e407b Jean*0138 & + gravity*seaIceMass(i,j,bi,bj)*recip_rhoConst
0139 ENDDO
0140 ENDDO
0141 ELSEIF ( useImportSLP ) THEN
071fa694ec Jean*0142 DO j=1-OLy,sNy+OLy
0143 DO i=1-OLx,sNx+OLx
d4b28e407b Jean*0144 phi0surf(i,j,bi,bj) = atmSLPr(i,j,bi,bj)*recip_rhoConst
0145 ENDDO
0146 ENDDO
0147 ENDIF
0148
0149 IF ( useImportFW ) THEN
071fa694ec Jean*0150 DO j=1-OLy,sNy+OLy
0151 DO i=1-OLx,sNx+OLx
d4b28e407b Jean*0152 EmPmR(i,j,bi,bj) = FWFlux (i,j,bi,bj)
0153 ENDDO
0154 ENDDO
0155 ENDIF
0156
0157
0158 ENDIF
0159
e596558d31 Jean*0160
69e21e3ef0 Jean*0161 ENDDO
d4b28e407b Jean*0162 ENDDO
69e21e3ef0 Jean*0163
e596558d31 Jean*0164
0165
0166 #ifdef ATMOSPHERIC_LOADING
071fa694ec Jean*0167 IF ( useImportSLP . AND.
0168 & ( ocn_cplExch_DIC .OR. apply2AllFields ) )
77358e65ba Jean*0169 & _EXCH_XY_RS( pLoad, myThid )
071fa694ec Jean*0170 IF ( apply2AllFields ) THEN
9ffc618587 Jean*0171 IF ( useImportSIce ) _EXCH_XY_RS( sIceLoad, myThid )
071fa694ec Jean*0172 ELSEIF ( useImportSLP .OR. useImportSIce ) THEN
77358e65ba Jean*0173 _EXCH_XY_RS( phi0surf, myThid )
071fa694ec Jean*0174 ENDIF
e7c6a47db7 Jeff*0175 #else
071fa694ec Jean*0176 IF ( useImportSLP . AND. ocn_cplExch_DIC )
9ffc618587 Jean*0177 & _EXCH_XY_RS( pLoad, myThid )
e596558d31 Jean*0178 #endif
e7c6a47db7 Jeff*0179
9ffc618587 Jean*0180 IF ( useImportFW ) _EXCH_XY_RS( EmPmR, myThid )
071fa694ec Jean*0181 IF ( apply2AllFields ) THEN
9ffc618587 Jean*0182 IF ( useImportTau ) CALL EXCH_UV_XY_RS(fu,fv,.TRUE.,myThid)
0183 IF ( useImportFW ) _EXCH_XY_RS( saltFlux, myThid )
0184 IF ( useImportHFlx ) _EXCH_XY_RS( Qnet , myThid )
69e21e3ef0 Jean*0185 #ifdef SHORTWAVE_HEATING
9ffc618587 Jean*0186 IF ( useImportHFlx ) _EXCH_XY_RS( Qsw , myThid )
69e21e3ef0 Jean*0187 #endif
9ffc618587 Jean*0188 #ifdef ALLOW_THSICE
0189 IF ( useImportThSIce .AND. useThSIce ) THEN
0190 _EXCH_XY_RL( iceMask , myThid )
0191 _EXCH_XY_RL( iceHeight , myThid )
0192 _EXCH_XY_RL( snowHeight, myThid )
0193 _EXCH_XY_RL( Qice1 , myThid )
0194 _EXCH_XY_RL( Qice2 , myThid )
0195 ENDIF
0196 #endif /* ALLOW_THSICE */
e7c6a47db7 Jeff*0197 ENDIF
69e21e3ef0 Jean*0198
0199 RETURN
0200 END