Пример #1
0
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')
Пример #2
0
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