--- MITgcm_contrib/dgoldberg/streamice/STREAMICE.h 2013/01/09 21:56:17 1.18 +++ MITgcm_contrib/dgoldberg/streamice/STREAMICE.h 2013/06/11 17:42:17 1.23 @@ -6,7 +6,8 @@ COMMON /STREAMICE_PARMS_R/ & streamice_density, streamice_density_ocean_avg, - & A_glen_isothermal, n_glen, eps_glen_min, eps_u_min, +! & 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, @@ -16,9 +17,12 @@ & streamice_wgt_drift, streamice_wgt_surf, & streamice_wgt_avthick, streamice_wgt_vel, & streamice_wgt_tikh, - & streamice_addl_backstress + & streamice_addl_backstress, + & streamice_smooth_gl_width, + & streamice_adot_uniform _RL streamice_density, streamice_density_ocean_avg - _RL A_glen_isothermal, n_glen, eps_glen_min, eps_u_min +! _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 @@ -33,6 +37,8 @@ _RL streamice_wgt_avthick, streamice_wgt_vel _RL streamice_wgt_tikh _RL streamice_addl_backstress + _RL streamice_smooth_gl_width + _RL streamice_adot_uniform C parms for parameterized initial thickness @@ -84,16 +90,33 @@ CHARACTER*(MAX_LEN_FNAM) STREAMICEbasalTracFile CHARACTER*(MAX_LEN_FNAM) STREAMICEGlenConstFile 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 - - + +#ifdef ALLOW_PETSC +! CHARACTER PARAMS FOR PETSC + CHARACTER*(MAX_LEN_FNAM) PETSC_SOLVER_TYPE + CHARACTER*(MAX_LEN_FNAM) PETSC_PRECOND_TYPE +#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, @@ -104,13 +127,31 @@ & STREAMICEbasalTracConfig, & STREAMICEbasalTracFile, & STREAMICEvelOptimFile, + & STREAMICEtopogFile, & STREAMICEhmaskFile, + & STREAMICEHBCxFile, + & STREAMICEHBCyFile, & STREAMICEuFaceBdryFile, & STREAMICEvFaceBdryFile, & STREAMICEuDirichValsFile, & STREAMICEvDirichValsFile, & STREAMICEGlenConstFile, - & STREAMICEGlenConstConfig + & STREAMICEGlenConstConfig, + & STREAMICEcostMaskFile, + & STREAMICE_ADV_SCHEME + +#ifdef ALLOW_PETSC + COMMON /PETSC_PARM_C/ + & PETSC_SOLVER_TYPE, + & PETSC_PRECOND_TYPE +#endif + +#ifdef ALLOW_STREAMICE_2DTRACER + COMMON /STREAMICE_TRAC2D_C/ + & STREAMICETrac2DBCxFile, + & STREAMICETrac2DBCyFile, + & STREAMICETrac2DinitFile +#endif C -------------------------- LOGICAL PARAMS --------------------------------------------------- @@ -194,7 +235,8 @@ & STREAMICE_vfacemask_bdry, & STREAMICE_float_cond, & STREAMICE_calve_mask, - & STREAMICE_ctrl_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) @@ -211,7 +253,9 @@ _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) + & (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) @@ -235,12 +279,14 @@ & mass_ice_streamice, & u_flux_bdry_SI, & v_flux_bdry_SI, - & h_bdry_values_SI, + & h_ubdry_values_SI, + & h_vbdry_values_SI, & u_bdry_values_SI, & v_bdry_values_SI, & STREAMICE_dummy_array, & C_basal_friction, - & A_glen, +! & A_glen, + & B_glen, & BDOT_streamice, ADOT_streamice, ! mass balances in meters per year & streamice_sigma_coord, streamice_delsigma, & H_streamice_prev @@ -253,6 +299,17 @@ & streamice_vert_shear_uz, streamice_vert_shear_vz #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 @@ -271,11 +328,13 @@ _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 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) - _RL A_glen (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) +! _RL A_glen (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RL B_glen (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL streamice_sigma_coord (Nr) _RL streamice_delsigma (Nr) @@ -297,7 +356,17 @@ _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 _RL ADOT_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) !! IMPORTANT: MELT RATE IN METERS PER YEAR @@ -325,6 +394,18 @@ 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 #endif /* ALLOW_STREAMICE */