File indexing completed on 2020-04-22 05:11:27 UTC
view on githubraw file Latest commit 07e78522 on 2020-04-21 13:33:29 UTC
5ca83cd8f7 Dani*0001 #include "STREAMICE_OPTIONS.h"
0002
0003
0004
0005
0006
0007
0008 SUBROUTINE STREAMICE_CHECK( myThid )
0009
0010
0011
0012
0013
0014 IMPLICIT NONE
0015 #include "SIZE.h"
0016 #include "GRID.h"
0017 #include "EEPARAMS.h"
0018 #include "PARAMS.h"
0019 #include "STREAMICE.h"
0020 #include "STREAMICE_CG.h"
0021 #include "STREAMICE_BDRY.h"
0022
0023
0024 INTEGER myThid
0025
0026
0027 #ifdef ALLOW_STREAMICE
0028
0029
0030 CHARACTER*(MAX_LEN_MBUF) msgBuf
07e785229e dngo*0031
0032
5ca83cd8f7 Dani*0033
0034 _BEGIN_MASTER(myThid)
0035
0036 WRITE(msgBuf,'(A)') 'STREAMICE_CHECK: #define STREAMICE'
0037 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0038 & SQUEEZE_RIGHT , 1)
0039
07e785229e dngo*0040 #ifndef STREAMICE_COULOMB_SLIDING
0041
0042 IF (STREAMICE_allow_reg_coulomb) THEN
0043
0044 WRITE(msgBuf,'(A)')
0045 & 'STREAMICE_CHECK: STREAMICE_COULOMB_SLIDING must be defined'
0046 CALL PRINT_ERROR( msgBuf, myThid )
0047
0048 ENDIF
0049
0050 #endif
0051
0052 IF(n_basal_friction .lt. 0.0) THEN
0053 WRITE(msgBuf,'(A)')
0054 & 'STREAMICE_CHECK: n_basal_friction must be nonnegative number'
0055 CALL PRINT_ERROR( msgBuf, myThid )
0056 ENDIF
0057
5ca83cd8f7 Dani*0058
0059
217ff6d33b Jean*0060 CALL WRITE_0D_I( streamice_max_cg_iter, INDEX_NONE,
5ca83cd8f7 Dani*0061 & ' max cg interations =',
0062 & ' /* user defined parameter */')
217ff6d33b Jean*0063 CALL WRITE_0D_I( streamice_max_nl_iter, INDEX_NONE,
5ca83cd8f7 Dani*0064 & ' max nonlin interations =',
0065 & ' /* user defined parameter */')
217ff6d33b Jean*0066 CALL WRITE_0D_I( streamice_nstep_velocity, INDEX_NONE,
5ca83cd8f7 Dani*0067 & ' # of timesteps per velocity solve =',
0068 & ' /* user defined parameter */')
0069
0070
0071
0072 CALL WRITE_0D_RL( streamice_density, INDEX_NONE,
0073 & ' streamice_density =', ' /* user defined parameter */')
217ff6d33b Jean*0074 CALL WRITE_0D_RL( streamice_density_ocean_avg, INDEX_NONE,
0075 & ' streamice_density_ocean_avg =',
5ca83cd8f7 Dani*0076 & ' /* user defined parameter */')
217ff6d33b Jean*0077 CALL WRITE_0D_RL( B_glen_isothermal, INDEX_NONE,
0078 & ' glens law stifness =',
5ca83cd8f7 Dani*0079 & ' /* user defined parameter */')
217ff6d33b Jean*0080 CALL WRITE_0D_RL( n_glen, INDEX_NONE,
0081 & ' glens law exponent =',
5ca83cd8f7 Dani*0082 & ' /* user defined parameter */')
217ff6d33b Jean*0083 CALL WRITE_0D_RL( C_basal_fric_const, INDEX_NONE,
0084 & ' basal trac coeff =',
5ca83cd8f7 Dani*0085 & ' /* user defined parameter */')
217ff6d33b Jean*0086 CALL WRITE_0D_RL( n_basal_friction, INDEX_NONE,
0087 & ' basal exponent =',
5ca83cd8f7 Dani*0088 & ' /* user defined parameter */')
217ff6d33b Jean*0089 CALL WRITE_0D_RL( streamice_input_flux_unif, INDEX_NONE,
0090 & ' uniform input flux (m^2/a) =',
5ca83cd8f7 Dani*0091 & ' /* user defined parameter */')
217ff6d33b Jean*0092 CALL WRITE_0D_RL( streamice_vel_update, INDEX_NONE,
0093 & ' time for ice vel update (sec) =',
5ca83cd8f7 Dani*0094 & ' /* user defined parameter */')
217ff6d33b Jean*0095 CALL WRITE_0D_RL( streamice_cg_tol, INDEX_NONE,
0096 & ' conj grad tolerance =',
5ca83cd8f7 Dani*0097 & ' /* user defined parameter */')
217ff6d33b Jean*0098 CALL WRITE_0D_RL( streamice_nonlin_tol, INDEX_NONE,
0099 & ' ice velocity nonlinear iter tol =',
5ca83cd8f7 Dani*0100 & ' /* user defined parameter */')
217ff6d33b Jean*0101 CALL WRITE_0D_RL( shelf_max_draft, INDEX_NONE,
0102 & ' max shelf draft for analytic init (m) =',
5ca83cd8f7 Dani*0103 & ' /* user defined parameter */')
217ff6d33b Jean*0104 CALL WRITE_0D_RL( shelf_min_draft, INDEX_NONE,
0105 & ' min shelf draft for analytic init (m) =',
5ca83cd8f7 Dani*0106 & ' /* user defined parameter */')
217ff6d33b Jean*0107 CALL WRITE_0D_RL( shelf_edge_pos, INDEX_NONE,
0108 & ' shelf extent for analytic init (km) =',
5ca83cd8f7 Dani*0109 & ' /* user defined parameter */')
217ff6d33b Jean*0110 CALL WRITE_0D_RL( shelf_slope_scale, INDEX_NONE,
0111 & ' slope scale for analytic init (km) =',
5ca83cd8f7 Dani*0112 & ' /* user defined parameter */')
217ff6d33b Jean*0113 CALL WRITE_0D_RL( shelf_flat_width, INDEX_NONE,
0114 & ' flat shelf width for analytic init (km) =',
5ca83cd8f7 Dani*0115 & ' /* user defined parameter */')
217ff6d33b Jean*0116 CALL WRITE_0D_RL( flow_dir, INDEX_NONE,
0117 & ' flow direction for analytic init =',
5ca83cd8f7 Dani*0118 & ' /* user defined parameter */')
0119
217ff6d33b Jean*0120 CALL WRITE_0D_RL( min_x_noflow_NORTH, INDEX_NONE,
0121 & ' min range on no bd for no-slip (km) =',
5ca83cd8f7 Dani*0122 & ' /* user defined parameter */')
217ff6d33b Jean*0123 CALL WRITE_0D_RL( max_x_noflow_NORTH, INDEX_NONE,
0124 & ' max range on no bd for no-slip (km) =',
5ca83cd8f7 Dani*0125 & ' /* user defined parameter */')
217ff6d33b Jean*0126 CALL WRITE_0D_RL( min_x_noflow_SOUTH, INDEX_NONE,
0127 & ' min range on so bd for no-slip (km) =',
5ca83cd8f7 Dani*0128 & ' /* user defined parameter */')
217ff6d33b Jean*0129 CALL WRITE_0D_RL( max_x_noflow_SOUTH, INDEX_NONE,
0130 & ' max range on so bd for no-slip (km) =',
5ca83cd8f7 Dani*0131 & ' /* user defined parameter */')
217ff6d33b Jean*0132 CALL WRITE_0D_RL( min_y_noflow_EAST, INDEX_NONE,
0133 & ' min range on east bd for no-slip (km) =',
5ca83cd8f7 Dani*0134 & ' /* user defined parameter */')
217ff6d33b Jean*0135 CALL WRITE_0D_RL( max_y_noflow_EAST, INDEX_NONE,
0136 & ' max range on east bd for no-slip (km) =',
5ca83cd8f7 Dani*0137 & ' /* user defined parameter */')
217ff6d33b Jean*0138 CALL WRITE_0D_RL( min_y_noflow_WEST, INDEX_NONE,
0139 & ' min range on west bd for no-slip (km) =',
5ca83cd8f7 Dani*0140 & ' /* user defined parameter */')
217ff6d33b Jean*0141 CALL WRITE_0D_RL( max_y_noflow_WEST, INDEX_NONE,
0142 & ' max range on west bd for no-slip (km) =',
5ca83cd8f7 Dani*0143 & ' /* user defined parameter */')
0144
217ff6d33b Jean*0145 CALL WRITE_0D_RL( min_x_noStress_NORTH, INDEX_NONE,
0146 & ' min range on no bd for no-stress (km) =',
5ca83cd8f7 Dani*0147 & ' /* user defined parameter */')
217ff6d33b Jean*0148 CALL WRITE_0D_RL( max_x_noStress_NORTH, INDEX_NONE,
0149 & ' max range on no bd for no-stress (km) =',
5ca83cd8f7 Dani*0150 & ' /* user defined parameter */')
217ff6d33b Jean*0151 CALL WRITE_0D_RL( min_x_noStress_SOUTH, INDEX_NONE,
0152 & ' min range on so bd for no-stress (km) =',
5ca83cd8f7 Dani*0153 & ' /* user defined parameter */')
217ff6d33b Jean*0154 CALL WRITE_0D_RL( max_x_noStress_SOUTH, INDEX_NONE,
0155 & ' max range on so bd for no-stress (km) =',
5ca83cd8f7 Dani*0156 & ' /* user defined parameter */')
217ff6d33b Jean*0157 CALL WRITE_0D_RL( min_y_noStress_EAST, INDEX_NONE,
0158 & ' min range on east bd for no-stress (km) =',
5ca83cd8f7 Dani*0159 & ' /* user defined parameter */')
217ff6d33b Jean*0160 CALL WRITE_0D_RL( max_y_noStress_EAST, INDEX_NONE,
0161 & ' max range on east bd for no-stress (km) =',
5ca83cd8f7 Dani*0162 & ' /* user defined parameter */')
217ff6d33b Jean*0163 CALL WRITE_0D_RL( min_y_noStress_WEST, INDEX_NONE,
0164 & ' min range on west bd for no-stress (km) =',
5ca83cd8f7 Dani*0165 & ' /* user defined parameter */')
217ff6d33b Jean*0166 CALL WRITE_0D_RL( max_y_noStress_WEST, INDEX_NONE,
0167 & ' max range on west bd for no-stress (km) =',
5ca83cd8f7 Dani*0168 & ' /* user defined parameter */')
0169
217ff6d33b Jean*0170 CALL WRITE_0D_RL( min_x_FluxBdry_NORTH, INDEX_NONE,
0171 & ' min range on no bd for FluxBdry (km) =',
5ca83cd8f7 Dani*0172 & ' /* user defined parameter */')
217ff6d33b Jean*0173 CALL WRITE_0D_RL( max_x_FluxBdry_NORTH, INDEX_NONE,
0174 & ' max range on no bd for FluxBdry (km) =',
5ca83cd8f7 Dani*0175 & ' /* user defined parameter */')
217ff6d33b Jean*0176 CALL WRITE_0D_RL( min_x_FluxBdry_SOUTH, INDEX_NONE,
0177 & ' min range on so bd for FluxBdry (km) =',
5ca83cd8f7 Dani*0178 & ' /* user defined parameter */')
217ff6d33b Jean*0179 CALL WRITE_0D_RL( max_x_FluxBdry_SOUTH, INDEX_NONE,
0180 & ' max range on so bd for FluxBdry (km) =',
5ca83cd8f7 Dani*0181 & ' /* user defined parameter */')
217ff6d33b Jean*0182 CALL WRITE_0D_RL( min_y_FluxBdry_EAST, INDEX_NONE,
0183 & ' min range on east bd for FluxBdry (km) =',
5ca83cd8f7 Dani*0184 & ' /* user defined parameter */')
217ff6d33b Jean*0185 CALL WRITE_0D_RL( max_y_FluxBdry_EAST, INDEX_NONE,
0186 & ' max range on east bd for FluxBdry (km) =',
5ca83cd8f7 Dani*0187 & ' /* user defined parameter */')
217ff6d33b Jean*0188 CALL WRITE_0D_RL( min_y_FluxBdry_WEST, INDEX_NONE,
0189 & ' min range on west bd for FluxBdry (km) =',
5ca83cd8f7 Dani*0190 & ' /* user defined parameter */')
217ff6d33b Jean*0191 CALL WRITE_0D_RL( max_y_FluxBdry_WEST, INDEX_NONE,
0192 & ' max range on west bd for FluxBdry (km) =',
5ca83cd8f7 Dani*0193 & ' /* user defined parameter */')
0194
217ff6d33b Jean*0195 CALL WRITE_0D_RL( min_x_Dirich_NORTH, INDEX_NONE,
0196 & ' min range on no bd for Dirich (km) =',
5ca83cd8f7 Dani*0197 & ' /* user defined parameter */')
217ff6d33b Jean*0198 CALL WRITE_0D_RL( max_x_Dirich_NORTH, INDEX_NONE,
0199 & ' max range on no bd for Dirich (km) =',
5ca83cd8f7 Dani*0200 & ' /* user defined parameter */')
217ff6d33b Jean*0201 CALL WRITE_0D_RL( min_x_Dirich_SOUTH, INDEX_NONE,
0202 & ' min range on so bd for Dirich (km) =',
5ca83cd8f7 Dani*0203 & ' /* user defined parameter */')
217ff6d33b Jean*0204 CALL WRITE_0D_RL( max_x_Dirich_SOUTH, INDEX_NONE,
0205 & ' max range on so bd for Dirich (km) =',
5ca83cd8f7 Dani*0206 & ' /* user defined parameter */')
217ff6d33b Jean*0207 CALL WRITE_0D_RL( min_y_Dirich_EAST, INDEX_NONE,
0208 & ' min range on east bd for Dirich (km) =',
5ca83cd8f7 Dani*0209 & ' /* user defined parameter */')
217ff6d33b Jean*0210 CALL WRITE_0D_RL( max_y_Dirich_EAST, INDEX_NONE,
0211 & ' max range on east bd for Dirich (km) =',
5ca83cd8f7 Dani*0212 & ' /* user defined parameter */')
217ff6d33b Jean*0213 CALL WRITE_0D_RL( min_y_Dirich_WEST, INDEX_NONE,
0214 & ' min range on west bd for Dirich (km) =',
5ca83cd8f7 Dani*0215 & ' /* user defined parameter */')
217ff6d33b Jean*0216 CALL WRITE_0D_RL( max_y_Dirich_WEST, INDEX_NONE,
0217 & ' max range on west bd for Dirich (km) =',
5ca83cd8f7 Dani*0218 & ' /* user defined parameter */')
0219
217ff6d33b Jean*0220 CALL WRITE_0D_RL( min_x_CFBC_NORTH, INDEX_NONE,
0221 & ' min range on no bd for CFBC (km) =',
5ca83cd8f7 Dani*0222 & ' /* user defined parameter */')
217ff6d33b Jean*0223 CALL WRITE_0D_RL( max_x_CFBC_NORTH, INDEX_NONE,
0224 & ' max range on no bd for CFBC (km) =',
5ca83cd8f7 Dani*0225 & ' /* user defined parameter */')
217ff6d33b Jean*0226 CALL WRITE_0D_RL( min_x_CFBC_SOUTH, INDEX_NONE,
0227 & ' min range on so bd for CFBC (km) =',
5ca83cd8f7 Dani*0228 & ' /* user defined parameter */')
217ff6d33b Jean*0229 CALL WRITE_0D_RL( max_x_CFBC_SOUTH, INDEX_NONE,
0230 & ' max range on so bd for CFBC (km) =',
5ca83cd8f7 Dani*0231 & ' /* user defined parameter */')
217ff6d33b Jean*0232 CALL WRITE_0D_RL( min_y_CFBC_EAST, INDEX_NONE,
0233 & ' min range on east bd for CFBC (km) =',
5ca83cd8f7 Dani*0234 & ' /* user defined parameter */')
217ff6d33b Jean*0235 CALL WRITE_0D_RL( max_y_CFBC_EAST, INDEX_NONE,
0236 & ' max range on east bd for CFBC (km) =',
5ca83cd8f7 Dani*0237 & ' /* user defined parameter */')
217ff6d33b Jean*0238 CALL WRITE_0D_RL( min_y_CFBC_WEST, INDEX_NONE,
0239 & ' min range on west bd for CFBC (km) =',
5ca83cd8f7 Dani*0240 & ' /* user defined parameter */')
217ff6d33b Jean*0241 CALL WRITE_0D_RL( max_y_CFBC_WEST, INDEX_NONE,
0242 & ' max range on west bd for CFBC (km) =',
5ca83cd8f7 Dani*0243 & ' /* user defined parameter */')
0244
217ff6d33b Jean*0245 CALL WRITE_0D_RL( flux_bdry_val_NORTH, INDEX_NONE,
0246 & ' val (m^2/a) for north flux bdry =',
5ca83cd8f7 Dani*0247 & ' /* user defined parameter */')
217ff6d33b Jean*0248 CALL WRITE_0D_RL( flux_bdry_val_SOUTH, INDEX_NONE,
0249 & ' val (m^2/a) for south flux bdry =',
5ca83cd8f7 Dani*0250 & ' /* user defined parameter */')
217ff6d33b Jean*0251 CALL WRITE_0D_RL( flux_bdry_val_EAST, INDEX_NONE,
0252 & ' val (m^2/a) for east flux bdry =',
5ca83cd8f7 Dani*0253 & ' /* user defined parameter */')
217ff6d33b Jean*0254 CALL WRITE_0D_RL( flux_bdry_val_WEST, INDEX_NONE,
0255 & ' val (m^2/a) for west flux bdry =',
5ca83cd8f7 Dani*0256 & ' /* user defined parameter */')
217ff6d33b Jean*0257
5ca83cd8f7 Dani*0258
0259
217ff6d33b Jean*0260 CALL WRITE_0D_L( STREAMICE_dump_mdsio, INDEX_NONE,
5ca83cd8f7 Dani*0261 & ' streamice_dump_mdsio =', ' /* user defined parameter */')
217ff6d33b Jean*0262 CALL WRITE_0D_L( STREAMICE_dump_mdsio, INDEX_NONE,
5ca83cd8f7 Dani*0263 & ' streamice_dump_mdsio =', ' /* user defined parameter */')
217ff6d33b Jean*0264 CALL WRITE_0D_L( STREAMICE_dump_mnc, INDEX_NONE,
5ca83cd8f7 Dani*0265 & ' streamice_dump_mnc =', ' /* user defined parameter */')
217ff6d33b Jean*0266 CALL WRITE_0D_L( STREAMICE_tave_mnc, INDEX_NONE,
5ca83cd8f7 Dani*0267 & ' streamice_tave_mnc =', ' /* user defined parameter */')
07e785229e dngo*0268
0269
217ff6d33b Jean*0270 CALL WRITE_0D_L( STREAMICE_move_front, INDEX_NONE,
5ca83cd8f7 Dani*0271 & ' streamice_move_front =', ' /* user defined parameter */')
217ff6d33b Jean*0272 CALL WRITE_0D_L( STREAMICE_calve_to_mask, INDEX_NONE,
5ca83cd8f7 Dani*0273 & ' streamice_calve_to_mask =', ' /* user defined parameter */')
0274
0275
0276
0277 CALL WRITE_0D_C( STREAMICEthickInit,-1,INDEX_NONE,
0278 & 'STREAMICEthickInit =',
0279 & ' /* user defined parameter */')
0280 CALL WRITE_0D_C( STREAMICEthickFile,-1,INDEX_NONE,
0281 & 'STREAMICEthickFile =',
0282 & ' /* user defined parameter */')
0283 CALL WRITE_0D_C( STREAMICEcalveMaskFile,-1,INDEX_NONE,
0284 & 'STREAMICEcalveMaskFile =',
0285 & ' /* user defined parameter */')
0286
0287
0288
0289
0290 _END_MASTER(myThid)
0291
0292
0293
07e785229e dngo*0294
0295
0296
0297
0298
0299
0300
0301
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
5ca83cd8f7 Dani*0315
217ff6d33b Jean*0316 CALL WRITE_FLD_XY_RL ( "k1AtC_str", "out",
5ca83cd8f7 Dani*0317 & k1AtC_str, 0, myThid )
217ff6d33b Jean*0318 CALL WRITE_FLD_XY_RL ( "k2AtC_str", "out",
5ca83cd8f7 Dani*0319 & k2AtC_str, 0, myThid )
217ff6d33b Jean*0320 CALL WRITE_FLD_XY_RS ( "STREAMICE_ufacemask_bdry", "out",
5ca83cd8f7 Dani*0321 & STREAMICE_ufacemask_bdry, 0, myThid )
217ff6d33b Jean*0322 CALL WRITE_FLD_XY_RS ( "STREAMICE_vfacemask_bdry", "out",
5ca83cd8f7 Dani*0323 & STREAMICE_vfacemask_bdry, 0, myThid )
217ff6d33b Jean*0324 CALL WRITE_FLD_XY_RL ( "u_bdry_values_SI", "out",
5ca83cd8f7 Dani*0325 & u_bdry_values_SI, 0, myThid )
217ff6d33b Jean*0326 CALL WRITE_FLD_XY_RL ( "v_bdry_values_SI", "out",
5ca83cd8f7 Dani*0327 & v_bdry_values_SI, 0, myThid )
217ff6d33b Jean*0328 CALL WRITE_FLD_XY_RL ( "u_flux_bdry_SI", "out",
5ca83cd8f7 Dani*0329 & u_flux_bdry_SI, 0, myThid )
217ff6d33b Jean*0330 CALL WRITE_FLD_XY_RL ( "v_flux_bdry_SI", "out",
5ca83cd8f7 Dani*0331 & v_flux_bdry_SI, 0, myThid )
0332
0333 #endif /* ALLOW_STREAMICE */
0334
0335 RETURN
0336 END