C $Header: /u/gcmpack/MITgcm_contrib/verification_other/shelfice_remeshing/code/STREAMICE.h,v 1.1 2016/01/22 C $Name: $ C---+----1--+-+----2----+----3----+----4----+----5----+----6----+----7-|--+----| #ifdef ALLOW_STREAMICE C -------------------------- REAL PARAMS --------------------------------------------------- COMMON /STREAMICE_PARMS_R/ & streamice_density, streamice_density_ocean_avg, C & A_glen_isothermal, n_glen, eps_glen_min, eps_u_min, & B_glen_isothermal, n_glen, eps_glen_min, eps_u_min, & C_basal_fric_const, n_basal_friction, streamice_input_flux_unif, & streamice_vel_update, streamice_cg_tol, streamice_nonlin_tol, & streamice_nonlin_tol_fp, streamice_err_norm, #if (defined (ALLOW_OPENAD) && defined (ALLOW_STREAMICE_OAD_FP)) & streamice_nonlin_tol_adjoint, #endif & streamice_CFL_factor, streamice_adjDump, & streamice_bg_surf_slope_x, streamice_bg_surf_slope_y, & streamice_kx_b_init, streamice_ky_b_init, & streamice_wgt_drift, streamice_wgt_surf, & streamice_wgt_avthick, streamice_wgt_vel, & streamice_wgt_tikh, & streamice_addl_backstress, & streamice_smooth_gl_width, & streamice_adot_uniform, #ifdef STREAMICE_FLOWLINE_BUTTRESS & streamice_buttr_width, #endif & streamice_firn_correction, streamice_density_firn, & streamice_forcing_period _RL streamice_density, streamice_density_ocean_avg C _RL A_glen_isothermal, n_glen, eps_glen_min, eps_u_min _RL B_glen_isothermal, n_glen, eps_glen_min, eps_u_min _RL C_basal_fric_const _RL n_basal_friction _RL streamice_input_flux_unif _RL streamice_vel_update _RL streamice_cg_tol, streamice_nonlin_tol _RL streamice_nonlin_tol_fp _RL streamice_err_norm C | streamice_err_norm: the p-norm to find the error of the residual C | or difference in the nonlin iteration C | if less than 1, the sup-norm is used #if (defined (ALLOW_OPENAD) && defined (ALLOW_STREAMICE_OAD_FP)) _RL streamice_nonlin_tol_adjoint #endif _RL streamice_CFL_factor _RL streamice_adjDump _RL streamice_bg_surf_slope_x, streamice_bg_surf_slope_y _RL streamice_kx_b_init, streamice_ky_b_init _RL streamice_wgt_drift, streamice_wgt_surf _RL streamice_wgt_avthick, streamice_wgt_vel _RL streamice_wgt_tikh _RL streamice_addl_backstress _RL streamice_smooth_gl_width _RL streamice_adot_uniform _RL streamice_forcing_period #ifdef STREAMICE_FLOWLINE_BUTTRESS _RL streamice_buttr_width #endif _RL streamice_firn_correction _RL streamice_density_firn C parms for parameterized initial thickness C SHELF_MAX_DRAFT: max thickness of ice in m C SHELF_MIN_DRAFT: min thickness of ice in m C SHELF_EDGE_POS: extent of ice shelf in (km?) C SHELF_SLOPE_SCALE: dist over which shelf slopes (km?) C SHELF_FLAT_WIDTH: width of flat shelf (km?) C also must be aware of units (m for cartesian, deg for curvilinear, m/deg for CYLINDRICAL POLAR) C FLOW_DIR: 1.0=west, 2.0=east, 3.0=south, 4.0=north COMMON /STREAMICE_H_INIT_R/ & shelf_max_draft, & shelf_min_draft, & shelf_edge_pos, & shelf_slope_scale, & shelf_flat_width, & flow_dir _RL shelf_max_draft _RL shelf_min_draft _RL shelf_edge_pos _RL shelf_slope_scale _RL shelf_flat_width _RL flow_dir C -------------------------- INT PARAMS --------------------------------------------------- INTEGER streamice_max_nl PARAMETER ( streamice_max_nl = 100 ) COMMON /STREAMICE_PARMS_I/ & streamice_max_cg_iter, streamice_max_nl_iter, & streamice_vel_upd_counter, streamice_nstep_velocity, & streamice_maxcgiter_cpl, streamice_maxnliter_cpl ! & streamice_n_sub_regularize INTEGER streamice_max_cg_iter, streamice_max_nl_iter INTEGER streamice_vel_upd_counter, streamice_nstep_velocity INTEGER streamice_maxcgiter_cpl, streamice_maxnliter_cpl ! INTEGER streamice_n_sub_regularize #if (defined (ALLOW_STREAMICE_OAD_FP)) COMMON /STREAMICE_PARMS_I_OPENAD/ & isinloop0, isinloop1, isinloop2 INTEGER isinloop0, isinloop1, isinloop2 #endif C -------------------------- CHAR PARAMS --------------------------------------------------- CHARACTER*(MAX_LEN_FNAM) STREAMICEthickFile CHARACTER*(MAX_LEN_FNAM) STREAMICEthickInit CHARACTER*(MAX_LEN_FNAM) STREAMICEcalveMaskFile CHARACTER*(MAX_LEN_FNAM) STREAMICEsigcoordInit CHARACTER*(MAX_LEN_FNAM) STREAMICEsigcoordFile CHARACTER*(MAX_LEN_FNAM) STREAMICEdelsigFile CHARACTER*(MAX_LEN_FNAM) STREAMICEbasalTracConfig CHARACTER*(MAX_LEN_FNAM) STREAMICEGlenConstConfig CHARACTER*(MAX_LEN_FNAM) STREAMICEBdotConfig CHARACTER*(MAX_LEN_FNAM) STREAMICEbasalTracFile CHARACTER*(MAX_LEN_FNAM) STREAMICEGlenConstFile CHARACTER*(MAX_LEN_FNAM) STREAMICEBdotFile CHARACTER*(MAX_LEN_FNAM) STREAMICEBdotTimeDepFile CHARACTER*(MAX_LEN_FNAM) STREAMICEvelOptimFile CHARACTER*(MAX_LEN_FNAM) STREAMICEtopogFile CHARACTER*(MAX_LEN_FNAM) STREAMICEcostMaskFile CHARACTER*(MAX_LEN_FNAM) STREAMICE_ADV_SCHEME ! THE FOLLOWING FILENAMES ARE FOR SPECIFYING IRREGULAR DOMAIN GEOMETRIES ! (i.e. boundaries that do not conform with rectangular walls) CHARACTER*(MAX_LEN_FNAM) STREAMICEhmaskFile CHARACTER*(MAX_LEN_FNAM) STREAMICEHBCxFile CHARACTER*(MAX_LEN_FNAM) STREAMICEHBCyFile CHARACTER*(MAX_LEN_FNAM) STREAMICEuFaceBdryFile CHARACTER*(MAX_LEN_FNAM) STREAMICEvFaceBdryFile CHARACTER*(MAX_LEN_FNAM) STREAMICEuDirichValsFile CHARACTER*(MAX_LEN_FNAM) STREAMICEvDirichValsFile CHARACTER*(MAX_LEN_FNAM) STREAMICEuMassFluxFile CHARACTER*(MAX_LEN_FNAM) STREAMICEvMassFluxFile ! THE FOLLOWING FILENAMES ARE FOR SPECIFYING buttressing along calving fronts CHARACTER*(MAX_LEN_FNAM) STREAMICEuNormalStressFile CHARACTER*(MAX_LEN_FNAM) STREAMICEvNormalStressFile CHARACTER*(MAX_LEN_FNAM) STREAMICEuShearStressFile CHARACTER*(MAX_LEN_FNAM) STREAMICEvShearStressFile CHARACTER*(MAX_LEN_FNAM) STREAMICEuNormalTimeDepFile CHARACTER*(MAX_LEN_FNAM) STREAMICEvNormalTimeDepFile CHARACTER*(MAX_LEN_FNAM) STREAMICEuShearTimeDepFile CHARACTER*(MAX_LEN_FNAM) STREAMICEvShearTimeDepFile CHARACTER*(MAX_LEN_FNAM) STREAMICEuFluxTimeDepFile CHARACTER*(MAX_LEN_FNAM) STREAMICEvFluxTimeDepFile #ifdef ALLOW_PETSC ! CHARACTER PARAMS FOR PETSC CHARACTER*(MAX_LEN_FNAM) PETSC_SOLVER_TYPE CHARACTER*(MAX_LEN_FNAM) PETSC_PRECOND_TYPE #if (defined (ALLOW_OPENAD) && defined (ALLOW_STREAMICE_OAD_FP)) CHARACTER*(MAX_LEN_FNAM) PETSC_PRECOND_TMP CHARACTER*(MAX_LEN_FNAM) PETSC_PRECOND_OAD #endif #endif #ifdef ALLOW_STREAMICE_2DTRACER ! CHARACTER PARAMS FOR TRACER CHARACTER*(MAX_LEN_FNAM) STREAMICETrac2DBCxFile CHARACTER*(MAX_LEN_FNAM) STREAMICETrac2DBCyFile CHARACTER*(MAX_LEN_FNAM) STREAMICETrac2DinitFile #endif COMMON /STREAMICE_PARM_C/ & STREAMICEthickInit, & STREAMICEthickFile, & STREAMICEcalveMaskFile, & STREAMICEsigcoordInit, & STREAMICEsigcoordFile, & STREAMICEdelsigFile, & STREAMICEbasalTracConfig, & STREAMICEBdotConfig, & STREAMICEbasalTracFile, & STREAMICEvelOptimFile, & STREAMICEtopogFile, & STREAMICEhmaskFile, & STREAMICEHBCxFile, & STREAMICEHBCyFile, & STREAMICEuFaceBdryFile, & STREAMICEvFaceBdryFile, & STREAMICEuDirichValsFile, & STREAMICEvDirichValsFile, & STREAMICEuMassFluxFile, & STREAMICEvMassFluxFile, & STREAMICEuNormalStressFile, & STREAMICEvNormalStressFile, & STREAMICEuShearStressFile, & STREAMICEvShearStressFile, & STREAMICEuNormalTimeDepFile, & STREAMICEvNormalTimeDepFile, & STREAMICEuShearTimeDepFile, & STREAMICEvShearTimeDepFile, & STREAMICEGlenConstFile, & STREAMICEBdotFile, & STREAMICEBdotTimeDepFile, & STREAMICEGlenConstConfig, & STREAMICEcostMaskFile, & STREAMICE_ADV_SCHEME #ifdef ALLOW_PETSC COMMON /PETSC_PARM_C/ & PETSC_SOLVER_TYPE, & PETSC_PRECOND_TYPE #if (defined (ALLOW_OPENAD) && defined (ALLOW_STREAMICE_OAD_FP)) & ,PETSC_PRECOND_TMP, PETSC_PRECOND_OAD #endif #endif #ifdef ALLOW_STREAMICE_2DTRACER COMMON /STREAMICE_TRAC2D_C/ & STREAMICETrac2DBCxFile, & STREAMICETrac2DBCyFile, & STREAMICETrac2DinitFile #endif C -------------------------- LOGICAL PARAMS --------------------------------------------------- LOGICAL STREAMICEison LOGICAL STREAMICE_dump_mdsio LOGICAL STREAMICE_tave_mdsio LOGICAL STREAMICE_dump_mnc LOGICAL STREAMICE_tave_mnc LOGICAL STREAMICE_move_front LOGICAL STREAMICE_calve_to_mask LOGICAL STREAMICE_construct_matrix LOGICAL STREAMICE_lower_cg_tol LOGICAL STREAMICE_diagnostic_only LOGICAL STREAMICE_ppm_driving_stress LOGICAL STREAMICE_h_ctrl_const_surf LOGICAL STREAMICE_chkfixedptconvergence LOGICAL STREAMICE_chkresidconvergence LOGICAL STREAMICE_allow_cpl LOGICAL STREAMICE_use_petsc LOGICAL STREAMICE_apply_firn_correction LOGICAL STREAMICE_alt_driving_stress #if (defined (ALLOW_OPENAD) && defined (ALLOW_STREAMICE_OAD_FP) ) #ifdef ALLOW_PETSC LOGICAL STREAMICE_need2createmat LOGICAL STREAMICE_need2destroymat LOGICAL STREAMICE_OAD_petsc_reuse #endif #endif #ifdef STREAMICE_FLOWLINE_BUTTRESS LOGICAL useStreamiceFlowlineButtr #endif C The following parameters specify periodic boundary conditions. C For now this will completely override all other boundary conditions C and apply to the entire boundary LOGICAL STREAMICE_NS_periodic LOGICAL STREAMICE_EW_periodic C LOGICAL STREAMICE_hybrid_stress COMMON /STREAMICE_PARM_L/ & STREAMICEison, & STREAMICE_dump_mdsio, STREAMICE_tave_mdsio, & STREAMICE_dump_mnc, STREAMICE_tave_mnc, & STREAMICE_move_front, & STREAMICE_calve_to_mask, & STREAMICE_construct_matrix, & STREAMICE_lower_cg_tol, & STREAMICE_NS_periodic, STREAMICE_EW_periodic, & STREAMICE_diagnostic_only, & STREAMICE_ppm_driving_stress, & STREAMICE_h_ctrl_const_surf, & STREAMICE_chkfixedptconvergence, & STREAMICE_chkresidconvergence, & STREAMICE_allow_cpl, streamice_use_petsc, & STREAMICE_alt_driving_stress, #ifdef STREAMICE_FLOWLINE_BUTTRESS & useStreamiceFlowlineButtr, #endif & STREAMICE_apply_firn_correction #if (defined (ALLOW_OPENAD) && defined (ALLOW_STREAMICE_OAD_FP) ) #ifdef ALLOW_PETSC COMMON /STREAMICE_PERSIST_PETSC_L & STREAMICE_need2createmat, STREAMICE_need2destroymat, & STREAMICE_OAD_petsc_reuse #endif #endif C -------------------------- AND NOW ARRAYS --------------------------------------------------- C EXPLANATION OF MASKS C STREAMICE_hmask VALUES 1=ice-covered cell C 2=partially ice-covered cell (no dynamics) C 0=ice-free cell (for now, it means the cell C is treated as an open-ocean cell C that ice shelf can flow into) C -1=outside computational domain; will not change C C STREAMICE_umask VALUES 1=degree of freedom; C 0=homogeneous dirich condition C 3=inhomogeneous dirich condition C STREAMICE_vmask similar to umask C STREAMICE_ufacemask VALUES -1=unset, C 0=no-flow boundary, C 1=no-stress bdry C 2=stress bdry condition, C 3=inhomogeneous dirichlet boundary, C 4=flux boundary: at these faces a flux will be specified by u_flux_bdry_SI C C STREAMICE_vfacemask similar to ufacemask C STREAMICE_ufacemask_bdry field initialized at the beginning of simulation C specified all ufacemask values except for calving front C CONSTANT FOR A SIMULATION (ie not changes after streamice_init_fixed) C STREAMICE_vfacemask_bdry CONSTANT FOR A SIMULATION C STREAMICE_calve_mask specified allowed extent of ice shelf C (should be integer, but do not know howvi sre to read ints from file) C not necessarily used, but CONSTANT FOR A SIMULATION C STREAMICE_float_cond will only be used if partial floatation is implemented C Short arrays (e.g. masks) COMMON /STREAMICE_FIELDS_RS/ & STREAMICE_hmask, & STREAMICE_umask, & STREAMICE_vmask, & STREAMICE_ufacemask, & STREAMICE_vfacemask, & STREAMICE_ufacemask_bdry, & STREAMICE_vfacemask_bdry, & STREAMICE_float_cond, & STREAMICE_calve_mask, & STREAMICE_ctrl_mask, & STREAMICE_cost_mask _RS STREAMICE_hmask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS STREAMICE_umask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS STREAMICE_vmask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS STREAMICE_ufacemask & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS STREAMICE_vfacemask & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS STREAMICE_ufacemask_bdry & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS STREAMICE_vfacemask_bdry & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS STREAMICE_float_cond & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS STREAMICE_calve_mask & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS STREAMICE_ctrl_mask & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RS STREAMICE_cost_mask & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) C NOTES : C STREAMICE_ufacemask_bdry, STREAMICE_vfacemask_bdry ARE CONSTANT (FIXED) C STREAMICE_hmask IS PART OF **STATE** C All other masks are updated within a timestep BASED ON STREAMICE_hmask C Number of quadrature points are hardcoded.. could turn into a CPP macro C REAL ARRAYS COMMON /STREAMICE_FIELDS_RL/ & H_streamice, & U_streamice, & V_streamice, & visc_streamice, & tau_beta_eff_streamice, & float_frac_streamice, & base_el_streamice, & surf_el_streamice, & area_shelf_streamice, & mass_ice_streamice, & u_flux_bdry_SI, & v_flux_bdry_SI, & h_ubdry_values_SI, & h_vbdry_values_SI, & u_bdry_values_SI, & v_bdry_values_SI, & STREAMICE_dummy_array, & C_basal_friction, C & A_glen, & B_glen, & BDOT_streamice, ADOT_streamice, BDOT_pert,! mass balances in meters per year & streamice_sigma_coord, streamice_delsigma, & H_streamice_prev, & u_new_si, v_new_si #ifdef ALLOW_STREAMICE_FLUX_CONTROL COMMON /STREAMICE_FLUX_CONTROL/ & u_flux_bdry_pert, & v_flux_bdry_pert #endif #ifdef STREAMICE_STRESS_BOUNDARY_CONTROL COMMON /STREAMICE_STRESS_BOUNDARY/ & streamice_u_normal_pert, & streamice_v_normal_pert, & streamice_u_shear_pert, & streamice_v_shear_pert, & streamice_u_normal_stress, & streamice_v_normal_stress, & streamice_u_shear_stress, & streamice_v_shear_stress #endif #ifdef STREAMICE_HYBRID_STRESS COMMON /STREAMICE_HYBRID/ & streamice_taubx, streamice_tauby, & streamice_u_surf, streamice_v_surf, & streamice_u_bed, streamice_v_bed, & visc_streamice_full, streamice_omega, streamice_basal_geom, & streamice_vert_shear_uz, streamice_vert_shear_vz #endif #ifdef ALLOW_STREAMICE_TIMEDEP_FORCING COMMON /STREAMICE_TIMEDEP_FORCE/ & bdot_streamice0, & bdot_streamice1 #ifdef STREAMICE_STRESS_BOUNDARY_CONTROL & ,streamice_u_normal_stress0, & streamice_u_normal_stress1, & streamice_v_normal_stress0, & streamice_v_normal_stress1, & streamice_u_shear_stress0, & streamice_u_shear_stress1, & streamice_v_shear_stress0, & streamice_v_shear_stress1 #endif #ifdef ALLOW_STREAMICE_FLUX_CONTROL & ,u_flux_bdry_SI_0, & u_flux_bdry_SI_1, & v_flux_bdry_SI_0, & v_flux_bdry_SI_1 #endif #endif #ifdef ALLOW_STREAMICE_2DTRACER COMMON /STREAMICE_TRAC2D_FIELDS_RL/ & trac2d_ubdry_values_SI, & trac2d_vbdry_values_SI, & trac2d #ifdef STREAMICE_TRACER_AB COMMON /STREAMICE_TRAC2D_AB_RL/ & GAD_trac_2d #endif #endif #ifdef USE_ALT_RLOW COMMON /STREAMICE_RLOW/ & R_low_si #endif _RL H_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL U_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL V_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL visc_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL tau_beta_eff_streamice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL float_frac_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL surf_el_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL base_el_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL area_shelf_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL mass_ice_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL u_flux_bdry_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL v_flux_bdry_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL h_ubdry_values_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL h_vbdry_values_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL u_bdry_values_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL v_bdry_values_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL C_basal_friction (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) C _RL A_glen (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #ifdef STREAMICE_3D_GLEN_CONST _RL B_glen (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) #else _RL B_glen (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif _RL streamice_sigma_coord (Nr) _RL streamice_delsigma (Nr) #ifdef USE_ALT_RLOW _RL R_low_si (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif C The following arrays are used for the hybrid stress balance #ifdef STREAMICE_HYBRID_STRESS _RL streamice_taubx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_u_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_v_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_u_bed (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_v_bed (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_tauby (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_omega (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_basal_geom & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL visc_streamice_full & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL streamice_vert_shear_uz (Nr) _RL streamice_vert_shear_vz (Nr) #endif #ifdef ALLOW_STREAMICE_2DTRACER _RL trac2d_ubdry_values_SI & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL trac2d_vbdry_values_SI & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL trac2d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #ifdef STREAMICE_TRACER_AB _RL GAD_trac_2d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif #endif #ifdef STREAMICE_STRESS_BOUNDARY_CONTROL _RL streamice_u_normal_stress & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_v_normal_stress & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_u_shear_stress & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_v_shear_stress & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_u_normal_pert & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_v_normal_pert & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_u_shear_pert & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_v_shear_pert & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif #ifdef ALLOW_STREAMICE_FLUX_CONTROL _RL u_flux_bdry_pert & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL v_flux_bdry_pert & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif _RL ADOT_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) !! IMPORTANT: MELT RATE IN METERS PER YEAR !! POSITIVE WHERE MELTING _RL BDOT_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL BDOT_pert (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL H_streamice_prev (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL v_new_si (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL u_new_si (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL STREAMICE_dummy_array (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #ifdef ALLOW_STREAMICE_TIMEDEP_FORCING #ifdef STREAMICE_STRESS_BOUNDARY_CONTROL _RL streamice_u_normal_stress0 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_u_normal_stress1 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_v_normal_stress0 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_v_normal_stress1 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_u_shear_stress0 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_u_shear_stress1 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_v_shear_stress0 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_v_shear_stress1 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif #ifdef ALLOW_STREAMICE_FLUX_CONTROL _RL u_flux_bdry_SI_0 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL v_flux_bdry_SI_0 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL u_flux_bdry_SI_1 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL v_flux_bdry_SI_1 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif _RL bdot_streamice0 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL bdot_streamice1 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #endif COMMON /STREAMICE_COST_RL/ & cost_func1_streamice, & cost_vel_streamice, & cost_surf_streamice _RL cost_func1_streamice(nSx,nSy) _RL cost_vel_streamice(nSx,nSy) _RL cost_surf_streamice(nSx,nSy) C NOTES : C REAL ARRAYS THAT COMPRISE "STATE": C H_streamice, C U_streamice, C V_streamice, C visc_streamice, C tau_beta_eff_streamice, C area_shelf_streamice C (and do not forget STREAMICE_hmask) C C visc & tau are now calculated based on U,V in streamice_vel_solve C but with Hybdrid stress formulation they will become part of C velocity initial guess, so they are kept #ifdef ALLOW_PETSC COMMON /STREAMICE_PETSC_DOFS_COMMON/ & streamice_petsc_dofs_u, & streamice_petsc_dofs_v, & n_dofs_process _RS streamice_petsc_dofs_u & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS streamice_petsc_dofs_v & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) INTEGER n_dofs_process (0:nPx*nPy-1) #endif #if (defined (ALLOW_STREAMICE_OAD_FP)) COMMON /STREAMICE_PHISTAGE_ARRS/ & U_streamice_dvals, & V_streamice_dvals _RL U_streamice_dvals & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL V_streamice_dvals & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #ifdef STREAMICE_HYBRID_STRESS COMMON /STREAMICE_PHISTAGE_ARRS_HYBRID/ & taubx_dvals, tauby_dvals, & visc_full_dvals, & taubx_new_si, tauby_new_si, & visc_full_new_si _RL taubx_new_si (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL taubx_dvals (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL tauby_new_si (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL tauby_dvals (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL visc_full_new_si (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL visc_full_dvals (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) #endif #endif #endif /* ALLOW_STREAMICE */ CEH3 ;;; Local Variables: *** CEH3 ;;; mode:fortran *** CEH3 ;;; End: ***