Mentions légales du service

Skip to content
Snippets Groups Projects
Commit b2e9507e authored by Martin Genet's avatar Martin Genet
Browse files

First attempt at reduced kinematics solver initialisation (w/ Alexandre)

parent b362d77a
No related branches found
No related tags found
2 merge requests!58Devel,!57Devel reduced kinematics init
Pipeline #1076579 passed
......@@ -37,6 +37,8 @@ class ImageIterator():
self.working_folder = parameters.get("working_folder" , "." )
self.working_basename = parameters.get("working_basename" , "sol" )
self.register_ref_frame = parameters.get("register_ref_frame" , False )
self.initialize_reduced_U_from_file = parameters.get("initialize_reduced_U_from_file" , False )
self.initialize_reduced_U_filename = parameters.get("initialize_reduced_U_filename" , "init" )
self.initialize_U_from_file = parameters.get("initialize_U_from_file" , False )
self.initialize_U_folder = parameters.get("initialize_U_folder" , "." )
self.initialize_U_basename = parameters.get("initialize_U_basename" , "init" )
......@@ -143,6 +145,9 @@ class ImageIterator():
init_U.set_allow_extrapolation(True)
# init_dof_to_vertex_map = dolfin.dof_to_vertex_map(init_fs) # MG20230321: Somehow this is problematic when VTUs are saved with preserved connectivity…
if (self.initialize_reduced_U_from_file):
init_reduced_disp = numpy.loadtxt(self.initialize_reduced_U_filename)
n_iter_tot = 0
for forward_or_backward in ["forward","backward"]:
self.printer.print_var("forward_or_backward",forward_or_backward)
......@@ -202,6 +207,9 @@ class ImageIterator():
function=self.problem.U)
self.problem.U_norm = self.problem.U.vector().norm("l2")
elif (self.initialize_reduced_U_from_file):
self.solver.reduced_disp = init_reduced_disp[k_frame,:]
elif (self.initialize_DU_with_DUold):
self.problem.U.vector().axpy(1., self.problem.DUold.vector())
......
......@@ -56,6 +56,8 @@ def warp(
relax_n_iter_max : int = None ,
relax_must_advance : bool = None ,
normalize_energies : bool = False ,
initialize_reduced_U_from_file : bool = False ,
initialize_reduced_U_filename : str = None ,
initialize_U_from_file : bool = False ,
initialize_U_folder : str = None ,
initialize_U_basename : str = None ,
......@@ -267,6 +269,8 @@ def warp(
verbose=1)
if (nonlinearsolver == "newton"):
assert (initialize_reduced_U_from_file is False),\
"Not implemented. Aborting."
solver = dwarp.NewtonNonlinearSolver(
problem=problem,
parameters={
......@@ -283,6 +287,8 @@ def warp(
"n_iter_max":n_iter_max,
"write_iterations":print_iterations})
elif (nonlinearsolver == "reduced_kinematic_newton"):
assert (initialize_U_from_file is False),\
"Not implemented. Aborting."
motion = dwarp.MotionModel(
problem=problem,
type="translation_and_scaling")
......@@ -317,6 +323,8 @@ def warp(
"working_folder":working_folder,
"working_basename":working_basename,
"register_ref_frame":register_ref_frame,
"initialize_reduced_U_from_file":initialize_reduced_U_from_file,
"initialize_reduced_U_filename":initialize_reduced_U_filename,
"initialize_U_from_file":initialize_U_from_file,
"initialize_U_folder":initialize_U_folder,
"initialize_U_basename":initialize_U_basename,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment