| 20 | #include "PARAMS.h" | #include "PARAMS.h" | 
| 21 | #include "STREAMICE.h" | #include "STREAMICE.h" | 
| 22 | #include "STREAMICE_BDRY.h" | #include "STREAMICE_BDRY.h" | 
| 23 |  | #ifdef ALLOW_STREAMICE_FLUX_CONTROL | 
| 24 |  | #include "STREAMICE_CTRL_FLUX.h" | 
| 25 |  | #endif | 
| 26 |  |  | 
| 27 | C     !INPUT PARAMETERS: | C     !INPUT PARAMETERS: | 
| 28 | INTEGER myThid | INTEGER myThid | 
| 34 | C     msgBuf     :: Informational/error message buffer | C     msgBuf     :: Informational/error message buffer | 
| 35 | C     iUnit      :: Work variable for IO unit number | C     iUnit      :: Work variable for IO unit number | 
| 36 | CHARACTER*(MAX_LEN_MBUF) msgBuf | CHARACTER*(MAX_LEN_MBUF) msgBuf | 
| 37 | INTEGER iUnit | INTEGER iUnit, iarr, tarr | 
| 38 |  |  | 
| 39 | NAMELIST /STREAMICE_PARM01/ | NAMELIST /STREAMICE_PARM01/ | 
| 40 | &     streamice_density, streamice_density_ocean_avg, | &     streamice_density, streamice_density_ocean_avg, | 
| 41 | &     A_glen_isothermal, n_glen, eps_glen_min, | &     B_glen_isothermal, n_glen, eps_glen_min, eps_u_min, | 
| 42 | &     C_basal_fric_const, n_basal_friction, | &     C_basal_fric_const, n_basal_friction, | 
| 43 | &     streamice_vel_update,streamice_cg_tol,streamice_nonlin_tol, | &     streamice_vel_update,streamice_cg_tol,streamice_nonlin_tol, | 
| 44 | &     streamice_nonlin_tol_fp, | &     streamice_nonlin_tol_fp, | 
| 49 | &     STREAMICEsigcoordFile, | &     STREAMICEsigcoordFile, | 
| 50 | &     STREAMICEthickFile, | &     STREAMICEthickFile, | 
| 51 | &     STREAMICEcalveMaskFile, | &     STREAMICEcalveMaskFile, | 
| 52 |  | &     STREAMICEcostMaskFile, | 
| 53 | &     STREAMICEison, | &     STREAMICEison, | 
| 54 | &     STREAMICE_dump_mdsio, STREAMICE_tave_mdsio, | &     STREAMICE_dump_mdsio, STREAMICE_tave_mdsio, | 
| 55 | &     STREAMICE_dump_mnc, STREAMICE_tave_mnc, | &     STREAMICE_dump_mnc, STREAMICE_tave_mnc, | 
| 56 | &     STREAMICE_GL_regularize, STREAMICE_move_front, | &     STREAMICE_GL_regularize, STREAMICE_move_front, | 
| 57 | &     STREAMICE_calve_to_mask, | &     STREAMICE_calve_to_mask, | 
| 58 | &     STREAMICE_diagnostic_only, | &     STREAMICE_diagnostic_only, | 
|  | !     &     STREAMICE_construct_matrix, |  | 
| 59 | &     STREAMICE_lower_cg_tol, | &     STREAMICE_lower_cg_tol, | 
| 60 | &     streamice_CFL_factor, | &     streamice_CFL_factor, | 
| 61 | &     streamice_adjDump, | &     streamice_adjDump, | 
|  | !      &     STREAMICE_hybrid_stress, |  | 
| 62 | &     streamice_bg_surf_slope_x, streamice_bg_surf_slope_y, | &     streamice_bg_surf_slope_x, streamice_bg_surf_slope_y, | 
| 63 | &     streamice_kx_b_init, streamice_ky_b_init, | &     streamice_kx_b_init, streamice_ky_b_init, | 
| 64 | &     STREAMICEbasalTracConfig, | &     STREAMICEbasalTracConfig, | 
| 65 | &     STREAMICEbasalTracFile, | &     STREAMICEbasalTracFile, | 
| 66 | &     STREAMICEvelOptimFile, | &     STREAMICEvelOptimFile, | 
| 67 |  | &     STREAMICEtopogFile, | 
| 68 |  | &     STREAMICEhmaskFile, | 
| 69 |  | &     STREAMICEHBCyFile, | 
| 70 |  | &     STREAMICEHBCxFile, | 
| 71 |  | &     STREAMICEuFaceBdryFile, | 
| 72 |  | &     STREAMICEvFaceBdryFile, | 
| 73 |  | &     STREAMICEuDirichValsFile, | 
| 74 |  | &     STREAMICEvDirichValsFile, | 
| 75 |  | &     STREAMICEGlenConstFile, STREAMICEGlenConstConfig, | 
| 76 | &     STREAMICE_ppm_driving_stress, | &     STREAMICE_ppm_driving_stress, | 
| 77 | &     STREAMICE_h_ctrl_const_surf, | &     STREAMICE_h_ctrl_const_surf, | 
| 78 | &     streamice_wgt_drift,streamice_wgt_surf,streamice_wgt_vel, | &     streamice_wgt_drift,streamice_wgt_surf,streamice_wgt_vel, | 
| 79 | &     streamice_wgt_avthick | &     streamice_wgt_avthick, streamice_wgt_tikh, | 
| 80 |  | &     streamice_addl_backstress, | 
| 81 |  | &     streamice_smooth_gl_width, | 
| 82 |  | &     streamice_adot_uniform, | 
| 83 |  | &     STREAMICE_ADV_SCHEME | 
| 84 |  |  | 
| 85 |  | #ifdef ALLOW_STREAMICE_2DTRACER | 
| 86 |  | NAMELIST /STREAMICE_PARMTRACER/ | 
| 87 |  | &     STREAMICETrac2DBCxFile, | 
| 88 |  | &     STREAMICETrac2DBCyFile, | 
| 89 |  | &     STREAMICETrac2DINITFile | 
| 90 |  | #endif | 
| 91 |  |  | 
| 92 |  | #ifdef ALLOW_PETSC | 
| 93 |  | NAMELIST /STREAMICE_PARMPETSC/ | 
| 94 |  | &     PETSC_PRECOND_TYPE, PETSC_SOLVER_TYPE | 
| 95 |  | #endif | 
| 96 |  |  | 
| 97 |  | #ifdef ALLOW_STREAMICE_FLUX_CONTROL | 
| 98 |  | NAMELIST /STREAMICE_PARMFLUXCTRL/ | 
| 99 |  | &     n_fluxes, n_epochs, | 
| 100 |  | &     streamice_ctrl_flux_id, | 
| 101 |  | &     streamice_ctrl_flux_scaleVel | 
| 102 |  | #endif | 
| 103 |  |  | 
| 104 |  |  | 
| 105 | NAMELIST /STREAMICE_PARM02/ | NAMELIST /STREAMICE_PARM02/ | 
| 141 |  |  | 
| 142 | streamice_density = 917. | streamice_density = 917. | 
| 143 | streamice_density_ocean_avg = 1024. | streamice_density_ocean_avg = 1024. | 
| 144 | A_glen_isothermal = 9.461e-18   !  Pa (-1/3) a | B_glen_isothermal = 9.461e-18   !  Pa (-1/3) a | 
| 145 | n_glen = 3. | n_glen = 3. | 
| 146 | eps_glen_min = 1.0e-12 | eps_glen_min = 1.0e-12 | 
| 147 |  | eps_u_min = 1.0e-6 | 
| 148 | C_basal_fric_const = 31.71 ! Pa (m/a)-1n | C_basal_fric_const = 31.71 ! Pa (m/a)-1n | 
| 149 | n_basal_friction = 1. | n_basal_friction = 1. | 
| 150 | streamice_vel_update = 169200. ! seconds | streamice_vel_update = 169200. ! seconds | 
| 161 | streamice_kx_b_init = 1. | streamice_kx_b_init = 1. | 
| 162 | streamice_ky_b_init = 1. | streamice_ky_b_init = 1. | 
| 163 | streamice_wgt_drift = 0. | streamice_wgt_drift = 0. | 
| 164 |  | streamice_wgt_tikh = 0. | 
| 165 | streamice_wgt_surf = 0. | streamice_wgt_surf = 0. | 
| 166 | streamice_wgt_vel = 0. | streamice_wgt_vel = 0. | 
| 167 | streamice_wgt_avthick = 0. | streamice_wgt_avthick = 0. | 
| 168 |  | streamice_addl_backstress = 0.0 | 
| 169 |  | streamice_smooth_gl_width = 0.0 | 
| 170 |  | streamice_adot_uniform = 0.0 | 
| 171 |  |  | 
| 172 | STREAMICEthickInit = 'FILE' | STREAMICEthickInit = 'FILE' | 
| 173 | STREAMICEthickFile = ' ' | STREAMICEthickFile = ' ' | 
| 177 | STREAMICEbasalTracConfig = 'UNIFORM' | STREAMICEbasalTracConfig = 'UNIFORM' | 
| 178 | STREAMICEbasalTracFile = ' ' | STREAMICEbasalTracFile = ' ' | 
| 179 | STREAMICEvelOptimFile = '' | STREAMICEvelOptimFile = '' | 
| 180 |  | STREAMICEtopogFile = '' | 
| 181 |  | STREAMICEhmaskFile = '' | 
| 182 |  | STREAMICEHBCyFile = '' | 
| 183 |  | STREAMICEHBCxFile = '' | 
| 184 |  | #ifdef ALLOW_STREAMICE_2DTRACER | 
| 185 |  | STREAMICETrac2DBCxFile = '' | 
| 186 |  | STREAMICETrac2DBCyFile = '' | 
| 187 |  | STREAMICETrac2DInitFile = '' | 
| 188 |  | #endif | 
| 189 |  | STREAMICEuFaceBdryFile = '' | 
| 190 |  | STREAMICEvFaceBdryFile = '' | 
| 191 |  | STREAMICEuDirichValsFile = '' | 
| 192 |  | STREAMICEvDirichValsFile = '' | 
| 193 |  | STREAMICEGlenConstFile = '' | 
| 194 |  | STREAMICEcostMaskFile = '' | 
| 195 |  | STREAMICEGlenConstConfig = 'UNIFORM' | 
| 196 |  | #ifdef ALLOW_PETSC | 
| 197 |  | PETSC_PRECOND_TYPE = 'PCBJACOBI' | 
| 198 |  | PETSC_SOLVER_TYPE = 'KSPCG' | 
| 199 |  | #endif | 
| 200 |  | STREAMICE_ADV_SCHEME = '' | 
| 201 |  |  | 
| 202 |  | #ifdef ALLOW_STREAMICE_FLUX_CONTROL | 
| 203 |  | n_fluxes = 0 | 
| 204 |  | n_epochs = 0 | 
| 205 |  | DO iarr=1,n_fluxes_max | 
| 206 |  | streamice_ctrl_flux_id(iarr) = 0 | 
| 207 |  | DO tarr=1,n_epochs_max | 
| 208 |  | streamice_ctrl_flux_scaleVel(iarr,tarr) = 0. _d 0 | 
| 209 |  | ENDDO | 
| 210 |  | ENDDO | 
| 211 |  | #endif | 
| 212 |  |  | 
| 213 | STREAMICEison = .TRUE. | STREAMICEison = .TRUE. | 
| 214 | STREAMICE_tave_mdsio = .TRUE. | STREAMICE_tave_mdsio = .TRUE. | 
| 218 | STREAMICE_GL_regularize = .FALSE. | STREAMICE_GL_regularize = .FALSE. | 
| 219 | STREAMICE_move_front = .FALSE. | STREAMICE_move_front = .FALSE. | 
| 220 | STREAMICE_calve_to_mask = .FALSE. | STREAMICE_calve_to_mask = .FALSE. | 
| 221 |  | !       STREAMICE_geom_file_setup = .FALSE. | 
| 222 | !      STREAMICE_construct_matrix = .TRUE. | !      STREAMICE_construct_matrix = .TRUE. | 
| 223 | STREAMICE_lower_cg_tol = .FALSE. | STREAMICE_lower_cg_tol = .FALSE. | 
| 224 | STREAMICE_diagnostic_only = .FALSE. | STREAMICE_diagnostic_only = .FALSE. | 
| 293 | &    SQUEEZE_RIGHT , 1) | &    SQUEEZE_RIGHT , 1) | 
| 294 | ENDIF | ENDIF | 
| 295 |  |  | 
| 296 |  | #ifdef ALLOW_STREAMICE_2DTRACER | 
| 297 |  | READ(UNIT=iUnit,NML=STREAMICE_PARMTRACER) | 
| 298 |  | WRITE(msgBuf,'(A)') | 
| 299 |  | &    'STREAMICE_READPARMS: read tracer param block' | 
| 300 |  | CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, | 
| 301 |  | &    SQUEEZE_RIGHT , 1) | 
| 302 |  | #endif | 
| 303 |  |  | 
| 304 |  | #ifdef ALLOW_PETSC | 
| 305 |  | READ(UNIT=iUnit,NML=STREAMICE_PARMPETSC) | 
| 306 |  | WRITE(msgBuf,'(A)') | 
| 307 |  | &    'STREAMICE_READPARMS: read petsc param block' | 
| 308 |  | CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, | 
| 309 |  | &    SQUEEZE_RIGHT , 1) | 
| 310 |  | #endif | 
| 311 |  |  | 
| 312 |  |  | 
| 313 | READ(UNIT=iUnit,NML=STREAMICE_PARM03) | READ(UNIT=iUnit,NML=STREAMICE_PARM03) | 
| 314 | WRITE(msgBuf,'(A)') | WRITE(msgBuf,'(A)') | 
| 315 | &    'STREAMICE_READPARMS: read third param block' | &    'STREAMICE_READPARMS: read third param block' | 
| 316 | CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, | CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, | 
| 317 | &    SQUEEZE_RIGHT , 1) | &    SQUEEZE_RIGHT , 1) | 
|  | C     Close the open data file |  | 
| 318 | CLOSE(iUnit) | CLOSE(iUnit) | 
| 319 |  |  | 
| 320 |  |  | 
| 321 |  | #ifdef ALLOW_STREAMICE_FLUX_CONTROL | 
| 322 |  |  | 
| 323 |  | CALL OPEN_COPY_DATA_FILE( | 
| 324 |  | I                     'data.strmctrlflux', 'STREAMICE_READPARMS', | 
| 325 |  | O                     iUnit, | 
| 326 |  | I                     myThid ) | 
| 327 |  |  | 
| 328 |  |  | 
| 329 |  | READ(UNIT=iUnit,NML=STREAMICE_PARMFLUXCTRL) | 
| 330 |  | WRITE(msgBuf,'(A)') | 
| 331 |  | &    'STREAMICE_READPARMS: read flux_ctrl param block' | 
| 332 |  | CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, | 
| 333 |  | &    SQUEEZE_RIGHT , 1) | 
| 334 |  | CLOSE(iUnit) | 
| 335 |  | #endif | 
| 336 |  |  | 
| 337 |  |  | 
| 338 |  |  | 
| 339 | streamice_nstep_velocity = NINT (streamice_vel_update / deltaT) | streamice_nstep_velocity = NINT (streamice_vel_update / deltaT) | 
| 340 |  |  | 
| 341 | C-    Set Output type flags : | C-    Set Output type flags : |