| 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, | 
| 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, | 
|  | !      &     STREAMICE_geom_file_setup, |  | 
| 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, | 
| 66 | &     STREAMICEvelOptimFile, | &     STREAMICEvelOptimFile, | 
| 67 | &     STREAMICEtopogFile, | &     STREAMICEtopogFile, | 
| 68 | &     STREAMICEhmaskFile, | &     STREAMICEhmaskFile, | 
| 69 |  | &     STREAMICEHBCyFile, | 
| 70 |  | &     STREAMICEHBCxFile, | 
| 71 | &     STREAMICEuFaceBdryFile, | &     STREAMICEuFaceBdryFile, | 
| 72 | &     STREAMICEvFaceBdryFile, | &     STREAMICEvFaceBdryFile, | 
| 73 | &     STREAMICEuDirichValsFile, | &     STREAMICEuDirichValsFile, | 
| 74 | &     STREAMICEvDirichValsFile, | &     STREAMICEvDirichValsFile, | 
| 75 | &     STREAMICEGlenConstFile, STREAMICEGlenConstConfig, | &     STREAMICEGlenConstFile, STREAMICEGlenConstConfig, | 
|  | &     STREAMICEBdotFile, STREAMICEBdotConfig, |  | 
| 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_tikh, | &     streamice_wgt_avthick, streamice_wgt_tikh, | 
| 80 | &     streamice_addl_backstress, | &     streamice_addl_backstress, | 
| 81 | &     streamice_smooth_gl_width, | &     streamice_smooth_gl_width, | 
| 82 | &     PETSC_PRECOND_TYPE, PETSC_SOLVER_TYPE | &     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/ | 
| 167 | streamice_wgt_avthick = 0. | streamice_wgt_avthick = 0. | 
| 168 | streamice_addl_backstress = 0.0 | streamice_addl_backstress = 0.0 | 
| 169 | streamice_smooth_gl_width = 0.0 | streamice_smooth_gl_width = 0.0 | 
| 170 |  | streamice_adot_uniform = 0.0 | 
| 171 |  |  | 
| 172 | STREAMICEthickInit = 'FILE' | STREAMICEthickInit = 'FILE' | 
| 173 | STREAMICEthickFile = ' ' | STREAMICEthickFile = ' ' | 
| 179 | STREAMICEvelOptimFile = '' | STREAMICEvelOptimFile = '' | 
| 180 | STREAMICEtopogFile = '' | STREAMICEtopogFile = '' | 
| 181 | STREAMICEhmaskFile = '' | STREAMICEhmaskFile = '' | 
| 182 |  | STREAMICEHBCyFile = '' | 
| 183 |  | STREAMICEHBCxFile = '' | 
| 184 |  | #ifdef ALLOW_STREAMICE_2DTRACER | 
| 185 |  | STREAMICETrac2DBCxFile = '' | 
| 186 |  | STREAMICETrac2DBCyFile = '' | 
| 187 |  | STREAMICETrac2DInitFile = '' | 
| 188 |  | #endif | 
| 189 | STREAMICEuFaceBdryFile = '' | STREAMICEuFaceBdryFile = '' | 
| 190 | STREAMICEvFaceBdryFile = '' | STREAMICEvFaceBdryFile = '' | 
| 191 | STREAMICEuDirichValsFile = '' | STREAMICEuDirichValsFile = '' | 
| 192 | STREAMICEvDirichValsFile = '' | STREAMICEvDirichValsFile = '' | 
| 193 | STREAMICEGlenConstFile = '' | STREAMICEGlenConstFile = '' | 
|  | STREAMICEBdotFile = '' |  | 
| 194 | STREAMICEcostMaskFile = '' | STREAMICEcostMaskFile = '' | 
| 195 | STREAMICEGlenConstConfig = 'UNIFORM' | STREAMICEGlenConstConfig = 'UNIFORM' | 
| 196 | STREAMICEBdotConfig = ' ' | #ifdef ALLOW_PETSC | 
| 197 | PETSC_PRECOND_TYPE = 'PCBJACOBI' | PETSC_PRECOND_TYPE = 'PCBJACOBI' | 
| 198 | PETSC_SOLVER_TYPE = 'KSPCG' | 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. | 
| 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 : |