-
Notifications
You must be signed in to change notification settings - Fork 5
Single run with FOM
The main
category in the input file specifies the mode of main
and the type of the solver. For example, examples/poisson/poisson.yml
specifies,
main:
mode: single_run
use_rom: false
solver: poisson
that (1) it is single_run
mode, (2) FOM simulation will be run, and (3) Poisson equation will be solved.
At single_run
mode, the equation will be solved on a particular right-hand side function and boundary condition set by the parameterized problem. In examples/poisson/poisson.yml
, the type of the parameterized problem is set as:
parameterized_problem:
name: poisson0
The parameterized problem poisson0
defines a right-hand side and a boundary condition as:
single_run/[the name of parameterized problem]
. For example of examples/poisson/poisson.yml
,
single_run:
poisson0:
k: 2.5
which sets the parameters as:
There are a variety of parameterized problems defined for each physics solver, which can be found in the source code include/parameterized_problem.hpp.
It is possible to change these parameter values at runtime using forced inputs, as instructed here. For example, if we want to solve the same problem as above but with a different
../../bin/main -i poisson.yml -f single_run/poisson0/k=1.5
will return a solution with
Domain decomposition option is set up in the input file as:
domain-decomposition:
type: interior_penalty
Currently either interior_penalty
or none
is supported:
-
interior_penalty
: DG interface enforcement between subdomains -
none
: The interfaces between subdomains are considered continuous. The equation is solved on a unified large mesh.
scaleupROM can use SubMesh feature for automatic decomposition, where you can simply specify one mesh filename. In the example of examples/poisson/poisson.yml
,
mesh:
filename: meshes/test.2x2.mesh
The domain is then decomposed according to element attributes. (For element attribute and the mesh format, see MFEM's documentation). In the example of examples/poisson/poisson.yml
, the domain is decomposed into 4 subdomains as shown below:
When using a single mesh file, it needs to cover the global, large scale domain and it cannot be built from unit cells in a bottom-up way.
In case of using component meshes, we need to specify component mesh files and the global configuration file that specifies the global topology and boundaries. For example, in examples/poisson/poisson.component.yml
,
mesh:
type: component-wise
uniform_refinement: 2
component-wise:
global_config: "config/2x2_config.h5"
components:
- name: "empty"
file: "meshes/square.mesh"
- name: "square-circle"
file: "meshes/square-circle.mesh"
- name: "square-square"
file: "meshes/square-square.mesh"
- name: "square-triangle"
file: "meshes/square-triangle.mesh"
- name: "square-star"
file: "meshes/square-star.mesh"
We defer the data format used for the global configuration to here. Running the single run with this input file
../../bin/main -i poisson.component.yml
saves the solution visualization on each subdomain at paraview_output_0
, paraview_output_1
, ...