--- MITgcm_contrib/dgoldberg/streamice/STREAMICE.h 2012/10/03 14:54:31 1.12 +++ MITgcm_contrib/dgoldberg/streamice/STREAMICE.h 2013/06/08 22:15:33 1.22 @@ -6,15 +6,22 @@ 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, + & 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_CFL_factor, streamice_adjDump, & streamice_bg_surf_slope_x, streamice_bg_surf_slope_y, - & streamice_kx_b_init, streamice_ky_b_init + & 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 _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 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 @@ -25,6 +32,12 @@ _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 + C parms for parameterized initial thickness C SHELF_MAX_DRAFT: max thickness of ice in m @@ -71,8 +84,37 @@ CHARACTER*(MAX_LEN_FNAM) STREAMICEsigcoordFile CHARACTER*(MAX_LEN_FNAM) STREAMICEdelsigFile CHARACTER*(MAX_LEN_FNAM) STREAMICEbasalTracConfig + CHARACTER*(MAX_LEN_FNAM) STREAMICEGlenConstConfig 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, @@ -82,7 +124,32 @@ & STREAMICEdelsigFile, & STREAMICEbasalTracConfig, & STREAMICEbasalTracFile, - & STREAMICEvelOptimFile + & STREAMICEvelOptimFile, + & STREAMICEtopogFile, + & STREAMICEhmaskFile, + & STREAMICEHBCxFile, + & STREAMICEHBCyFile, + & STREAMICEuFaceBdryFile, + & STREAMICEvFaceBdryFile, + & STREAMICEuDirichValsFile, + & STREAMICEvDirichValsFile, + & STREAMICEGlenConstFile, + & 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 --------------------------------------------------- @@ -165,7 +232,9 @@ & STREAMICE_ufacemask_bdry, & STREAMICE_vfacemask_bdry, & STREAMICE_float_cond, - & STREAMICE_calve_mask + & 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) @@ -181,6 +250,10 @@ & (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) @@ -204,21 +277,41 @@ & 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, - & BDOT_streamice, +! & A_glen, + & B_glen, + & BDOT_streamice, ADOT_streamice, ! mass balances in meters per year + & 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, + & 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 - & R_low_si, + COMMON /STREAMICE_RLOW/ + & R_low_si #endif - & streamice_sigma_coord, streamice_delsigma _RL H_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) @@ -233,17 +326,22 @@ _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) + #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 - +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) @@ -255,15 +353,27 @@ & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL streamice_vert_shear_uz (Nr) _RL streamice_vert_shear_vz (Nr) - _RL streamice_sigma_coord (Nr) - _RL streamice_delsigma (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 !! 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 @@ -282,6 +392,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 */