C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| #ifdef ALLOW_STREAMICE C -------------------------- REAL PARAMS --------------------------------------------------- COMMON /STREAMICE_PARMS_R/ & streamice_density, streamice_density_ocean_avg, & A_glen_isothermal, n_glen, eps_glen_min, & C_basal_fric_const, n_basal_friction, streamice_input_flux_unif, & streamice_vel_update, streamice_cg_tol, streamice_nonlin_tol, & streamice_CFL_factor, streamice_adjDump _RL streamice_density, streamice_density_ocean_avg _RL A_glen_isothermal, n_glen, eps_glen_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_CFL_factor _RL streamice_adjDump 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_n_sub_regularize INTEGER streamice_max_cg_iter, streamice_max_nl_iter INTEGER streamice_vel_upd_counter, streamice_nstep_velocity INTEGER streamice_n_sub_regularize C -------------------------- CHAR PARAMS --------------------------------------------------- CHARACTER*(MAX_LEN_FNAM) STREAMICEthickFile CHARACTER*(MAX_LEN_FNAM) STREAMICEthickInit CHARACTER*(MAX_LEN_FNAM) STREAMICEcalveMaskFile COMMON /STREAMICE_PARM_C/ & STREAMICEthickInit, & STREAMICEthickFile, & STREAMICEcalveMaskFile C -------------------------- LOGICAL PARAMS --------------------------------------------------- LOGICAL STREAMICEison LOGICAL STREAMICE_dump_mdsio LOGICAL STREAMICE_tave_mdsio LOGICAL STREAMICE_dump_mnc LOGICAL STREAMICE_tave_mnc LOGICAL STREAMICE_GL_regularize, STREAMICE_move_front LOGICAL STREAMICE_calve_to_mask LOGICAL STREAMICE_construct_matrix LOGICAL STREAMICE_lower_cg_tol COMMON /STREAMICE_PARM_L/ & STREAMICEison, & STREAMICE_dump_mdsio, STREAMICE_tave_mdsio, & STREAMICE_dump_mnc, STREAMICE_tave_mnc, & STREAMICE_GL_regularize, STREAMICE_move_front, & STREAMICE_calve_to_mask, & STREAMICE_construct_matrix, & STREAMICE_lower_cg_tol 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 don't 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 _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) 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_bdry_values_SI, & u_bdry_values_SI, & v_bdry_values_SI, & STREAMICE_dummy_array, & C_basal_friction _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_bdry_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) _RL STREAMICE_dummy_array (1-OLx:sNx+OLx,1-OLy:sNy+OLy,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 don't 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 #endif /* ALLOW_STREAMICE */ CEH3 ;;; Local Variables: *** CEH3 ;;; mode:fortran *** CEH3 ;;; End: ***