mesh = Mesh(in_dir + 'submesh.xdmf') Q = FunctionSpace(mesh, 'CG', 1) S = Function(Q) B = Function(Q) File(in_dir + 'S_s.xml') >> S File(in_dir + 'B_s.xml') >> B config = default_config() config['output_path'] = out_dir config['model_order'] = 'SSA' config['use_dukowicz'] = False model = model.Model(config) model.set_mesh(mesh) model.set_surface_and_bed(S, B) model.initialize_variables() model.init_beta(in_dir + 'beta_s.xml') model.init_component_Ubar(in_dir + 'ubar_s.xml', in_dir + 'vbar_s.xml') model.init_etabar(in_dir + 'etabar_s.xml') T = solvers.StokesBalanceSolver(model, config) T.solve() Ubar = project(as_vector([model.ubar, model.vbar])) model.save_pvd(model.eta, 'eta') model.save_pvd(Ubar, 'Ubar')
db2.data['B'] = db2.data['S'] - db2.data['H'] db2.set_data_val('H', 32767, thklim) db2.data['S'] = db2.data['B'] + db2.data['H'] H = db2.get_nearest_expression("H") S = db2.get_nearest_expression("S") B = db2.get_nearest_expression("B") M = db2.get_nearest_expression("mask") T_s = db1.get_nearest_expression("srfTemp") q_geo = db1.get_nearest_expression("q_geo") adot = db1.get_nearest_expression("adot") U_ob = dm.get_projection("U_ob", near=True) u = dm.get_nearest_expression("vx") v = dm.get_nearest_expression("vy") model = model.Model() model.set_mesh(mesh) model.set_geometry(S, B, deform=True) model.calculate_boundaries(mask=M, adot=adot) model.set_parameters(pc.IceParameters()) model.initialize_variables() # constraints on optimization for beta : class Bounds_max(Expression): def eval(self, values, x): if M(x[0], x[1], x[2]) > 0: values[0] = 2 * DOLFIN_EPS else: values[0] = 100000.0