File indexing completed on 2025-11-22 06:08:49 UTC
view on githubraw file Latest commit feb7fa5d on 2025-11-21 15:45:20 UTC
5ca83cd8f7 Dani*0001 #include "STREAMICE_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE STREAMICE_INIT_VARIA( myThid )
0007
0008
0009
0010
0011
0012
0013 IMPLICIT NONE
0014
0015
0016 #include "SIZE.h"
0017 #include "GRID.h"
0018 #include "SET_GRID.h"
0019 #include "EEPARAMS.h"
0020 #include "PARAMS.h"
0021 #include "STREAMICE.h"
0022 #include "STREAMICE_CG.h"
0023 #include "STREAMICE_ADV.h"
0024
0025
0026
0027 INTEGER myThid
0028
0029
0030 #ifdef ALLOW_STREAMICE
0031
0032
07e785229e dngo*0033 INTEGER i, j, k, bi, bj, Gi, Gj
5ca83cd8f7 Dani*0034 INTEGER col_y, col_x
0035 _RL slope_pos, c1, x, y, lenx, leny
0036 CHARACTER*(MAX_LEN_MBUF) msgBuf
07e785229e dngo*0037 #ifdef STREAMICE_3D_GLEN_CONST
0038 INTEGER r
0039 #endif
0040 #ifdef ALLOW_CTRL
5ca83cd8f7 Dani*0041 _RS dummyRS
07e785229e dngo*0042 #endif
5ca83cd8f7 Dani*0043
0044
0045
0046
0047
0048 DO bj = myByLo(myThid), myByHi(myThid)
0049 DO bi = myBxLo(myThid), myBxHi(myThid)
217ff6d33b Jean*0050 DO j=1-OLy,sNy+OLy
0051 DO i=1-OLx,sNx+OLx
5ca83cd8f7 Dani*0052 H_streamIce(i,j,bi,bj) = 0. _d 0
0053 U_streamice(i,j,bi,bj) = 0. _d 0
0054 V_streamice(i,j,bi,bj) = 0. _d 0
0055 visc_streamice(i,j,bi,bj) = 0. _d 0
0056 tau_beta_eff_streamice(i,j,bi,bj) = 0. _d 0
0057 float_frac_streamice(i,j,bi,bj) = 0. _d 0
0058 base_el_streamice(i,j,bi,bj) = 0. _d 0
0059 surf_el_streamice(i,j,bi,bj) = 0. _d 0
0060 area_shelf_streamice(i,j,bi,bj) = 0. _d 0
0061 mass_ice_streamice(i,j,bi,bj) = 0. _d 0
0062 BDOT_streamice(i,j,bi,bj) = 0. _d 0
0fbff46b46 dngo*0063 u_streamice_ext(i,j,bi,bj) = 0. _d 0
0064 v_streamice_ext(i,j,bi,bj) = 0. _d 0
52d1822301 Dani*0065 #ifdef ALLOW_STREAMICE_TIMEDEP_FORCING
0066 BDOT_streamice1(i,j,bi,bj) = 0. _d 0
96b006450c dngo*0067 streamice_bdot_maxmelt1(i,j,bi,bj) = 0. _d 0
0068 streamice_bglen1(i,j,bi,bj) = 0. _d 0
0069 streamice_beta1(i,j,bi,bj) = 0. _d 0
c266793079 Jean*0070 #endif
96b006450c dngo*0071 streamice_bdot_depth_maxmelt_v(i,j,bi,bj) = 0. _d 0
0072 streamice_bdot_maxmelt_v(i,j,bi,bj) = 0. _d 0
5ca83cd8f7 Dani*0073 ADOT_streamice(i,j,bi,bj) = streamice_adot_uniform
0074 C_basal_friction(i,j,bi,bj) = C_basal_fric_const
bdd8102d3e Dani*0075 #ifndef STREAMICE_3D_GLEN_CONST
5ca83cd8f7 Dani*0076 B_glen(i,j,bi,bj) = B_glen_isothermal
bdd8102d3e Dani*0077 #else
0078 do k=1,Nr
0079 B_glen(i,j,k,bi,bj) = B_glen_isothermal
0080 enddo
0081 #endif
5ca83cd8f7 Dani*0082 H_streamice_prev(i,j,bi,bj) = 0. _d 0
bdd8102d3e Dani*0083 #ifdef STREAMICE_STRESS_BOUNDARY_CONTROL
c266793079 Jean*0084 STREAMICE_u_normal_pert(i,j,bi,bj) = 0. _d 0
0085 STREAMICE_v_normal_pert(i,j,bi,bj) = 0. _d 0
0086 STREAMICE_u_shear_pert(i,j,bi,bj) = 0. _d 0
0087 STREAMICE_v_shear_pert(i,j,bi,bj) = 0. _d 0
bdd8102d3e Dani*0088 STREAMICE_u_normal_stress(i,j,bi,bj) = 0. _d 0
0089 STREAMICE_v_normal_stress(i,j,bi,bj) = 0. _d 0
0090 STREAMICE_u_shear_stress(i,j,bi,bj) = 0. _d 0
0091 STREAMICE_v_shear_stress(i,j,bi,bj) = 0. _d 0
52d1822301 Dani*0092 #ifdef ALLOW_STREAMICE_TIMEDEP_FORCING
0093 STREAMICE_u_normal_stress1(i,j,bi,bj) = 0. _d 0
0094 STREAMICE_v_normal_stress1(i,j,bi,bj) = 0. _d 0
0095 STREAMICE_u_shear_stress1(i,j,bi,bj) = 0. _d 0
0096 STREAMICE_v_shear_stress1(i,j,bi,bj) = 0. _d 0
0097 #endif
bdd8102d3e Dani*0098 #endif
5ca83cd8f7 Dani*0099 #ifdef ALLOW_STREAMICE_2DTRACER
0100 #ifdef STREAMICE_TRACER_AB
0101 GAD_trac_2d (i,j,bi,bj) = 0. _d 0
07e785229e dngo*0102
5ca83cd8f7 Dani*0103 #endif
0104 #endif
c266793079 Jean*0105 #ifdef ALLOW_AUTODIFF
5ca83cd8f7 Dani*0106 ru_old_si(i,j,bi,bj) = 0. _d 0
0107 rv_old_si(i,j,bi,bj) = 0. _d 0
0108 zu_old_si(i,j,bi,bj) = 0. _d 0
0109 zv_old_si(i,j,bi,bj) = 0. _d 0
07e785229e dngo*0110
5ca83cd8f7 Dani*0111 #endif
0112 #ifdef USE_ALT_RLOW
0113 R_low_si(i,j,bi,bj) = 0. _d 0
0114 #endif
0115
0116 #ifdef STREAMICE_HYBRID_STRESS
0117 do k=1,Nr
0118 visc_streamice_full(i,j,k,bi,bj) =
0119 & eps_glen_min**((1-n_glen)/n_glen)
217ff6d33b Jean*0120 enddo
5ca83cd8f7 Dani*0121 streamice_taubx (i,j,bi,bj) = 0. _d 0
0122 streamice_tauby (i,j,bi,bj) = 0. _d 0
0123 #endif
0124 ENDDO
0125 ENDDO
0126
0127 #ifdef ALLOW_COST_TEST
0128 cost_func1_streamice (bi,bj) = 0.0
bdd8102d3e Dani*0129 cost_vel_streamice (bi,bj) = 0.0
0130 cost_surf_streamice (bi,bj) = 0.0
96b006450c dngo*0131 cost_smooth_fric_streamice (bi,bj) = 0.0
0132 cost_smooth_glen_streamice (bi,bj) = 0.0
0133 cost_prior_streamice (bi,bj) = 0.0
feb7fa5d1e dngo*0134 cost_smooth_bdotmelt_streamice(bi,bj) = 0.0
5ca83cd8f7 Dani*0135 #endif
0136
0137 ENDDO
0138 ENDDO
0139
07e785229e dngo*0140 DO j = 1-OLy, sNy+OLy
0141 DO i = 1-OLx, sNx+OLx
5ca83cd8f7 Dani*0142 DO bj = myByLo(myThid), myByHi(myThid)
0143 DO bi = myBxLo(myThid), myBxHi(myThid)
0144
0145 DO col_x=-1,1
0146 DO col_y=-1,1
0147 streamice_cg_A1(i,j,bi,bj,col_x,col_y)=0.0
0148 streamice_cg_A2(i,j,bi,bj,col_x,col_y)=0.0
0149 streamice_cg_A3(i,j,bi,bj,col_x,col_y)=0.0
0150 streamice_cg_A4(i,j,bi,bj,col_x,col_y)=0.0
0151 ENDDO
0152 ENDDO
0153
0154 ENDDO
0155 ENDDO
0156 ENDDO
0157 ENDDO
0158
0159
0160
0161 DO bj = myByLo(myThid), myByHi(myThid)
0162 DO bi = myBxLo(myThid), myBxHi(myThid)
217ff6d33b Jean*0163 DO j=1-OLy,sNy+OLy
0164 DO i=1-OLx,sNx+OLx
5ca83cd8f7 Dani*0165 STREAMICE_hmask(i,j,bi,bj) = -1.0
0166 STREAMICE_umask(i,j,bi,bj) = 0.0
0167 STREAMICE_vmask(i,j,bi,bj) = 0.0
0168 STREAMICE_ufacemask(i,j,bi,bj) = 0.0
0169 STREAMICE_vfacemask(i,j,bi,bj) = 0.0
0170 STREAMICE_float_cond(i,j,bi,bj) = 0.0
0171 ENDDO
0172 ENDDO
0173 ENDDO
0174 ENDDO
0175
0176 #ifdef USE_ALT_RLOW
07e785229e dngo*0177
5ca83cd8f7 Dani*0178 IF ( STREAMICEtopogFile .NE. ' ' ) THEN
0179 _BARRIER
0180
217ff6d33b Jean*0181 CALL READ_FLD_XY_RL( STREAMICEtopogFile, '',
5ca83cd8f7 Dani*0182 & R_low_si, 0, myThid )
217ff6d33b Jean*0183
5ca83cd8f7 Dani*0184 ELSE
0185 WRITE(msgBuf,'(A)') 'STREAMICE TOPOG - FILENAME MISSING'
0186 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0187 & SQUEEZE_RIGHT , 1)
0188 ENDIF
0189 #endif
0190
07e785229e dngo*0191
5ca83cd8f7 Dani*0192
0193 #ifndef STREAMICE_GEOM_FILE_SETUP
217ff6d33b Jean*0194
5ca83cd8f7 Dani*0195 IF ( STREAMICEthickInit.EQ.'PARAM' ) THEN
0196
0197 WRITE(msgBuf,'(A)') 'initializing analytic thickness'
0198 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0199 & SQUEEZE_RIGHT , 1)
0200
0201 slope_pos = shelf_edge_pos - shelf_flat_width
217ff6d33b Jean*0202 c1 = 0.0
5ca83cd8f7 Dani*0203 IF (shelf_slope_scale .GT. 0.0) THEN
0204 c1 = 1.0 / shelf_slope_scale
0205 ENDIF
0206
0207 DO bj = myByLo(myThid), myByHi(myThid)
0208 DO bi = myBxLo(myThid), myBxHi(myThid)
0209 DO j=1,sNy
0210 DO i=1,sNx
0211 Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
0212 Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
217ff6d33b Jean*0213
5ca83cd8f7 Dani*0214 IF ((Gi.lt.Nx).and.(Gj.lt.Ny)) THEN
217ff6d33b Jean*0215
5ca83cd8f7 Dani*0216
0217 IF (.TRUE.) THEN
0218 IF (xC(i-1,j,bi,bj).GE.shelf_edge_pos) THEN
0219 area_shelf_streamice(i,j,bi,bj) = 0. _d 0
0220 STREAMICE_hmask(i,j,bi,bj) = 0. _d 0
0221 ELSE
0222
0223 IF (xC(i,j,bi,bj).GT.slope_pos) THEN
0224 H_streamice (i,j,bi,bj) = shelf_min_draft
0225 ELSE
217ff6d33b Jean*0226 H_streamice (i,j,bi,bj) = (shelf_min_draft +
0227 & (shelf_max_draft - shelf_min_draft) *
e321477f28 Dani*0228 & min (oneRL, (c1*(slope_pos-xC(i,j,bi,bj)))**2))
5ca83cd8f7 Dani*0229 ENDIF
0230
0231 IF (xC(i,j,bi,bj).GT.shelf_edge_pos) THEN
0232 area_shelf_streamice(i,j,bi,bj) = rA(i,j,bi,bj) *
0233 & (shelf_edge_pos-xG(i,j,bi,bj)) /
0234 & (xG(i+1,j,bi,bj)-xG(i,j,bi,bj))
0235 IF (area_shelf_streamice(i,j,bi,bj).gt. 0. _d 0) THEN
0236 STREAMICE_hmask(i,j,bi,bj) = 2.0
0237 ELSE
0238 STREAMICE_hmask(i,j,bi,bj) = 0.0
0239 H_streamice(i,j,bi,bj) = 0.0
0240 ENDIF
0241 ELSE
217ff6d33b Jean*0242 area_shelf_streamice(i,j,bi,bj) = rA(i,j,bi,bj)
5ca83cd8f7 Dani*0243 STREAMICE_hmask(i,j,bi,bj) = 1.0
0244 ENDIF
0245
0246 ENDIF
0247 ENDIF
217ff6d33b Jean*0248 ENDIF
5ca83cd8f7 Dani*0249 ENDDO
0250 ENDDO
0251 ENDDO
0252 ENDDO
0253
0254 ELSE IF ( STREAMICEthickInit.EQ.'FILE' ) THEN
0255
0256 IF ( STREAMICEthickFile .NE. ' ' ) THEN
0257 _BARRIER
0258
0259 CALL READ_FLD_XY_RL( STREAMICEthickFile, ' ', H_streamice,
0260 & 0, myThid )
0261 DO bj = myByLo(myThid), myByHi(myThid)
0262 DO bi = myBxLo(myThid), myBxHi(myThid)
0263 DO j=1,sNy
0264 DO i=1,sNx
0265 Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
0266 Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
0267 IF ((Gi.lt.Nx.OR.STREAMICE_EW_periodic).and.
0268 & (Gj.lt.Ny.OR.STREAMICE_NS_periodic)) THEN
0269 IF (H_streamice(i,j,bi,bj).GT.0. _d 0) THEN
0270 area_shelf_streamice(i,j,bi,bj) = rA(i,j,bi,bj)
0271 STREAMICE_hmask(i,j,bi,bj) = 1.0
0272 ELSE
0273 area_shelf_streamice(i,j,bi,bj) = 0. _d 0
0274 STREAMICE_hmask(i,j,bi,bj) = 0. _d 0
0275 ENDIF
0276 Do k=1,Nr
0277 STREAMICE_ctrl_mask(i,j,k,bi,bj) = 1. _d 0
0278 enddo
0279 ENDIF
0280 ENDDO
0281 ENDDO
0282 ENDDO
0283 ENDDO
0284 ELSE
0285 WRITE(msgBuf,'(A)') 'INIT THICKNESS - FILENAME MISSING'
0286 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0287 & SQUEEZE_RIGHT , 1)
0288 ENDIF
217ff6d33b Jean*0289
5ca83cd8f7 Dani*0290 ELSE
0291
0292 WRITE(msgBuf,'(A)') 'INIT THICKNESS - NOT IMPLENTED'
0293 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0294 & SQUEEZE_RIGHT , 1)
0295 ENDIF
0296
0297 #else
07e785229e dngo*0298
5ca83cd8f7 Dani*0299
0300 IF ( STREAMICEthickFile .NE. ' ' ) THEN
0301 _BARRIER
0302
0303 CALL READ_FLD_XY_RL( STREAMICEthickFile, ' ', H_streamice,
0304 & 0, myThid )
0305 ELSE
0306 WRITE(msgBuf,'(A)') 'INIT THICKNESS - FILENAME MISSING'
0307 CALL PRINT_ERROR( msgBuf, myThid)
0308 ENDIF
0309
0310 IF ( STREAMICEhMaskFile .NE. ' ' ) THEN
0311 _BARRIER
0312
0313 CALL READ_FLD_XY_RS( STREAMICEhMaskFile, ' ', STREAMICE_hmask,
0314 & 0, myThid )
0315 ELSE
0316 WRITE(msgBuf,'(A)') 'INIT HMASK - FILENAME MISSING'
0317 CALL PRINT_ERROR( msgBuf, myThid)
0318 ENDIF
0319
85b328ee93 dngo*0320 DO bj = myByLo(myThid), myByHi(myThid)
0321 DO bi = myBxLo(myThid), myBxHi(myThid)
07e785229e dngo*0322 DO j=1-OLy,sNy+OLy
0323 DO i=1-OLx,sNx+OLx
4bb1a1fbf9 Jean*0324 IF ( H_streamice(i,j,bi,bj) .GT. zeroRL .AND.
0325 & STREAMICE_hmask(i,j,bi,bj) .EQ. oneRS ) THEN
85b328ee93 dngo*0326 area_shelf_streamice(i,j,bi,bj) = rA(i,j,bi,bj)
0327 ENDIF
0328 ENDDO
0329 ENDDO
0330 ENDDO
0331 ENDDO
0332
217ff6d33b Jean*0333 #endif
07e785229e dngo*0334
5ca83cd8f7 Dani*0335
548d867d60 Dani*0336 IF ( .NOT. ( startTime .EQ. baseTime .AND. nIter0 .EQ. 0
0337 & .AND. pickupSuff .EQ. ' ') ) THEN
c266793079 Jean*0338
548d867d60 Dani*0339 CALL STREAMICE_READ_PICKUP ( myThid )
c266793079 Jean*0340
548d867d60 Dani*0341 ENDIF
0342
07e785229e dngo*0343
5ca83cd8f7 Dani*0344
07e785229e dngo*0345
5ca83cd8f7 Dani*0346
0347 IF ( STREAMICEGlenConstConfig.EQ.'FILE' ) THEN
0348
0349 IF ( STREAMICEGlenConstFile .NE. ' ' ) THEN
0350 _BARRIER
0351
bdd8102d3e Dani*0352 #ifdef STREAMICE_3D_GLEN_CONST
0353
0354 CALL READ_FLD_XYZ_RL( STREAMICEGlenConstFile, ' ',
0355 & B_glen, 0, myThid )
0356
0357 #else
0358
217ff6d33b Jean*0359 CALL READ_FLD_XY_RL( STREAMICEGlenConstFile, ' ',
5ca83cd8f7 Dani*0360 & B_glen, 0, myThid )
96b006450c dngo*0361 CALL READ_FLD_XY_RL( STREAMICEGlenConstFile, ' ',
0362 & B_glen_init, 0, myThid )
5ca83cd8f7 Dani*0363
bdd8102d3e Dani*0364 #endif
5ca83cd8f7 Dani*0365 ELSE
0366 WRITE(msgBuf,'(A)') 'INIT GLEN - FILENAME MISSING'
0367 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0368 & SQUEEZE_RIGHT , 1)
0369 ENDIF
217ff6d33b Jean*0370
5ca83cd8f7 Dani*0371 ELSE IF (STREAMICEGlenConstConfig.EQ.'UNIFORM' ) THEN
0372
0373 DO bj = myByLo(myThid), myByHi(myThid)
0374 DO bi = myBxLo(myThid), myBxHi(myThid)
0375 DO j=1,sNy
0376 DO i=1,sNx
bdd8102d3e Dani*0377 #ifdef STREAMICE_3D_GLEN_CONST
0378 DO r=1,Nr
0379 B_glen(i,j,r,bi,bj) = B_glen_isothermal
0380 ENDDO
0381 #else
0382 B_glen(i,j,bi,bj) = B_glen_isothermal
0383 #endif
5ca83cd8f7 Dani*0384 ENDDO
0385 ENDDO
0386 ENDDO
0387 ENDDO
0388
0389 ELSE
0390
0391 WRITE(msgBuf,'(A)') 'INIT GLEN CONSTANT - NOT IMPLENTED'
0392 CALL PRINT_ERROR( msgBuf, myThid)
0393 STOP 'ABNORMAL END: S/R STREAMICE_INIT_VAR'
0394 ENDIF
0395
07e785229e dngo*0396
5ca83cd8f7 Dani*0397
07e785229e dngo*0398
0a8c8b23d7 Dani*0399
0400 IF ( STREAMICEBdotConfig.EQ.'FILE' ) THEN
0401
0402 IF ( STREAMICEBdotFile .NE. ' ' ) THEN
0403 _BARRIER
0404
0405 CALL READ_FLD_XY_RL( STREAMICEBdotFile, ' ',
0406 & BDOT_streamice, 0, myThid )
0407
0408 ELSE
0409 WRITE(msgBuf,'(A)') 'INIT BDOT - FILENAME MISSING'
0410 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0411 & SQUEEZE_RIGHT , 1)
0412 ENDIF
0413
96b006450c dngo*0414 ELSEIF ( STREAMICEBdotConfig.EQ.'PARAM' ) THEN
0415
0416 IF ( STREAMICEBdotDepthFile .NE. ' ' ) THEN
0417 _BARRIER
0418
0419 CALL READ_FLD_XY_RL( STREAMICEBdotDepthFile, ' ',
0420 & streamice_bdot_depth_maxmelt_v, 0, myThid )
0421
0422 ENDIF
0423
0424 IF ( STREAMICEBdotMaxMeltFile .NE. ' ' ) THEN
0425 _BARRIER
0426
0427 CALL READ_FLD_XY_RL( STREAMICEBdotMaxMeltFile, ' ',
0428 & streamice_bdot_maxmelt_v , 0, myThid )
0429
0430 ENDIF
0431
0a8c8b23d7 Dani*0432 ENDIF
0433
07e785229e dngo*0434
0435
0436
0437
0438 IF ( STREAMICEAdotConfig.EQ.'FILE' ) THEN
0439
0440 IF ( STREAMICEAdotFile .NE. ' ' ) THEN
0441 _BARRIER
0442
0443 CALL READ_FLD_XY_RL( STREAMICEAdotFile, ' ',
0444 & ADOT_streamice, 0, myThid )
0445
0446 ELSE
0447 WRITE(msgBuf,'(A)') 'INIT ADOT - FILENAME MISSING'
0448 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0449 & SQUEEZE_RIGHT , 1)
0450 ENDIF
0451
0452 ENDIF
0453
0454
0a8c8b23d7 Dani*0455
0fbff46b46 dngo*0456 IF ( STREAMICE_vel_ext.OR.STREAMICE_vel_ext_cgrid ) THEN
0457
0458 IF ( STREAMICE_uvel_ext_file .NE. ' ' ) THEN
0459 _BARRIER
0460
0461 CALL READ_FLD_XY_RL( STREAMICE_uvel_ext_file, ' ',
0462 & u_streamice_ext, 0, myThid )
0463
0464 DO bj = myByLo(myThid), myByHi(myThid)
0465 DO bi = myBxLo(myThid), myBxHi(myThid)
0466 DO j=1-OLy,sNy+OLy
0467 DO i=1-OLx,sNx+OLx
0468 U_streamice(i,j,bi,bj) = U_streamice_ext(i,j,bi,bj)
0469 ENDDO
0470 ENDDO
0471 ENDDO
0472 ENDDO
0473
0474 ELSE
0475 WRITE(msgBuf,'(A)') 'INIT UVEL - FILENAME MISSING'
0476 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0477 & SQUEEZE_RIGHT , 1)
0478 ENDIF
0479
0480 IF ( STREAMICE_vvel_ext_file .NE. ' ' ) THEN
0481 _BARRIER
0482
0483 CALL READ_FLD_XY_RL( STREAMICE_vvel_ext_file, ' ',
0484 & v_streamice_ext, 0, myThid )
0485
0486 DO bj = myByLo(myThid), myByHi(myThid)
0487 DO bi = myBxLo(myThid), myBxHi(myThid)
0488 DO j=1-OLy,sNy+OLy
0489 DO i=1-OLx,sNx+OLx
0490 V_streamice(i,j,bi,bj) = V_streamice_ext(i,j,bi,bj)
0491 ENDDO
0492 ENDDO
0493 ENDDO
0494 ENDDO
0495
0496 ELSE
0497 WRITE(msgBuf,'(A)') 'INIT VVEL - FILENAME MISSING'
0498 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0499 & SQUEEZE_RIGHT , 1)
0500 ENDIF
0501
0502 ENDIF
0503
07e785229e dngo*0504
5ca83cd8f7 Dani*0505
0506 IF ( STREAMICEbasalTracConfig.EQ.'FILE' ) THEN
0507
0508 IF ( STREAMICEbasalTracFile .NE. ' ' ) THEN
0509 _BARRIER
0510
217ff6d33b Jean*0511 CALL READ_FLD_XY_RL( STREAMICEbasalTracFile, ' ',
5ca83cd8f7 Dani*0512 & C_basal_friction, 0, myThid )
96b006450c dngo*0513 CALL READ_FLD_XY_RL( STREAMICEbasalTracFile, ' ',
0514 & C_basal_fric_init, 0, myThid )
5ca83cd8f7 Dani*0515
0516 ELSE
0517 WRITE(msgBuf,'(A)') 'INIT C_BASAL - FILENAME MISSING'
0518 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0519 & SQUEEZE_RIGHT , 1)
0520 ENDIF
217ff6d33b Jean*0521
5ca83cd8f7 Dani*0522 ELSE IF (STREAMICEbasalTracConfig.EQ.'UNIFORM' ) THEN
0523
0524 DO bj = myByLo(myThid), myByHi(myThid)
0525 DO bi = myBxLo(myThid), myBxHi(myThid)
0526 DO j=1,sNy
0527 DO i=1,sNx
0528 C_basal_friction(i,j,bi,bj) = C_basal_fric_const
0529 ENDDO
0530 ENDDO
0531 ENDDO
0532 ENDDO
0533
0534 ELSE IF (STREAMICEbasalTracConfig.EQ.'2DPERIODIC' ) THEN
217ff6d33b Jean*0535
5ca83cd8f7 Dani*0536 lenx = sNx*nSx*nPx*delX(1)
0537 leny = sNy*nSy*nPy*delY(1)
0538 DO bj = myByLo(myThid), myByHi(myThid)
0539 DO bi = myBxLo(myThid), myBxHi(myThid)
0540 DO j=1,sNy
0541 DO i=1,sNx
0542 x = xC(i,j,bi,bj)
0543 y = yC(i,j,bi,bj)
217ff6d33b Jean*0544 C_basal_friction(i,j,bi,bj) =
5ca83cd8f7 Dani*0545 & sqrt(C_basal_fric_const**2*
0546 & (1+sin(2*streamice_kx_b_init*PI*x/lenx)*
0547 & sin(2*streamice_ky_b_init*PI*y/leny)))
0548 ENDDO
0549 ENDDO
0550 ENDDO
0551 ENDDO
0552
0553 ELSE IF (STREAMICEbasalTracConfig.EQ.'1DPERIODIC' ) THEN
217ff6d33b Jean*0554
5ca83cd8f7 Dani*0555 lenx = sNx*nSx*nPx*delX(1)
0556 DO bj = myByLo(myThid), myByHi(myThid)
0557 DO bi = myBxLo(myThid), myBxHi(myThid)
0558 DO j=1,sNy
0559 DO i=1,sNx
0560 x = xC(i,j,bi,bj)
0561 y = yC(i,j,bi,bj)
217ff6d33b Jean*0562 C_basal_friction(i,j,bi,bj) =
5ca83cd8f7 Dani*0563 & sqrt(C_basal_fric_const**2*(1+
0564 & sin(2*streamice_kx_b_init*PI*x/lenx)))
0565 ENDDO
0566 ENDDO
0567 ENDDO
0568 ENDDO
0569
0570 ELSE
0571
0572 WRITE(msgBuf,'(A)') 'INIT TRAC - NOT IMPLENTED'
0573 CALL PRINT_ERROR( msgBuf, myThid)
0574 STOP 'ABNORMAL END: S/R STREAMICE_INIT_VAR'
0575 ENDIF
0576
07e785229e dngo*0577
5ca83cd8f7 Dani*0578
0579 #ifdef ALLOW_STREAMICE_2DTRACER
0580
0581 IF ( STREAMICETRAC2DINITFILE .NE. ' ' ) THEN
0582 _BARRIER
0583
0584 CALL READ_FLD_XY_RL( STREAMICETRAC2dInitFile, ' ',
0585 & trac2d, 0, myThid )
0586
0587 ELSE
0588 WRITE(msgBuf,'(A)') 'TRAC2dInit - NO FILE SPECIFIED'
0589 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0590 & SQUEEZE_RIGHT , 1)
0591 DO bj = myByLo(myThid), myByHi(myThid)
0592 DO bi = myBxLo(myThid), myBxHi(myThid)
0593 DO j=1,sNy
0594 DO i=1,sNx
0595 trac2d(i,j,bi,bj) = 0.0
0596 ENDDO
0597 ENDDO
0598 ENDDO
0599 ENDDO
0600
0601 ENDIF
0602
0603 _EXCH_XY_RL (trac2d, myThid)
0604
0605 #endif /*STREAMICE_ALLOW_2DTRACER*/
0606
bdd8102d3e Dani*0607 #ifdef STREAMICE_STRESS_BOUNDARY_CONTROL
0608 IF ( STREAMICEuNormalStressFile .NE. ' ') THEN
0609 _BARRIER
0610 CALL READ_FLD_XY_RL ( STREAMICEuNormalStressFile, ' ',
0611 & streamice_u_normal_stress, 0, myThid )
0612 ELSE
0613 WRITE(msgBuf,'(A)') 'IMPOSED NORMAL U STRESS NOT SET'
0614 CALL PRINT_ERROR( msgBuf, myThid)
0615 ENDIF
0616
0617 IF ( STREAMICEvNormalStressFile .NE. ' ') THEN
0618 _BARRIER
0619 CALL READ_FLD_XY_RL ( STREAMICEvNormalStressFile, ' ',
0620 & streamice_v_normal_stress, 0, myThid )
0621 ELSE
0622 WRITE(msgBuf,'(A)') 'IMPOSED NORMAL V STRESS NOT SET'
0623 CALL PRINT_ERROR( msgBuf, myThid)
0624 ENDIF
0625
0626 IF ( STREAMICEuShearStressFile .NE. ' ') THEN
0627 _BARRIER
0628 CALL READ_FLD_XY_RL ( STREAMICEuShearStressFile, ' ',
0629 & streamice_u_shear_stress, 0, myThid )
0630 ELSE
0631 WRITE(msgBuf,'(A)') 'IMPOSED SHEAR U STRESS NOT SET'
0632 CALL PRINT_ERROR( msgBuf, myThid)
0633 ENDIF
0634
0635 IF ( STREAMICEvShearStressFile .NE. ' ') THEN
0636 _BARRIER
0637 CALL READ_FLD_XY_RL ( STREAMICEvShearStressFile, ' ',
0638 & streamice_v_shear_stress, 0, myThid )
0639 ELSE
0640 WRITE(msgBuf,'(A)') 'IMPOSED SHEAR V STRESS NOT SET'
0641 CALL PRINT_ERROR( msgBuf, myThid)
0642 ENDIF
0643
c266793079 Jean*0644 CALL EXCH_XY_RL
bdd8102d3e Dani*0645 & (streamice_v_shear_stress, myThid)
c266793079 Jean*0646 CALL EXCH_XY_RL
bdd8102d3e Dani*0647 & (streamice_u_shear_stress, myThid)
c266793079 Jean*0648 CALL EXCH_XY_RL
bdd8102d3e Dani*0649 & (streamice_v_normal_stress, myThid)
c266793079 Jean*0650 CALL EXCH_XY_RL
bdd8102d3e Dani*0651 & (streamice_u_normal_stress, myThid)
0652
0653 #endif /*STREAMICE_STRESS_BOUNDARY_CONTROL*/
0654
5ca83cd8f7 Dani*0655 CALL STREAMICE_UPD_FFRAC_UNCOUPLED ( myThid )
0656
0657 _EXCH_XY_RL(H_streamice, myThid )
f1d1cc05cd Dani*0658 _EXCH_XY_RS(STREAMICE_hmask, myThid )
5ca83cd8f7 Dani*0659 _EXCH_XY_RL(area_shelf_streamice, myThid )
0660 _EXCH_XY_RL(C_basal_friction, myThid )
0fbff46b46 dngo*0661 _EXCH_XY_RL(u_streamice_ext, myThid )
0662 _EXCH_XY_RL(v_streamice_ext, myThid )
bdd8102d3e Dani*0663 #ifndef STREAMICE_3D_GLEN_CONST
5ca83cd8f7 Dani*0664 _EXCH_XY_RL(B_glen, myThid )
bdd8102d3e Dani*0665 #else
0666 CALL EXCH_3D_RL(B_glen, Nr,myThid )
0667 #endif
0668
5ca83cd8f7 Dani*0669 #ifdef USE_ALT_RLOW
0670 _EXCH_XY_RL(R_low_si, myThid )
0671 #endif
0672
07e785229e dngo*0673
5ca83cd8f7 Dani*0674
07e785229e dngo*0675
5ca83cd8f7 Dani*0676
07e785229e dngo*0677
0678
0679
5ca83cd8f7 Dani*0680
351fd6b6a4 Dani*0681 #if (defined (ALLOW_AUTODIFF))
feb7fa5d1e dngo*0682 #ifndef ALLOW_STREAMICE_FP_ADJ
5ca83cd8f7 Dani*0683
0684 CALL STREAMICE_UPD_FFRAC_UNCOUPLED ( myThid )
0685 CALL STREAMICE_VELMASK_UPD (myThid)
95afe7199b Dani*0686
351fd6b6a4 Dani*0687 CALL STREAMICE_VEL_SOLVE ( myThid,
95afe7199b Dani*0688 & streamice_max_nl_iter,
0689 & streamice_max_cg_iter,
0690 & 0 )
0691
5ca83cd8f7 Dani*0692 #endif
95afe7199b Dani*0693 #endif
0694
217ff6d33b Jean*0695 CALL WRITE_FLD_XY_RL ( "C_basal_fric", "",
5ca83cd8f7 Dani*0696 & C_basal_friction, 0, myThid )
0697 CALL WRITE_FLD_XY_RL ( "B_glen_sqrt", "",
0698 & B_glen, 0, myThid )
217ff6d33b Jean*0699 CALL WRITE_FLD_XY_RL ( "H_streamice", "init",
5ca83cd8f7 Dani*0700 & H_streamIce, 0, myThid )
0701 #ifdef ALLOW_STREAMICE_2DTRACER
0702 CALL WRITE_FLD_XY_RL ( "2DTracer", "init",
0703 & trac2d, 0, myThid )
0704 #endif
217ff6d33b Jean*0705 CALL WRITE_FLD_XY_RL ( "area_shelf_streamice", "init",
5ca83cd8f7 Dani*0706 & area_shelf_streamice, 0, myThid )
217ff6d33b Jean*0707 CALL WRITE_FLD_XY_RS ( "STREAMICE_hmask", "init",
5ca83cd8f7 Dani*0708 & STREAMICE_hmask, 0, myThid )
0709 #ifdef ALLOW_CTRL
0710 CALL ACTIVE_WRITE_GEN_RS( 'maskCtrlst', STREAMICE_ctrl_mask,
217ff6d33b Jean*0711 & 'XY', Nr, 1, .FALSE., 0, myThid, dummyRS )
5ca83cd8f7 Dani*0712 #endif
07e785229e dngo*0713
0714
0715
0716
0717
5ca83cd8f7 Dani*0718
217ff6d33b Jean*0719 CALL WRITE_FLD_XY_RL ( "U_init", "",
5ca83cd8f7 Dani*0720 & C_basal_friction, 0, myThid )
217ff6d33b Jean*0721 CALL WRITE_FLD_XY_RL ( "V_init", "",
5ca83cd8f7 Dani*0722 & V_streamice, 0, myThid )
0723 #ifdef USE_ALT_RLOW
217ff6d33b Jean*0724 CALL WRITE_FLD_XY_RL ( "R_low_si", "init",
5ca83cd8f7 Dani*0725 & R_low_si, 0, myThid )
0726 #endif
0727
07e785229e dngo*0728
0729
0730
5ca83cd8f7 Dani*0731
0732 #endif /* ALLOW_STREAMICE */
0733
0734 RETURN
0735 END