3 Simple Poisson solver on the unit cube.
15Peano 4 multigrid solver using PETSc
17@author 2022 Sean Baccas, Dmitry Nikolaenko, Tobias Weinzierl
21parser = argparse.ArgumentParser(description=
'Multigrid - Poisson solver')
22parser.add_argument(
"-j",
"--parallel-builds", dest=
"j", type=int, default=-1, help=
"Parallel builds" )
23parser.add_argument(
"-pd",
"--peano-dir", dest=
"peanodir", default=
"../../../../", help=
"Peano4 directory" )
24parser.add_argument(
"-v",
"--verbose", dest=
"verbose", action=
"store_true", default=
False, help=
"Verbose")
25parser.add_argument(
"-d",
"--dimensions", dest=
"dimensions", default=2, help=
"Dimensions")
26parser.add_argument(
"-meshsize",
"--meshsize", dest=
"meshsize", default=0.01, help=
"Mesh size")
27parser.add_argument(
"-m",
"--mode", dest=
"mode", choices=[
"release",
"stats",
"asserts"], required=
True, help=
"Pick build type" )
28args = parser.parse_args()
38project = petsc.Project(project_name =
"Poisson",
39 namespace = [
"benchmarks",
"multigrid",
"petsc",
"poisson" ]
43solver = petsc.solvers.CollocatedLowOrderDiscretisation(
"Poisson",
50project.add_solver( solver )
55if args.mode==
"release":
56 build_mode = peano4.output.CompileMode.Release
58 build_mode = peano4.output.CompileMode.Stats
59if args.mode==
"asserts":
60 build_mode = peano4.output.CompileMode.Asserts
63project.set_global_simulation_parameters(
64 dimensions = args.dimensions,
65 offset = [ 0.0
for _
in range(args.dimensions) ],
66 domain_size = [ cube_size
for _
in range(args.dimensions) ],
70project.set_load_balancing(
"toolbox::loadbalancing::strategies::RecursiveSubdivision",
"new ::exahype2::LoadBalancingConfiguration()" )
71project.set_Peano4_installation( args.peanodir, build_mode )
77peano4_project = project.generate_Peano4_project(args.verbose)
78peano4_project.generate()
80os.system(
"make clean" )
82 os.system(
"make -j{}".format(args.j) )
84 os.system(
"make -j" )