--- MITgcm_contrib/dgoldberg/streamice/STREAMICE.h 2012/03/29 15:59:20 1.1 +++ MITgcm_contrib/dgoldberg/streamice/STREAMICE.h 2012/12/10 02:34:45 1.17 @@ -1,4 +1,4 @@ -C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| +C---+----1--+-+----2----+----3----+----4----+----5----+----6----+----7-|--+----| #ifdef ALLOW_STREAMICE @@ -6,18 +6,32 @@ COMMON /STREAMICE_PARMS_R/ & streamice_density, streamice_density_ocean_avg, - & A_glen_isothermal, n_glen, eps_glen_min, + & A_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_CFL_factor + & streamice_nonlin_tol_fp, + & 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_addl_backstress _RL streamice_density, streamice_density_ocean_avg - _RL A_glen_isothermal, n_glen, eps_glen_min + _RL A_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_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_addl_backstress + C parms for parameterized initial thickness C SHELF_MAX_DRAFT: max thickness of ice in m @@ -44,6 +58,9 @@ 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, @@ -57,10 +74,22 @@ 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) STREAMICEbasalTracFile + CHARACTER*(MAX_LEN_FNAM) STREAMICEvelOptimFile COMMON /STREAMICE_PARM_C/ & STREAMICEthickInit, & STREAMICEthickFile, - & STREAMICEcalveMaskFile + & STREAMICEcalveMaskFile, + & STREAMICEsigcoordInit, + & STREAMICEsigcoordFile, + & STREAMICEdelsigFile, + & STREAMICEbasalTracConfig, + & STREAMICEbasalTracFile, + & STREAMICEvelOptimFile C -------------------------- LOGICAL PARAMS --------------------------------------------------- @@ -73,6 +102,19 @@ 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 + +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, @@ -80,7 +122,11 @@ & STREAMICE_GL_regularize, STREAMICE_move_front, & STREAMICE_calve_to_mask, & STREAMICE_construct_matrix, - & STREAMICE_lower_cg_tol + & STREAMICE_lower_cg_tol, + & STREAMICE_NS_periodic, STREAMICE_EW_periodic, + & STREAMICE_diagnostic_only, + & STREAMICE_ppm_driving_stress, + & STREAMICE_h_ctrl_const_surf C -------------------------- AND NOW ARRAYS --------------------------------------------------- @@ -126,7 +172,8 @@ & STREAMICE_ufacemask_bdry, & STREAMICE_vfacemask_bdry, & STREAMICE_float_cond, - & STREAMICE_calve_mask + & STREAMICE_calve_mask, + & STREAMICE_ctrl_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) @@ -142,6 +189,8 @@ & (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,nSx,nSy,Nr) C NOTES : C STREAMICE_ufacemask_bdry, STREAMICE_vfacemask_bdry ARE CONSTANT (FIXED) @@ -169,7 +218,26 @@ & u_bdry_values_SI, & v_bdry_values_SI, & STREAMICE_dummy_array, - & C_basal_friction + & C_basal_friction, + & A_glen, + & BDOT_streamice, + & streamice_sigma_coord, streamice_delsigma, + & H_streamice_prev + +#ifdef STREAMICE_HYBRID_STRESS + COMMON /STREAMICE_HYBRID/ + & streamice_taubx, streamice_tauby, + & streamice_u_surf, streamice_v_surf, + & visc_streamice_full, streamice_omega, streamice_basal_geom, + & streamice_vert_shear_uz, streamice_vert_shear_vz +#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) @@ -186,9 +254,42 @@ _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 A_glen (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _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_tauby (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_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 + +!! IMPORTANT: MELT RATE IN METERS PER YEAR +!! POSITIVE WHERE MELTING + _RL BDOT_streamice (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 STREAMICE_dummy_array (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + + + COMMON /STREAMICE_COST_RL/ + & cost_func1_streamice + _RL cost_func1_streamice(nSx,nSy) + C NOTES : C REAL ARRAYS THAT COMPRISE "STATE": C H_streamice,