t = 0 # reference solution at t=0 u_ref = interpolate(u_D, V) u_ref.rename("reference", " ") # mark mesh w.r.t ranks mesh_rank = MeshFunction("size_t", mesh, mesh.topology().dim()) if problem is ProblemType.NEUMANN: mesh_rank.set_all(MPI.rank(MPI.comm_world) + 4) else: mesh_rank.set_all(MPI.rank(MPI.comm_world) + 0) mesh_rank.rename("myRank", "") # Generating output files temperature_out = File("out/%s.pvd" % precice.get_participant_name()) ref_out = File("out/ref%s.pvd" % precice.get_participant_name()) error_out = File("out/error%s.pvd" % precice.get_participant_name()) ranks = File("out/ranks%s.pvd" % precice.get_participant_name()) # output solution and reference solution at t=0, n=0 n = 0 print('output u^%d and u_ref^%d' % (n, n)) temperature_out << u_n ref_out << u_ref ranks << mesh_rank error_total, error_pointwise = compute_errors(u_n, u_ref, V) error_out << error_pointwise # set t_1 = t_0 + dt, this gives u_D^1
u_np1.rename("Source-Data", "") elif args.drain: u_n.rename("Drain-Data", "") u_np1.rename("Drain-Data", "") t = 0 mesh_rank = MeshFunction("size_t", mesh, mesh.topology().dim()) if args.source: mesh_rank.set_all(MPI.rank(MPI.comm_world) + 4) else: mesh_rank.set_all(MPI.rank(MPI.comm_world) + 0) mesh_rank.rename("myRank", "") # Generating output files solution_out = File("output/%s.pvd" % precice.get_participant_name()) ranks = File("output/ranks%s.pvd" % precice.get_participant_name()) # output solution and reference solution at t=0, n=0 n = 0 print('output u^%d and u_ref^%d' % (n, n)) solution_out << u_n ranks << mesh_rank while precice.is_coupling_ongoing(): # write checkpoint if precice.is_action_required(precice.action_write_iteration_checkpoint()): precice.store_checkpoint(u_n, t, n) read_data = precice.read_data()
# apply constant Dirichlet boundary condition at bottom edge # apply Dirichlet boundary condition on coupling interface bcs = [ DirichletBC(V, coupling_expression, coupling_boundary), DirichletBC(V, u_D, bottom_boundary) ] a, L = lhs(F), rhs(F) # Time-stepping u_np1 = Function(V) t = 0 u_D.t = t + dt # mark mesh w.r.t ranks ranks = File("Solid/VTK/ranks%s.pvd.pvd" % precice.get_participant_name()) mesh_rank = MeshFunction("size_t", mesh, mesh.topology().dim()) mesh_rank.set_all(MPI.rank(MPI.comm_world)) mesh_rank.rename("myRank", "") ranks << mesh_rank # Create output file file_out = File("Solid/VTK/%s.pvd" % precice.get_participant_name()) file_out << u_n print("output vtk for time = {}".format(float(t))) n = 0 fluxes = Function(V_g) fluxes.rename("Fluxes", "")
# apply constant Dirichlet boundary condition at bottom edge # apply Dirichlet boundary condition on coupling interface bcs = [ DirichletBC(V, coupling_expression, coupling_boundary), DirichletBC(V, u_D, bottom_boundary) ] a, L = lhs(F), rhs(F) # Time-stepping u_np1 = Function(V) t = 0 u_D.t = t + dt # mark mesh w.r.t ranks ranks = File("output/ranks%s.pvd.pvd" % precice.get_participant_name()) mesh_rank = MeshFunction("size_t", mesh, mesh.topology().dim()) mesh_rank.set_all(MPI.rank(MPI.comm_world)) mesh_rank.rename("myRank", "") ranks << mesh_rank # Create output file file_out = File("output/%s.pvd" % precice.get_participant_name()) file_out << u_n print("output vtk for time = {}".format(float(t))) n = 0 fluxes = Function(V_g) fluxes.rename("Fluxes", "")
# parameters for Time-Stepping t = 0.0 n = 0 time = [] u_tip = [] time.append(0.0) u_tip.append(0.0) E_ext = 0 # mark mesh w.r.t ranks mesh_rank = MeshFunction("size_t", mesh, mesh.topology().dim()) mesh_rank.set_all(MPI.rank(MPI.comm_world) + 0) mesh_rank.rename("myRank", "") displacement_out = File("Solid/FSI-S/u_fsi.pvd") ranks = File("Solid/FSI-S/ranks%s.pvd" % precice.get_participant_name()) u_n.rename("Displacement", "") u_np1.rename("Displacement", "") displacement_out << u_n ranks << mesh_rank while precice.is_coupling_ongoing(): if precice.is_action_required( precice.action_write_iteration_checkpoint()): # write checkpoint precice.store_checkpoint(u_n, t, n) # read data from preCICE and get a new coupling expression read_data = precice.read_data()