SalvusCompute API Documentation
Release: 2026.8.0
SalvusCompute is steered by input files. These can be either TOML files or equivalent JSON files. Both are shown here. Navigate to the corresponding group on the right hand side. Note that we recommend using SalvusFlow to generate the input files but you can also do it manually, of course.
Example file with all the options. Please note that many of these might be mutally exclusive and/or optional. A detailed description of all parameters follows.
[adjoint]
forward_meta_json_filename = "meta-json.json"
[adjoint.point_source_block]
filename = "sources.h5"
groups = ["sources_1", "sources_2"]
[[adjoint.point_source]]
location = [0.0, 1.0]
spatial_type = "scalar"
spatial_weights = [1.0]
[adjoint.point_source.rotation_on_input]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
[adjoint.point_source.source_time_function]
wavelet = "custom"
filename = "source.h5"
dataset_name = "/stf"
[adjoint.gradient]
parameterization = "rho-vp-vs"
parameters = ["VP", "RHO"]
output_filename = "gradient.h5"
format = "hdf5"
skip_gradient_assembly = false
[domain]
dimension = 3
polynomial_order = 4
[domain.mesh]
filename = "mesh.h5"
format = "hdf5"
[domain.model]
filename = "model.h5"
format = "hdf5"
[domain.geometry]
filename = "geometry.h5"
format = "hdf5"
[experimental]
use_new_materials = false
[hardware]
gpu = false
num_threads_per_rank = 4
[output]
memory_per_rank_in_MB = 1000.0
[output.meta_data]
meta_json_filename = "meta.json"
progress_json_filename = "salvus_progress.json"
[output.point_data]
filename = "receivers.h5"
format = "asdf"
sampling_interval_in_time_steps = 10
[[output.point_data.receiver]]
location = "XXX"
network_code = "AB"
station_code = "0000"
location_code = ""
fields = ["displacement", "gradient-of-displacement"]
[output.point_data.receiver.rotation_on_output]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
components = ["Z", "N", "E"]
[output.surface_data]
filename = "boundary_output.h5"
format = "hdf5"
fields = ["displacement", "strain"]
sampling_interval_in_time_steps = 10
side_sets = ["x0", "y0", "z0"]
start_time_in_seconds = "0.0"
end_time_in_seconds = "1.0"
[output.volume_data]
filename = "volume_output.h5"
format = "hdf5"
fields = ["u", "grad_u"]
sampling_interval_in_time_steps = "10"
start_time_in_seconds = "0.0"
end_time_in_seconds = "1.0"
[output.frequency_domain]
filename = "frequency_domain.h5"
format = "hdf5"
fields = ["phi", "displacement"]
frequencies = [1.0, 2.0]
start_time_in_seconds = -0.12
end_time_in_seconds = 1234.56
[output.final_time_data]
filename = "final_time_values.h5"
format = "hdf5"
fields = ["phi", "displacement"]
[output.time_reduced_data]
filename = "reductions.h5"
format = "hdf5-minimal"
[[output.time_reduced_data.reductions]]
field = "stress"
reduction = "max"
criterion = "vonmises"
record = ["value", "time"]
[physics]
[physics.wave_equation]
time_stepping_scheme = "newmark"
start_time_in_seconds = -0.12
end_time_in_seconds = 1234.56
time_step_in_seconds = 0.01
reference_time_in_seconds = 1000.0
courant_number = 0.6
attenuation = false
point_source_chunk_size = 1000
point_source_buffer_memory_in_MB_per_rank = 1000.0
[physics.wave_equation.point_source_block]
filename = "sources.h5"
groups = ["sources_1", "sources_2"]
[[physics.wave_equation.point_source]]
location = [0.0, 1.0]
spatial_type = "scalar"
spatial_weights = [1.0]
[physics.wave_equation.point_source.rotation_on_input]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
[physics.wave_equation.point_source.source_time_function]
wavelet = "ricker"
center_frequency = 1.0
time_shift_in_seconds = 1.0
[[physics.wave_equation.boundaries]]
type = "homogeneous-dirichlet"
side_sets = ["y0", "x1"]
components = "XXX"
[[physics.wave_equation.boundaries]]
type = "ocean-loading"
side_sets = ["y0", "x1"]
[[physics.wave_equation.boundaries]]
type = "absorbing"
side_sets = ["x0", "x1", "y1"]
width_in_meters = 1.06
taper_amplitude = 1.07
side_sets_are_axis_aligned = "true"
[physics.diffusion_equation]
time_stepping_scheme = "euler"
start_time_in_seconds = -0.12
end_time_in_seconds = 1234.56
time_step_in_seconds = 0.01
courant_number = 0.6
[physics.diffusion_equation.initial_values]
filename = "model.h5"
format = "hdf5"
field = "VP"
[physics.diffusion_equation.final_values]
filename = "final.h5"
[physics.poisson_equation]
[physics.poisson_equation.right_hand_side]
filename = "model.h5"
format = "hdf5"
field = "values"
fields = ["field1", "field2"]
[physics.poisson_equation.initial_values]
filename = "model.h5"
format = "hdf5"
field = "VP"
fields = ["field1", "field2"]
[[physics.poisson_equation.boundaries]]
type = "homogeneous-dirichlet"
side_sets = ["y0", "x1"]
components = "XXX"
[[physics.poisson_equation.boundaries]]
type = "neumann"
side_sets = ["y0", "x1"]
[physics.poisson_equation.solution]
filename = "solution.h5"
fields = ["solution", "residuals"]
[solver]
type = "cg"
preconditioner = true
max_iterations = 10
relative_tolerance = 1e-06
absolute_tolerance = 1.0
monitor = true
{
"adjoint": {
"forward_meta_json_filename": "meta-json.json",
"point_source_block": {
"filename": "sources.h5",
"groups": [
"sources_1",
"sources_2"
]
},
"point_source": [
{
"location": [
0.0,
1.0
],
"spatial_type": "scalar",
"spatial_weights": [
1.0
],
"rotation_on_input": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
]
},
"source_time_function": {
"wavelet": "custom",
"filename": "source.h5",
"dataset_name": "/stf"
}
}
],
"gradient": {
"parameterization": "rho-vp-vs",
"parameters": [
"VP",
"RHO"
],
"output_filename": "gradient.h5",
"format": "hdf5",
"skip_gradient_assembly": false
}
},
"domain": {
"dimension": 3,
"polynomial_order": 4,
"mesh": {
"filename": "mesh.h5",
"format": "hdf5"
},
"model": {
"filename": "model.h5",
"format": "hdf5"
},
"geometry": {
"filename": "geometry.h5",
"format": "hdf5"
}
},
"experimental": {
"use_new_materials": false
},
"hardware": {
"gpu": false,
"num_threads_per_rank": 4
},
"output": {
"memory_per_rank_in_MB": 1000.0,
"meta_data": {
"meta_json_filename": "meta.json",
"progress_json_filename": "salvus_progress.json"
},
"point_data": {
"filename": "receivers.h5",
"format": "asdf",
"sampling_interval_in_time_steps": 10,
"receiver": [
{
"location": "XXX",
"network_code": "AB",
"station_code": "0000",
"location_code": "",
"fields": [
"displacement",
"gradient-of-displacement"
],
"rotation_on_output": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
],
"components": [
"Z",
"N",
"E"
]
}
}
]
},
"surface_data": {
"filename": "boundary_output.h5",
"format": "hdf5",
"fields": [
"displacement",
"strain"
],
"sampling_interval_in_time_steps": 10,
"side_sets": [
"x0",
"y0",
"z0"
],
"start_time_in_seconds": "0.0",
"end_time_in_seconds": "1.0"
},
"volume_data": {
"filename": "volume_output.h5",
"format": "hdf5",
"fields": [
"u",
"grad_u"
],
"sampling_interval_in_time_steps": "10",
"start_time_in_seconds": "0.0",
"end_time_in_seconds": "1.0"
},
"frequency_domain": {
"filename": "frequency_domain.h5",
"format": "hdf5",
"fields": [
"phi",
"displacement"
],
"frequencies": [
1.0,
2.0
],
"start_time_in_seconds": -0.12,
"end_time_in_seconds": 1234.56
},
"final_time_data": {
"filename": "final_time_values.h5",
"format": "hdf5",
"fields": [
"phi",
"displacement"
]
},
"time_reduced_data": {
"filename": "reductions.h5",
"format": "hdf5-minimal",
"reductions": [
{
"field": "stress",
"reduction": "max",
"criterion": "vonmises",
"record": [
"value",
"time"
]
}
]
}
},
"physics": {
"wave_equation": {
"time_stepping_scheme": "newmark",
"start_time_in_seconds": -0.12,
"end_time_in_seconds": 1234.56,
"time_step_in_seconds": 0.01,
"reference_time_in_seconds": 1000.0,
"courant_number": 0.6,
"attenuation": false,
"point_source_chunk_size": 1000,
"point_source_buffer_memory_in_MB_per_rank": 1000.0,
"point_source_block": {
"filename": "sources.h5",
"groups": [
"sources_1",
"sources_2"
]
},
"point_source": [
{
"location": [
0.0,
1.0
],
"spatial_type": "scalar",
"spatial_weights": [
1.0
],
"rotation_on_input": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
]
},
"source_time_function": {
"wavelet": "ricker",
"center_frequency": 1.0,
"time_shift_in_seconds": 1.0
}
}
],
"boundaries": [
[
{
"type": "homogeneous-dirichlet",
"side_sets": [
"y0",
"x1"
],
"components": "XXX"
},
{
"type": "ocean-loading",
"side_sets": [
"y0",
"x1"
]
},
{
"type": "absorbing",
"side_sets": [
"x0",
"x1",
"y1"
],
"width_in_meters": 1.06,
"taper_amplitude": 1.07,
"side_sets_are_axis_aligned": "true"
}
]
]
},
"diffusion_equation": {
"time_stepping_scheme": "euler",
"start_time_in_seconds": -0.12,
"end_time_in_seconds": 1234.56,
"time_step_in_seconds": 0.01,
"courant_number": 0.6,
"initial_values": {
"filename": "model.h5",
"format": "hdf5",
"field": "VP"
},
"final_values": {
"filename": "final.h5"
}
},
"poisson_equation": {
"right_hand_side": {
"filename": "model.h5",
"format": "hdf5",
"field": "values",
"fields": [
"field1",
"field2"
]
},
"initial_values": {
"filename": "model.h5",
"format": "hdf5",
"field": "VP",
"fields": [
"field1",
"field2"
]
},
"boundaries": [
[
{
"type": "homogeneous-dirichlet",
"side_sets": [
"y0",
"x1"
],
"components": "XXX"
},
{
"type": "neumann",
"side_sets": [
"y0",
"x1"
]
}
]
],
"solution": {
"filename": "solution.h5",
"fields": [
"solution",
"residuals"
]
}
}
},
"solver": {
"type": "cg",
"preconditioner": true,
"max_iterations": 10,
"relative_tolerance": 1e-06,
"absolute_tolerance": 1.0,
"monitor": true
}
}
Adjoint group [adjoint]
If this group is present with its required members, Salvus will solve the adjoint-state problem for the specified physics and domain.
Required: False
Full example (Please note that some options might be mutally exclusive):
[adjoint]
forward_meta_json_filename = "meta-json.json"
[adjoint.point_source_block]
filename = "sources.h5"
groups = ["sources_1", "sources_2"]
[[adjoint.point_source]]
location = [0.0, 1.0]
spatial_type = "scalar"
spatial_weights = [1.0]
[adjoint.point_source.rotation_on_input]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
[adjoint.point_source.source_time_function]
wavelet = "custom"
filename = "source.h5"
dataset_name = "/stf"
[adjoint.gradient]
parameterization = "rho-vp-vs"
parameters = ["VP", "RHO"]
output_filename = "gradient.h5"
format = "hdf5"
skip_gradient_assembly = false
{
"adjoint": {
"forward_meta_json_filename": "meta-json.json",
"point_source_block": {
"filename": "sources.h5",
"groups": [
"sources_1",
"sources_2"
]
},
"point_source": [
{
"location": [
0.0,
1.0
],
"spatial_type": "scalar",
"spatial_weights": [
1.0
],
"rotation_on_input": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
]
},
"source_time_function": {
"wavelet": "custom",
"filename": "source.h5",
"dataset_name": "/stf"
}
}
],
"gradient": {
"parameterization": "rho-vp-vs",
"parameters": [
"VP",
"RHO"
],
"output_filename": "gradient.h5",
"format": "hdf5",
"skip_gradient_assembly": false
}
}
}
Detailed description of all parameters:
-
forward_meta_json_filename-
Pretty name: Forward meta json
-
Description: The json file describing the forward run
-
Parameter type: string
-
Required: True
-
Block of point sources. subgroup [adjoint.point_source_block]
Reads all source characteristics from a group in an HDF5 file.
Required: False
Full example (Please note that some options might be mutally exclusive):
[adjoint.point_source_block]
filename = "sources.h5"
groups = ["sources_1", "sources_2"]
{
"point_source_block": {
"filename": "sources.h5",
"groups": [
"sources_1",
"sources_2"
]
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Filename
-
Description: Filename containing sources
-
Parameter type: string
-
Required: True
-
-
groups-
Pretty name: Groups
-
Description: Array of groups in the HDF5 file containing source information
-
Parameter type: array of strings
-
Required: True
-
Point source subgroup [adjoint.point_source]
Point sources for the wave equation.
Required: False
Full example (Please note that some options might be mutally exclusive):
[[adjoint.point_source]]
location = [0.0, 1.0]
spatial_type = "scalar"
spatial_weights = [1.0]
[adjoint.point_source.rotation_on_input]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
[adjoint.point_source.source_time_function]
wavelet = "custom"
filename = "source.h5"
dataset_name = "/stf"
{
"point_source": {
"location": [
0.0,
1.0
],
"spatial_type": "scalar",
"spatial_weights": [
1.0
],
"rotation_on_input": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
]
},
"source_time_function": {
"wavelet": "custom",
"filename": "source.h5",
"dataset_name": "/stf"
}
}
}
Detailed description of all parameters:
-
location-
Pretty name: Source location
-
Description: The source location in Cartesian coordinates.
-
Parameter type: array of numbers
-
Required: False
-
-
spatial_type-
Pretty name: Spatial type of the source
-
Description: The spatial type of the point source.
-
Parameter type: string
-
Required: False
-
Possible values:
"scalar","vector","moment_tensor","scalar_gradient","vector_gradient"
-
-
spatial_weights-
Pretty name: Spatial weights of the source
-
Description: The spatial weights and scale of the point source.
-
Parameter type: array of numbers
-
Required: False
-
subgroup [adjoint.point_source.rotation_on_input]
Optionally rotate the output. The specified rotation matrix will be applied to the final output of the receiver. It should thus rotate from Cartesian X,Y,Z to the coordinate system of your choice.
Required: False
Full example (Please note that some options might be mutally exclusive):
[adjoint.point_source.rotation_on_input]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
{
"rotation_on_input": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
]
}
}
Detailed description of all parameters:
-
matrix-
Pretty name: Rotation Matrix
-
Description: A 2x2 or 3x3 rotation matrix.
-
Parameter type: array of arrays
-
Required: True
-
Source time function subgroup [adjoint.point_source.source_time_function]
The temporal evolution of the source.
Required: False
Full example (Please note that some options might be mutally exclusive):
[adjoint.point_source.source_time_function]
wavelet = "custom"
filename = "source.h5"
dataset_name = "/stf"
{
"source_time_function": {
"wavelet": "custom",
"filename": "source.h5",
"dataset_name": "/stf"
}
}
Detailed description of all parameters:
-
wavelet-
Pretty name: Source time function
-
Description: The type of the source time function
-
Parameter type: string
-
Required: True
-
Possible values:
"custom"
-
-
filename-
Pretty name: Source filename
-
Description: The hdf5 filename of the source.
-
Parameter type: string
-
Required: True
-
-
dataset_name-
Pretty name: Dataset name
-
Description: The hdf5 dataset name containing the source time function.
-
Parameter type: string
-
Required: True
-
Gradient subgroup [adjoint.gradient]
Model parameters and output filename for gradient computation.
Required: True
Full example (Please note that some options might be mutally exclusive):
[adjoint.gradient]
parameterization = "rho-vp-vs"
parameters = ["VP", "RHO"]
output_filename = "gradient.h5"
format = "hdf5"
skip_gradient_assembly = false
{
"gradient": {
"parameterization": "rho-vp-vs",
"parameters": [
"VP",
"RHO"
],
"output_filename": "gradient.h5",
"format": "hdf5",
"skip_gradient_assembly": false
}
}
Detailed description of all parameters:
-
parameterization-
Pretty name: Parameterization
-
Description: Parameterization of this gradient
-
Parameter type: string
-
Required: True
-
Possible values:
"linear","rho-vp","rho-vp-vs","impedance","love-parameters","tti","from-model"
-
-
parameters-
Pretty name: Parameters
-
Description: Array of parameter names for which the gradient should be computed. Must be a subset of the mesh parameters.
-
Parameter type: array of strings
-
Required: False
-
-
output_filename-
Pretty name: Output file name
-
Description: File within which to store the gradient
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: File format
-
Description: The file format for the gradient output.
-
Parameter type: string
-
Required: False
-
Possible values:
"hdf5","hdf5-full","hdf5-minimal"
-
-
skip_gradient_assembly-
Pretty name: Skip gradient assembly
-
Description: When skip_gradient_assembly is true, gradients are only mapped/interpolated to the model grid and written per element, skipping global gradient assembly and omitting valence and mass-matrix scaling. This can be used to save time and memory when the full gradient w.r.t the discrete parameters across the global mesh is not needed or computed elsewhere.
-
Parameter type: boolean
-
Required: False
-
Domain group [domain]
This groups describes the physical domain in which to run simulations.
Required: True
Full example (Please note that some options might be mutally exclusive):
[domain]
dimension = 3
polynomial_order = 4
[domain.mesh]
filename = "mesh.h5"
format = "hdf5"
[domain.model]
filename = "model.h5"
format = "hdf5"
[domain.geometry]
filename = "geometry.h5"
format = "hdf5"
{
"domain": {
"dimension": 3,
"polynomial_order": 4,
"mesh": {
"filename": "mesh.h5",
"format": "hdf5"
},
"model": {
"filename": "model.h5",
"format": "hdf5"
},
"geometry": {
"filename": "geometry.h5",
"format": "hdf5"
}
}
}
Detailed description of all parameters:
-
dimension-
Pretty name: Dimension
-
Description: The spatial dimension of the problem.
-
Parameter type: integer
-
Required: True
-
Possible values:
2,3
-
-
polynomial_order-
Pretty name: Polynomial order
-
Description: Polynomial order of the spectral elements.
-
Parameter type: integer
-
Required: True
-
Possible values:
1,2,4,7
-
Mesh subgroup [domain.mesh]
Specify the domain topology.
Required: True
Full example (Please note that some options might be mutally exclusive):
[domain.mesh]
filename = "mesh.h5"
format = "hdf5"
{
"mesh": {
"filename": "mesh.h5",
"format": "hdf5"
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Mesh filename
-
Description: The filename of the mesh.
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: Mesh format
-
Description: The format of the mesh.
-
Parameter type: string
-
Required: True
-
Possible values:
"hdf5"
-
Model subgroup [domain.model]
Specify the physical parameters of the domain.
Required: True
Full example (Please note that some options might be mutally exclusive):
[domain.model]
filename = "model.h5"
format = "hdf5"
{
"model": {
"filename": "model.h5",
"format": "hdf5"
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Model filename
-
Description: The filename of the model.
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: Model format
-
Description: The format of the model.
-
Parameter type: string
-
Required: True
-
Possible values:
"hdf5"
-
Geometry subgroup [domain.geometry]
Specify the geometry of the domain.
Required: True
Full example (Please note that some options might be mutally exclusive):
[domain.geometry]
filename = "geometry.h5"
format = "hdf5"
{
"geometry": {
"filename": "geometry.h5",
"format": "hdf5"
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Filename
-
Description: The filename containing the geometry information.
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: Geometry format
-
Description: The format of the geometry.
-
Parameter type: string
-
Required: True
-
Possible values:
"hdf5"
-
Experimental Settings group [experimental]
Control for experimental features and settings. Might change at any point in time.
Required: False
Full example (Please note that some options might be mutally exclusive):
[experimental]
use_new_materials = false
{
"experimental": {
"use_new_materials": false
}
}
Detailed description of all parameters:
-
use_new_materials-
Pretty name: Enable new materials
-
Description: If true, use the new material setup for the simulations.
-
Parameter type: boolean
-
Required: False
-
Hardware group [hardware]
This groups describes the hardware and job specific parameters.
Required: False
Full example (Please note that some options might be mutally exclusive):
[hardware]
gpu = false
num_threads_per_rank = 4
{
"hardware": {
"gpu": false,
"num_threads_per_rank": 4
}
}
Detailed description of all parameters:
-
gpu-
Pretty name: Enable GPU support
-
Description: Run simulation on GPUs
-
Parameter type: boolean
-
Required: False
-
-
num_threads_per_rank-
Pretty name: Threads per rank
-
Description: Salvus uses a hybrid parallel execution model that combines MPI with threading. Threading is applied only during the simulation startup phase. This parameter sets the maximum number of threads allocated to each rank.
-
Parameter type: integer
-
Required: False
-
Output group [output]
Simulation without output only have limited use. Specify point, surface, and volumetric outputs here.
Required: False
Full example (Please note that some options might be mutally exclusive):
[output]
memory_per_rank_in_MB = 1000.0
[output.meta_data]
meta_json_filename = "meta.json"
progress_json_filename = "salvus_progress.json"
[output.point_data]
filename = "receivers.h5"
format = "asdf"
sampling_interval_in_time_steps = 10
[[output.point_data.receiver]]
location = "XXX"
network_code = "AB"
station_code = "0000"
location_code = ""
fields = ["displacement", "gradient-of-displacement"]
[output.point_data.receiver.rotation_on_output]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
components = ["Z", "N", "E"]
[output.surface_data]
filename = "boundary_output.h5"
format = "hdf5"
fields = ["displacement", "strain"]
sampling_interval_in_time_steps = 10
side_sets = ["x0", "y0", "z0"]
start_time_in_seconds = "0.0"
end_time_in_seconds = "1.0"
[output.volume_data]
filename = "volume_output.h5"
format = "hdf5"
fields = ["u", "grad_u"]
sampling_interval_in_time_steps = "10"
start_time_in_seconds = "0.0"
end_time_in_seconds = "1.0"
[output.frequency_domain]
filename = "frequency_domain.h5"
format = "hdf5"
fields = ["phi", "displacement"]
frequencies = [1.0, 2.0]
start_time_in_seconds = -0.12
end_time_in_seconds = 1234.56
[output.final_time_data]
filename = "final_time_values.h5"
format = "hdf5"
fields = ["phi", "displacement"]
[output.time_reduced_data]
filename = "reductions.h5"
format = "hdf5-minimal"
[[output.time_reduced_data.reductions]]
field = "stress"
reduction = "max"
criterion = "vonmises"
record = ["value", "time"]
{
"output": {
"memory_per_rank_in_MB": 1000.0,
"meta_data": {
"meta_json_filename": "meta.json",
"progress_json_filename": "salvus_progress.json"
},
"point_data": {
"filename": "receivers.h5",
"format": "asdf",
"sampling_interval_in_time_steps": 10,
"receiver": [
{
"location": "XXX",
"network_code": "AB",
"station_code": "0000",
"location_code": "",
"fields": [
"displacement",
"gradient-of-displacement"
],
"rotation_on_output": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
],
"components": [
"Z",
"N",
"E"
]
}
}
]
},
"surface_data": {
"filename": "boundary_output.h5",
"format": "hdf5",
"fields": [
"displacement",
"strain"
],
"sampling_interval_in_time_steps": 10,
"side_sets": [
"x0",
"y0",
"z0"
],
"start_time_in_seconds": "0.0",
"end_time_in_seconds": "1.0"
},
"volume_data": {
"filename": "volume_output.h5",
"format": "hdf5",
"fields": [
"u",
"grad_u"
],
"sampling_interval_in_time_steps": "10",
"start_time_in_seconds": "0.0",
"end_time_in_seconds": "1.0"
},
"frequency_domain": {
"filename": "frequency_domain.h5",
"format": "hdf5",
"fields": [
"phi",
"displacement"
],
"frequencies": [
1.0,
2.0
],
"start_time_in_seconds": -0.12,
"end_time_in_seconds": 1234.56
},
"final_time_data": {
"filename": "final_time_values.h5",
"format": "hdf5",
"fields": [
"phi",
"displacement"
]
},
"time_reduced_data": {
"filename": "reductions.h5",
"format": "hdf5-minimal",
"reductions": [
{
"field": "stress",
"reduction": "max",
"criterion": "vonmises",
"record": [
"value",
"time"
]
}
]
}
}
}
Detailed description of all parameters:
-
memory_per_rank_in_MB-
Pretty name: Memory for output buffers per rank
-
Description: Memory for output buffers per rank
-
Parameter type: number
-
Required: False
-
Informational metadata output subgroup [output.meta_data]
Specify additional non-physical output like runtime information about the simulations.
Required: False
Full example (Please note that some options might be mutally exclusive):
[output.meta_data]
meta_json_filename = "meta.json"
progress_json_filename = "salvus_progress.json"
{
"meta_data": {
"meta_json_filename": "meta.json",
"progress_json_filename": "salvus_progress.json"
}
}
Detailed description of all parameters:
-
meta_json_filename-
Pretty name: Meta JSON filename
-
Description: Store machine-readable information about successful runs in this file.
-
Parameter type: string
-
Required: True
-
-
progress_json_filename-
Pretty name: Progress JSON filename
-
Description: JSON file that output information about the current Salvus progress during the simulations.
-
Parameter type: string
-
Required: False
-
Point data output subgroup [output.point_data]
Store pointwise evaluations of various dynamic fields.
Required: False
Full example (Please note that some options might be mutally exclusive):
[output.point_data]
filename = "receivers.h5"
format = "asdf"
sampling_interval_in_time_steps = 10
[[output.point_data.receiver]]
location = "XXX"
network_code = "AB"
station_code = "0000"
location_code = ""
fields = ["displacement", "gradient-of-displacement"]
[output.point_data.receiver.rotation_on_output]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
components = ["Z", "N", "E"]
{
"point_data": {
"filename": "receivers.h5",
"format": "asdf",
"sampling_interval_in_time_steps": 10,
"receiver": [
{
"location": "XXX",
"network_code": "AB",
"station_code": "0000",
"location_code": "",
"fields": [
"displacement",
"gradient-of-displacement"
],
"rotation_on_output": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
],
"components": [
"Z",
"N",
"E"
]
}
}
]
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Filename
-
Description: Output filename.
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: File format
-
Description: The file format for the receiver data.
-
Parameter type: string
-
Required: True
-
Possible values:
"asdf","hdf5"
-
-
sampling_interval_in_time_steps-
Pretty name: Sampling interval in time steps
-
Description: Only store every X time steps.
-
Parameter type: integer
-
Required: True
-
Receiver subgroup [output.point_data.receiver]
Receiver specification for point measurements
Required: False
Full example (Please note that some options might be mutally exclusive):
[[output.point_data.receiver]]
location = "XXX"
network_code = "AB"
station_code = "0000"
location_code = ""
fields = ["displacement", "gradient-of-displacement"]
[output.point_data.receiver.rotation_on_output]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
components = ["Z", "N", "E"]
{
"receiver": {
"location": "XXX",
"network_code": "AB",
"station_code": "0000",
"location_code": "",
"fields": [
"displacement",
"gradient-of-displacement"
],
"rotation_on_output": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
],
"components": [
"Z",
"N",
"E"
]
}
}
}
Detailed description of all parameters:
-
location-
Pretty name: Receiver location
-
Description: The receiver location in Cartesian coordinates.
-
Parameter type: array of numbers
-
Required: False
-
-
network_code-
Pretty name: Network code
-
Description: Network code
-
Parameter type: string
-
Required: False
-
-
station_code-
Pretty name: Station code
-
Description: Station code
-
Parameter type: string
-
Required: False
-
-
location_code-
Pretty name: Location code
-
Description: Location code
-
Parameter type: string
-
Required: False
-
-
fields-
Pretty name: Fields
-
Description: Choose which parameters to store.
-
Parameter type: array of strings
-
Required: False
-
Possible values:
"displacement","velocity","acceleration","gradient-of-displacement","strain","stress-tensor","stress","phi","phi_t","phi_tt","gradient-of-phi"
-
subgroup [output.point_data.receiver.rotation_on_output]
Optionally rotate the output. The specified rotation matrix will be applied to the final output of the receiver. It should thus rotate from Cartesian X,Y,Z to the coordinate system of your choice.
Required: False
Full example (Please note that some options might be mutally exclusive):
[output.point_data.receiver.rotation_on_output]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
components = ["Z", "N", "E"]
{
"rotation_on_output": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
],
"components": [
"Z",
"N",
"E"
]
}
}
Detailed description of all parameters:
-
matrix-
Pretty name: Rotation Matrix
-
Description: A 2x2 or 3x3 rotation matrix.
-
Parameter type: array of arrays
-
Required: True
-
-
components-
Pretty name: Components
-
Description: The component names of the rotated output. Will be used in the output files.
-
Parameter type: array of strings
-
Required: True
-
Surface data output subgroup [output.surface_data]
Store various dynamic fields at surfaces.
Required: False
Full example (Please note that some options might be mutally exclusive):
[output.surface_data]
filename = "boundary_output.h5"
format = "hdf5"
fields = ["displacement", "strain"]
sampling_interval_in_time_steps = 10
side_sets = ["x0", "y0", "z0"]
start_time_in_seconds = "0.0"
end_time_in_seconds = "1.0"
{
"surface_data": {
"filename": "boundary_output.h5",
"format": "hdf5",
"fields": [
"displacement",
"strain"
],
"sampling_interval_in_time_steps": 10,
"side_sets": [
"x0",
"y0",
"z0"
],
"start_time_in_seconds": "0.0",
"end_time_in_seconds": "1.0"
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Filename
-
Description: Output filename.
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: File format
-
Description: The file format for the boundary data.
-
Parameter type: string
-
Required: True
-
Possible values:
"hdf5"
-
-
fields-
Pretty name: Fields
-
Description: Choose which parameters to store.
-
Parameter type: array of strings
-
Required: True
-
Possible values:
"displacement","velocity","acceleration","fem-ku-elastic","inverse-mass-matrix-elastic","gradient-of-displacement","stress-tensor","stress","strain","phi","phi_t","phi_tt","fem-ku-acoustic","inverse-mass-matrix-acoustic","gradient-of-phi","m1-times-gradient-of-phi","frequency-domain"
-
-
sampling_interval_in_time_steps-
Pretty name: Sampling interval in time steps
-
Description: Only store every X time steps.
-
Parameter type: integer
-
Required: True
-
-
side_sets-
Pretty name: Side sets
-
Description: Specify side sets at which to store the boundary wavefield.
-
Parameter type: array of strings
-
Required: True
-
-
start_time_in_seconds-
Pretty name: Start of time to record surface output
-
Description: A number in seconds that specifies when recording of the surface output should start.
-
Parameter type: number
-
Required: False
-
-
end_time_in_seconds-
Pretty name: Don’t record surface output after this time.
-
Description: A number in seconds that specifies when recording of the surface output should end.
-
Parameter type: number
-
Required: False
-
Volume data output subgroup [output.volume_data]
Output fully volumetric fields. Be aware that the output can be very large.
Required: False
Full example (Please note that some options might be mutally exclusive):
[output.volume_data]
filename = "volume_output.h5"
format = "hdf5"
fields = ["u", "grad_u"]
sampling_interval_in_time_steps = "10"
start_time_in_seconds = "0.0"
end_time_in_seconds = "1.0"
{
"volume_data": {
"filename": "volume_output.h5",
"format": "hdf5",
"fields": [
"u",
"grad_u"
],
"sampling_interval_in_time_steps": "10",
"start_time_in_seconds": "0.0",
"end_time_in_seconds": "1.0"
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Filename
-
Description: Output filename.
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: File format
-
Description: The file format for the volume data.
-
Parameter type: string
-
Required: True
-
Possible values:
"hdf5"
-
-
fields-
Pretty name: Fields
-
Description: Choose which parameters to store.
-
Parameter type: array of strings
-
Required: True
-
Possible values:
"displacement","velocity","acceleration","fem-ku-acoustic","inverse-mass-matrix-acoustic","fem-ku-elastic","inverse-mass-matrix-elastic","gradient-of-displacement","stress-tensor","stress","strain","phi","phi_t","phi_tt","gradient-of-phi","m1-times-gradient-of-phi","absorbing-gamma-elastic","absorbing-gamma-acoustic","frequency-domain","adjoint-checkpoint","ls-0","ls-1","ls-2","ls-3","ls-4","ls-0-acoustic","ls-1-acoustic","ls-2-acoustic","ls-3-acoustic","ls-4-acoustic"
-
-
sampling_interval_in_time_steps-
Pretty name: Sampling interval in time steps
-
Description: If an integer N is passed, output volumetric wavefield data every N times steps. If ‘auto-for-checkpointing’ is passed, Salvus will use the ‘memory_per_rank_in_MB’ field to determine what the optimal checkpointing snapshot interval will be.
-
Parameter type: [‘integer’, ‘string’, ‘object’]
-
Required: True
-
-
start_time_in_seconds-
Pretty name: Start of time to record volumetric output
-
Description: A number in seconds that specifies when recording of the volumetric output should start.
-
Parameter type: number
-
Required: False
-
-
end_time_in_seconds-
Pretty name: Don’t record volumetric output after this time.
-
Description: A number in seconds that specifies when recording of the volumetric output should end.
-
Parameter type: number
-
Required: False
-
Volumetric output in the frequency domain subgroup [output.frequency_domain]
Output real and imaginary part of Fourier-transformed volumetric fields.
Required: False
Full example (Please note that some options might be mutally exclusive):
[output.frequency_domain]
filename = "frequency_domain.h5"
format = "hdf5"
fields = ["phi", "displacement"]
frequencies = [1.0, 2.0]
start_time_in_seconds = -0.12
end_time_in_seconds = 1234.56
{
"frequency_domain": {
"filename": "frequency_domain.h5",
"format": "hdf5",
"fields": [
"phi",
"displacement"
],
"frequencies": [
1.0,
2.0
],
"start_time_in_seconds": -0.12,
"end_time_in_seconds": 1234.56
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Filename
-
Description: Output filename.
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: File format
-
Description: The file format.
-
Parameter type: string
-
Required: True
-
Possible values:
"hdf5","hdf5-minimal","hdf5-full"
-
-
fields-
Pretty name: Fields
-
Description: Choose which parameters to store.
-
Parameter type: array of strings
-
Required: True
-
Possible values:
"displacement","phi"
-
-
frequencies-
Pretty name: Frequencies
-
Description: Choose set of discrete frequencies to output the fields.
-
Parameter type: array of numbers
-
Required: True
-
-
start_time_in_seconds-
Pretty name: Start time of the on-the-fly Fourier transform
-
Description: The time stamp in seconds at which the DFT starts. Must be greater or equal than the simulation start time. It will snap to the closest time step greater or equal to the specified time. If not set the DFT will begin at the start time of the simulation.
-
Parameter type: number
-
Required: False
-
-
end_time_in_seconds-
Pretty name: End time of the on-the-fly Fourier transform
-
Description: The time stamp in seconds at which the DFT ends. Must be smaller or equal than the simulation end time. It will snap to the closest time step smaller or equal to the specified time. If not set the DFT will stop at the end time of the simulation.
-
Parameter type: number
-
Required: False
-
Output final time values subgroup [output.final_time_data]
Volumetric output at the end time of the simulation.
Required: False
Full example (Please note that some options might be mutally exclusive):
[output.final_time_data]
filename = "final_time_values.h5"
format = "hdf5"
fields = ["phi", "displacement"]
{
"final_time_data": {
"filename": "final_time_values.h5",
"format": "hdf5",
"fields": [
"phi",
"displacement"
]
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Filename
-
Description: Output filename.
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: File format
-
Description: The file format.
-
Parameter type: string
-
Required: True
-
Possible values:
"hdf5","hdf5-minimal","hdf5-full"
-
-
fields-
Pretty name: Fields
-
Description: Choose which parameters to store.
-
Parameter type: array of strings
-
Required: True
-
Possible values:
"displacement","velocity","phi","phi_t"
-
Time-reduced data subgroup [output.time_reduced_data]
Reductions over the full simulated time range, computed in-solver per degree of freedom and written once at the end of the run.
Required: False
Full example (Please note that some options might be mutally exclusive):
[output.time_reduced_data]
filename = "reductions.h5"
format = "hdf5-minimal"
[[output.time_reduced_data.reductions]]
field = "stress"
reduction = "max"
criterion = "vonmises"
record = ["value", "time"]
{
"time_reduced_data": {
"filename": "reductions.h5",
"format": "hdf5-minimal",
"reductions": [
{
"field": "stress",
"reduction": "max",
"criterion": "vonmises",
"record": [
"value",
"time"
]
}
]
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Filename
-
Description: Output filename.
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: File format
-
Description: The file format. Results are written as genuine multi-component datasets (no per-component suffixed scalars). Unless ‘hdf5-minimal’, an XDMF sidecar is written alongside the HDF5 file, referencing the mesh’s own per-DOF (wavefield-order) geometry, not the domain’s shape/model-order ‘/MODEL/coordinates’.
-
Parameter type: string
-
Required: True
-
Possible values:
"hdf5","hdf5-minimal","hdf5-full"
-
Reductions subgroup [output.time_reduced_data.reductions]
*Reductions over the full simulated time range, computed in-solver per degree of freedom and written once at the end of the run.
Each entry defines one reduction of one field, e.g. {'field': 'stress', 'reduction': 'max', 'criterion': 'vonmises', 'record': ['value', 'time', 'state']}.
field: any registered dynamic output field (e.g. displacement, velocity, phi, strain, stress, gradient-of-displacement).
reduction: max or min. Named ‘reduction’ to allow future non-extremal reductions such as sums or integrals; criterion and the time/state records are specific to max/min, which select an extremal instant.
criterion: how the extremal instant is selected. Always required, there is no default. The complete valid set per field kind: scalar fields: signed, abs. Vector fields: signed, abs, l1, l2, linf. Stress: signed, abs, linf, frobenius, vonmises, pressure. Strain: signed, abs, linf, frobenius, volumetric. Other symmetric/full tensors: signed, abs, linf, frobenius. signed/abs on vectors/tensors reduce every stored component independently (‘componentwise’): one extremum and one time per component, at possibly different instants. All other criteria are scalar functionals of the whole field and define a single extremal instant.
record: list of what to store at the selected instant(s). Default ['value']. value: the reduced criterion itself. time: the simulation time of the extremum. state: the full field at the extremal instant (functional criteria on a rank>=1 field only, since componentwise reductions and scalar fields have no single instant).
Notes: the reduction window covers all computed time steps; the initial condition itself is not included. For at-rest initial conditions, reduction='min' of a non-negative criterion (abs, l1, l2, linf, frobenius, vonmises) therefore returns the smallest value reached during the simulation — typically the first computed step at DOFs the wavefield has not yet reached, i.e. still near zero, but not exactly the t=0 state. min is primarily useful for signed criteria (signed, pressure, volumetric), e.g. {'field': 'strain', 'reduction': 'min', 'criterion': 'volumetric'} records peak volumetric compression. Ties resolve to the first occurrence. frobenius is defined on the true tensor, not its storage (the full contraction sqrt(A:A)); it corrects for strain’s engineering-shear storage (gamma = 2epsilon) internally, so its value is the same true-tensor quantity for stress, strain, and full (asymmetric) tensor fields alike. l1/l2 are deliberately not offered on any tensor-kind field because their value would depend on the storage convention (Voigt vs Mandel, or which entries a full/asymmetric tensor stores); use frobenius instead. linf does NOT correct for storage: it is the max |STORED component|, verbatim. On stress (and full/asymmetric tensor fields) the stored components are the true tensor components, so this is unambiguous. On strain, the stored off-diagonal entries are engineering shear (gamma = 2epsilon) — linf compares them as stored, so a shear component can dominate a linf reduction even where the true (physical) tensor’s largest entry is a normal strain; use frobenius for a storage-convention-free magnitude. pressure is -tr(sigma)/3 with compression positive; volumetric is tr(epsilon), the dilatation; both reconstruct the out-of-plane component under the plane-strain assumption in 2D — always dividing by the true 3, never by 2, since the out-of-plane stress is physically nonzero even though the out-of-plane strain is not. vonmises follows the same 2D plane-strain convention. pressure is the isotropic mean-stress invariant of the (reconstructed) full stress tensor, not the traction; at an acoustic-elastic interface only the normal traction n . sigma . n is guaranteed continuous with the acoustic pressure -phi_tt, so pressure in the solid need not match it unless the local stress state happens to be isotropic there — to compare against acoustic pressure at an interface, reduce stress componentwise (signed) and project onto the known interface normal yourself. Componentwise reductions always cover all components; selecting individual components is not supported.*
Required: True
Full example (Please note that some options might be mutally exclusive):
[[output.time_reduced_data.reductions]]
field = "stress"
reduction = "max"
criterion = "vonmises"
record = ["value", "time"]
{
"reductions": {
"field": "stress",
"reduction": "max",
"criterion": "vonmises",
"record": [
"value",
"time"
]
}
}
Detailed description of all parameters:
-
field-
Pretty name: Field
-
Description: Any registered dynamic output field (primary or derived) of any physics present, the same set as volumetric output.
-
Parameter type: string
-
Required: False
-
-
reduction-
Pretty name: Reduction
-
Description: Named ‘reduction’ (not ‘extremum’) to leave room for future non-extremal reductions; ‘criterion’ and the ‘time’/‘state’ records are specific to max/min.
-
Parameter type: string
-
Required: False
-
Possible values:
"min","max"
-
-
criterion-
Pretty name: Criterion
-
Description: How the extremal instant is selected. Required for every field, scalar and tensor alike; the valid set depends on the field’s kind and is enforced at setup.
-
Parameter type: string
-
Required: False
-
-
record-
Pretty name: Record
-
Description: What to store at the selected instant(s). Defaults to [‘value’] if omitted.
-
Parameter type: array of strings
-
Required: False
-
Possible values:
"value","time","state"
-
Physics group [physics]
Which equation do you want to solve?
Required: True
Full example (Please note that some options might be mutally exclusive):
[physics]
[physics.wave_equation]
time_stepping_scheme = "newmark"
start_time_in_seconds = -0.12
end_time_in_seconds = 1234.56
time_step_in_seconds = 0.01
reference_time_in_seconds = 1000.0
courant_number = 0.6
attenuation = false
point_source_chunk_size = 1000
point_source_buffer_memory_in_MB_per_rank = 1000.0
[physics.wave_equation.point_source_block]
filename = "sources.h5"
groups = ["sources_1", "sources_2"]
[[physics.wave_equation.point_source]]
location = [0.0, 1.0]
spatial_type = "scalar"
spatial_weights = [1.0]
[physics.wave_equation.point_source.rotation_on_input]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
[physics.wave_equation.point_source.source_time_function]
wavelet = "ricker"
center_frequency = 1.0
time_shift_in_seconds = 1.0
[[physics.wave_equation.boundaries]]
type = "homogeneous-dirichlet"
side_sets = ["y0", "x1"]
components = "XXX"
[[physics.wave_equation.boundaries]]
type = "ocean-loading"
side_sets = ["y0", "x1"]
[[physics.wave_equation.boundaries]]
type = "absorbing"
side_sets = ["x0", "x1", "y1"]
width_in_meters = 1.06
taper_amplitude = 1.07
side_sets_are_axis_aligned = "true"
[physics.diffusion_equation]
time_stepping_scheme = "euler"
start_time_in_seconds = -0.12
end_time_in_seconds = 1234.56
time_step_in_seconds = 0.01
courant_number = 0.6
[physics.diffusion_equation.initial_values]
filename = "model.h5"
format = "hdf5"
field = "VP"
[physics.diffusion_equation.final_values]
filename = "final.h5"
[physics.poisson_equation]
[physics.poisson_equation.right_hand_side]
filename = "model.h5"
format = "hdf5"
field = "values"
fields = ["field1", "field2"]
[physics.poisson_equation.initial_values]
filename = "model.h5"
format = "hdf5"
field = "VP"
fields = ["field1", "field2"]
[[physics.poisson_equation.boundaries]]
type = "homogeneous-dirichlet"
side_sets = ["y0", "x1"]
components = "XXX"
[[physics.poisson_equation.boundaries]]
type = "neumann"
side_sets = ["y0", "x1"]
[physics.poisson_equation.solution]
filename = "solution.h5"
fields = ["solution", "residuals"]
{
"physics": {
"wave_equation": {
"time_stepping_scheme": "newmark",
"start_time_in_seconds": -0.12,
"end_time_in_seconds": 1234.56,
"time_step_in_seconds": 0.01,
"reference_time_in_seconds": 1000.0,
"courant_number": 0.6,
"attenuation": false,
"point_source_chunk_size": 1000,
"point_source_buffer_memory_in_MB_per_rank": 1000.0,
"point_source_block": {
"filename": "sources.h5",
"groups": [
"sources_1",
"sources_2"
]
},
"point_source": [
{
"location": [
0.0,
1.0
],
"spatial_type": "scalar",
"spatial_weights": [
1.0
],
"rotation_on_input": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
]
},
"source_time_function": {
"wavelet": "ricker",
"center_frequency": 1.0,
"time_shift_in_seconds": 1.0
}
}
],
"boundaries": [
[
{
"type": "homogeneous-dirichlet",
"side_sets": [
"y0",
"x1"
],
"components": "XXX"
},
{
"type": "ocean-loading",
"side_sets": [
"y0",
"x1"
]
},
{
"type": "absorbing",
"side_sets": [
"x0",
"x1",
"y1"
],
"width_in_meters": 1.06,
"taper_amplitude": 1.07,
"side_sets_are_axis_aligned": "true"
}
]
]
},
"diffusion_equation": {
"time_stepping_scheme": "euler",
"start_time_in_seconds": -0.12,
"end_time_in_seconds": 1234.56,
"time_step_in_seconds": 0.01,
"courant_number": 0.6,
"initial_values": {
"filename": "model.h5",
"format": "hdf5",
"field": "VP"
},
"final_values": {
"filename": "final.h5"
}
},
"poisson_equation": {
"right_hand_side": {
"filename": "model.h5",
"format": "hdf5",
"field": "values",
"fields": [
"field1",
"field2"
]
},
"initial_values": {
"filename": "model.h5",
"format": "hdf5",
"field": "VP",
"fields": [
"field1",
"field2"
]
},
"boundaries": [
[
{
"type": "homogeneous-dirichlet",
"side_sets": [
"y0",
"x1"
],
"components": "XXX"
},
{
"type": "neumann",
"side_sets": [
"y0",
"x1"
]
}
]
],
"solution": {
"filename": "solution.h5",
"fields": [
"solution",
"residuals"
]
}
}
}
}
Detailed description of all parameters:
Wave equation subgroup [physics.wave_equation]
Compute solutions for various wave equations: acoustic, elastic, viscoelastic, coupled, … The specific equation will be chosen based on the passed model and mesh.
Required: False
Full example (Please note that some options might be mutally exclusive):
[physics.wave_equation]
time_stepping_scheme = "newmark"
start_time_in_seconds = -0.12
end_time_in_seconds = 1234.56
time_step_in_seconds = 0.01
reference_time_in_seconds = 1000.0
courant_number = 0.6
attenuation = false
point_source_chunk_size = 1000
point_source_buffer_memory_in_MB_per_rank = 1000.0
[physics.wave_equation.point_source_block]
filename = "sources.h5"
groups = ["sources_1", "sources_2"]
[[physics.wave_equation.point_source]]
location = [0.0, 1.0]
spatial_type = "scalar"
spatial_weights = [1.0]
[physics.wave_equation.point_source.rotation_on_input]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
[physics.wave_equation.point_source.source_time_function]
wavelet = "ricker"
center_frequency = 1.0
time_shift_in_seconds = 1.0
[[physics.wave_equation.boundaries]]
type = "homogeneous-dirichlet"
side_sets = ["y0", "x1"]
components = "XXX"
[[physics.wave_equation.boundaries]]
type = "ocean-loading"
side_sets = ["y0", "x1"]
[[physics.wave_equation.boundaries]]
type = "absorbing"
side_sets = ["x0", "x1", "y1"]
width_in_meters = 1.06
taper_amplitude = 1.07
side_sets_are_axis_aligned = "true"
{
"wave_equation": {
"time_stepping_scheme": "newmark",
"start_time_in_seconds": -0.12,
"end_time_in_seconds": 1234.56,
"time_step_in_seconds": 0.01,
"reference_time_in_seconds": 1000.0,
"courant_number": 0.6,
"attenuation": false,
"point_source_chunk_size": 1000,
"point_source_buffer_memory_in_MB_per_rank": 1000.0,
"point_source_block": {
"filename": "sources.h5",
"groups": [
"sources_1",
"sources_2"
]
},
"point_source": [
{
"location": [
0.0,
1.0
],
"spatial_type": "scalar",
"spatial_weights": [
1.0
],
"rotation_on_input": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
]
},
"source_time_function": {
"wavelet": "ricker",
"center_frequency": 1.0,
"time_shift_in_seconds": 1.0
}
}
],
"boundaries": [
[
{
"type": "homogeneous-dirichlet",
"side_sets": [
"y0",
"x1"
],
"components": "XXX"
},
{
"type": "ocean-loading",
"side_sets": [
"y0",
"x1"
]
},
{
"type": "absorbing",
"side_sets": [
"x0",
"x1",
"y1"
],
"width_in_meters": 1.06,
"taper_amplitude": 1.07,
"side_sets_are_axis_aligned": "true"
}
]
]
}
}
Detailed description of all parameters:
-
time_stepping_scheme-
Pretty name: Time stepping scheme
-
Description: The explicit time-stepping scheme.
-
Parameter type: string
-
Required: True
-
Possible values:
"newmark"
-
-
start_time_in_seconds-
Pretty name: Simulation start time
-
Description: The simulation start time in seconds. Can be negative. Will be determined automatically if not given. Make sure to set this to a time at which all source wavelets are still zero.
-
Parameter type: number
-
Required: False
-
-
end_time_in_seconds-
Pretty name: Simulation end time
-
Description: The simulation end time in seconds.
-
Parameter type: number
-
Required: False
-
-
time_step_in_seconds-
Pretty name: Simulation time step
-
Description: The time step. Will be determined automatically if not given. A too small time step might cause unstable or temporally dispersive simulations.
-
Parameter type: number
-
Required: False
-
-
reference_time_in_seconds-
Pretty name: Simulation reference time
-
Description: The absolute value to which ‘time 0’ refers to expressed in Unix Time.
-
Parameter type: number
-
Required: False
-
-
courant_number-
Pretty name: Courant number
-
Description: The Courant number used to determine the auto time step and to check the CFL condition.
-
Parameter type: number
-
Required: True
-
-
attenuation-
Pretty name: Attenuation flag
-
Description: Enable / disable attenuation in the simulation. If turned on, the model needs to contain Q and parameters to specify the linear solids.
-
Parameter type: boolean
-
Required: True
-
-
point_source_chunk_size-
Pretty name: Point source chunk size
-
Description: Load the point sources from disk in chunks of max this size. A size of 0 means that all the data will be read at once.
-
Parameter type: integer
-
Required: False
-
-
point_source_buffer_memory_in_MB_per_rank-
Pretty name: Point source buffer memory in MB per rank
-
Description: Load the point sources from disk in chunks of max this number of megabytes.
-
Parameter type: number
-
Required: False
-
Block of point sources. subgroup [physics.wave_equation.point_source_block]
Reads all source characteristics from a group in an HDF5 file.
Required: False
Full example (Please note that some options might be mutally exclusive):
[physics.wave_equation.point_source_block]
filename = "sources.h5"
groups = ["sources_1", "sources_2"]
{
"point_source_block": {
"filename": "sources.h5",
"groups": [
"sources_1",
"sources_2"
]
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Filename
-
Description: Filename containing sources
-
Parameter type: string
-
Required: True
-
-
groups-
Pretty name: Groups
-
Description: Array of groups in the HDF5 file containing source information
-
Parameter type: array of strings
-
Required: True
-
Point source subgroup [physics.wave_equation.point_source]
Point sources for the wave equation.
Required: False
Full example (Please note that some options might be mutally exclusive):
[[physics.wave_equation.point_source]]
location = [0.0, 1.0]
spatial_type = "scalar"
spatial_weights = [1.0]
[physics.wave_equation.point_source.rotation_on_input]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
[physics.wave_equation.point_source.source_time_function]
wavelet = "ricker"
center_frequency = 1.0
time_shift_in_seconds = 1.0
{
"point_source": {
"location": [
0.0,
1.0
],
"spatial_type": "scalar",
"spatial_weights": [
1.0
],
"rotation_on_input": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
]
},
"source_time_function": {
"wavelet": "ricker",
"center_frequency": 1.0,
"time_shift_in_seconds": 1.0
}
}
}
Detailed description of all parameters:
-
location-
Pretty name: Source location
-
Description: The source location in Cartesian coordinates.
-
Parameter type: array of numbers
-
Required: False
-
-
spatial_type-
Pretty name: Spatial type of the source
-
Description: The spatial type of the point source.
-
Parameter type: string
-
Required: False
-
Possible values:
"scalar","vector","moment_tensor","scalar_gradient","vector_gradient"
-
-
spatial_weights-
Pretty name: Spatial weights of the source
-
Description: The spatial weights and scale of the point source.
-
Parameter type: array of numbers
-
Required: False
-
subgroup [physics.wave_equation.point_source.rotation_on_input]
Optionally rotate the output. The specified rotation matrix will be applied to the final output of the receiver. It should thus rotate from Cartesian X,Y,Z to the coordinate system of your choice.
Required: False
Full example (Please note that some options might be mutally exclusive):
[physics.wave_equation.point_source.rotation_on_input]
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
{
"rotation_on_input": {
"matrix": [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
]
}
}
Detailed description of all parameters:
-
matrix-
Pretty name: Rotation Matrix
-
Description: A 2x2 or 3x3 rotation matrix.
-
Parameter type: array of arrays
-
Required: True
-
Option 1: Source time function subgroup [physics.wave_equation.point_source.source_time_function]
The temporal evolution of the source.
Required: False
Full example (Please note that some options might be mutally exclusive):
[physics.wave_equation.point_source.source_time_function]
wavelet = "ricker"
center_frequency = 1.0
time_shift_in_seconds = 1.0
{
"source_time_function": {
"wavelet": "ricker",
"center_frequency": 1.0,
"time_shift_in_seconds": 1.0
}
}
Detailed description of all parameters:
-
wavelet-
Pretty name: Source time function
-
Description: The type of the source time function
-
Parameter type: string
-
Required: True
-
Possible values:
"ricker"
-
-
center_frequency-
Pretty name: Center Frequency
-
Description: The center frequency of the ricker wavelet.
-
Parameter type: number
-
Required: True
-
-
time_shift_in_seconds-
Pretty name: Time shift
-
Description: Optional time shift to center the ricker wavelet around a time different than zero.
-
Parameter type: number
-
Required: False
-
Option 2: Source time function subgroup [physics.wave_equation.point_source.source_time_function]
The temporal evolution of the source.
Required: False
Full example (Please note that some options might be mutally exclusive):
[physics.wave_equation.point_source.source_time_function]
wavelet = "ricker-1st-derivative"
center_frequency = 1.0
time_shift_in_seconds = 1.0
{
"source_time_function": {
"wavelet": "ricker-1st-derivative",
"center_frequency": 1.0,
"time_shift_in_seconds": 1.0
}
}
Detailed description of all parameters:
-
wavelet-
Pretty name: Source time function
-
Description: The type of the source time function
-
Parameter type: string
-
Required: True
-
Possible values:
"ricker-1st-derivative"
-
-
center_frequency-
Pretty name: Center Frequency
-
Description: The center frequency of the ricker wavelet.
-
Parameter type: number
-
Required: True
-
-
time_shift_in_seconds-
Pretty name: Time shift
-
Description: Optional time shift to center the ricker wavelet around a time different than zero.
-
Parameter type: number
-
Required: False
-
Option 3: Source time function subgroup [physics.wave_equation.point_source.source_time_function]
The temporal evolution of the source.
Required: False
Full example (Please note that some options might be mutally exclusive):
[physics.wave_equation.point_source.source_time_function]
wavelet = "ricker-2nd-derivative"
center_frequency = 1.0
time_shift_in_seconds = 1.0
{
"source_time_function": {
"wavelet": "ricker-2nd-derivative",
"center_frequency": 1.0,
"time_shift_in_seconds": 1.0
}
}
Detailed description of all parameters:
-
wavelet-
Pretty name: Source time function
-
Description: The type of the source time function
-
Parameter type: string
-
Required: True
-
Possible values:
"ricker-2nd-derivative"
-
-
center_frequency-
Pretty name: Center Frequency
-
Description: The center frequency of the ricker wavelet.
-
Parameter type: number
-
Required: True
-
-
time_shift_in_seconds-
Pretty name: Time shift
-
Description: Optional time shift to center the ricker wavelet around a time different than zero.
-
Parameter type: number
-
Required: False
-
Option 4: Source time function subgroup [physics.wave_equation.point_source.source_time_function]
The temporal evolution of the source.
Required: False
Full example (Please note that some options might be mutally exclusive):
[physics.wave_equation.point_source.source_time_function]
wavelet = "gaussian-rate"
half_duration_in_seconds = 1.0
decay_rate = 3.5
time_shift_in_seconds = 1.0
{
"source_time_function": {
"wavelet": "gaussian-rate",
"half_duration_in_seconds": 1.0,
"decay_rate": 3.5,
"time_shift_in_seconds": 1.0
}
}
Detailed description of all parameters:
-
wavelet-
Pretty name: Source time function
-
Description: The type of the source time function
-
Parameter type: string
-
Required: True
-
Possible values:
"gaussian-rate"
-
-
half_duration_in_seconds-
Pretty name: Half duration
-
Description: The half duration
-
Parameter type: number
-
Required: True
-
-
decay_rate-
Pretty name: Decay rate
-
Description: The source decay rate. Default: 3.5
-
Parameter type: number
-
Required: False
-
-
time_shift_in_seconds-
Pretty name: Time shift
-
Description: Optional time shift to center the ricker wavelet around a time different than zero.
-
Parameter type: number
-
Required: False
-
Option 5: Source time function subgroup [physics.wave_equation.point_source.source_time_function]
The temporal evolution of the source.
Required: False
Full example (Please note that some options might be mutally exclusive):
[physics.wave_equation.point_source.source_time_function]
wavelet = "heaviside"
{
"source_time_function": {
"wavelet": "heaviside"
}
}
Detailed description of all parameters:
-
wavelet-
Pretty name: Source time function
-
Description: The type of the source time function
-
Parameter type: string
-
Required: True
-
Possible values:
"heaviside","delta"
-
Option 6: Source time function subgroup [physics.wave_equation.point_source.source_time_function]
The temporal evolution of the source.
Required: False
Full example (Please note that some options might be mutally exclusive):
[physics.wave_equation.point_source.source_time_function]
wavelet = "custom"
filename = "source.h5"
dataset_name = "/stf"
{
"source_time_function": {
"wavelet": "custom",
"filename": "source.h5",
"dataset_name": "/stf"
}
}
Detailed description of all parameters:
-
wavelet-
Pretty name: Source time function
-
Description: The type of the source time function
-
Parameter type: string
-
Required: True
-
Possible values:
"custom"
-
-
filename-
Pretty name: Source filename
-
Description: The hdf5 filename of the source.
-
Parameter type: string
-
Required: True
-
-
dataset_name-
Pretty name: Dataset name
-
Description: The hdf5 dataset name containing the source time function.
-
Parameter type: string
-
Required: True
-
Boundary conditions subgroup [physics.wave_equation.boundaries]
Boundary conditions for wave equations.
Required: False
Full example (Please note that some options might be mutally exclusive):
[[physics.wave_equation.boundaries]]
type = "homogeneous-dirichlet"
side_sets = ["y0", "x1"]
components = "XXX"
[[physics.wave_equation.boundaries]]
type = "ocean-loading"
side_sets = ["y0", "x1"]
[[physics.wave_equation.boundaries]]
type = "absorbing"
side_sets = ["x0", "x1", "y1"]
width_in_meters = 1.06
taper_amplitude = 1.07
side_sets_are_axis_aligned = "true"
[
{
"type": "homogeneous-dirichlet",
"side_sets": [
"y0",
"x1"
],
"components": "XXX"
},
{
"type": "ocean-loading",
"side_sets": [
"y0",
"x1"
]
},
{
"type": "absorbing",
"side_sets": [
"x0",
"x1",
"y1"
],
"width_in_meters": 1.06,
"taper_amplitude": 1.07,
"side_sets_are_axis_aligned": "true"
}
]
Detailed description of all parameters:
Child array: [physics.wave_equation.boundaries]
Full example (Please note that some options might be mutally exclusive):
[[physics.wave_equation.boundaries]]
type = "homogeneous-dirichlet"
side_sets = ["y0", "x1"]
components = "XXX"
{
"type": "homogeneous-dirichlet",
"side_sets": [
"y0",
"x1"
],
"components": "XXX"
}
Detailed description of all parameters:
-
type-
Pretty name: Homogeneous Dirichlet
-
Description: Homogeneous Dirichlet boundary conditions
-
Parameter type: string
-
Required: True
-
Possible values:
"homogeneous-dirichlet"
-
-
side_sets-
Pretty name: Side sets
-
Description: Side sets at which to apply the boundary conditions.
-
Parameter type: array of strings
-
Required: True
-
-
components-
Pretty name: XXX
-
Description: XXX
-
Parameter type: array of booleans
-
Required: False
-
Child array: [physics.wave_equation.boundaries]
Full example (Please note that some options might be mutally exclusive):
[[physics.wave_equation.boundaries]]
type = "ocean-loading"
side_sets = ["y0", "x1"]
{
"type": "ocean-loading",
"side_sets": [
"y0",
"x1"
]
}
Detailed description of all parameters:
-
type-
Pretty name: Ocean loading
-
Description: Apply an ocean load at the boundary
-
Parameter type: string
-
Required: True
-
Possible values:
"ocean-loading"
-
-
side_sets-
Pretty name: Side sets
-
Description: Side sets at which to apply the boundary conditions.
-
Parameter type: array of strings
-
Required: True
-
Child array: [physics.wave_equation.boundaries]
Full example (Please note that some options might be mutally exclusive):
[[physics.wave_equation.boundaries]]
type = "absorbing"
side_sets = ["x0", "x1", "y1"]
width_in_meters = 1.06
taper_amplitude = 1.07
side_sets_are_axis_aligned = "true"
{
"type": "absorbing",
"side_sets": [
"x0",
"x1",
"y1"
],
"width_in_meters": 1.06,
"taper_amplitude": 1.07,
"side_sets_are_axis_aligned": "true"
}
Detailed description of all parameters:
-
type-
Pretty name: Absorbing boundaries
-
Description: Apply first order Clayton-Enquist boundary conditions, optionally also with damping sponge layers.
-
Parameter type: string
-
Required: True
-
Possible values:
"absorbing"
-
-
side_sets-
Pretty name: Side sets
-
Description: Side sets at which to apply the boundary conditions.
-
Parameter type: array of strings
-
Required: True
-
-
width_in_meters-
Pretty name: Width of the absorbing layer
-
Description: Width of the absorbing layers in meters. The longer, the better. 3.5 - 5 wavelengths are typically sufficient.
-
Parameter type: number
-
Required: True
-
-
taper_amplitude-
Pretty name: Taper amplitude
-
Description: Taper amplitude. As a rule of thumb, a good choice is setting the taper amplitude to the central frequency in Hertz.
-
Parameter type: number
-
Required: True
-
-
side_sets_are_axis_aligned-
Pretty name: Side sets are axis aligned
-
Description: Allow the solver to make the assumption that side sets are axis aligned. This can lead to much faster absorbing layer attachment.
-
Parameter type: boolean
-
Required: False
-
Diffusion equation subgroup [physics.diffusion_equation]
Solve the diffusion equation. Mainly useful for the (anisotropic) smoothing of models. This feature requires a license for SalvusOpt.
Required: False
Full example (Please note that some options might be mutally exclusive):
[physics.diffusion_equation]
time_stepping_scheme = "euler"
start_time_in_seconds = -0.12
end_time_in_seconds = 1234.56
time_step_in_seconds = 0.01
courant_number = 0.6
[physics.diffusion_equation.initial_values]
filename = "model.h5"
format = "hdf5"
field = "VP"
[physics.diffusion_equation.final_values]
filename = "final.h5"
{
"diffusion_equation": {
"time_stepping_scheme": "euler",
"start_time_in_seconds": -0.12,
"end_time_in_seconds": 1234.56,
"time_step_in_seconds": 0.01,
"courant_number": 0.6,
"initial_values": {
"filename": "model.h5",
"format": "hdf5",
"field": "VP"
},
"final_values": {
"filename": "final.h5"
}
}
}
Detailed description of all parameters:
-
time_stepping_scheme-
Pretty name: Time stepping scheme
-
Description: The time-stepping scheme.
-
Parameter type: string
-
Required: True
-
Possible values:
"euler"
-
-
start_time_in_seconds-
Pretty name: Simulation start time
-
Description: The simulation start time in seconds. Can be negative. Will be determined automatically if not given.
-
Parameter type: number
-
Required: True
-
-
end_time_in_seconds-
Pretty name: Simulation end time
-
Description: The simulation end time in seconds.
-
Parameter type: number
-
Required: True
-
-
time_step_in_seconds-
Pretty name: Simulation time step
-
Description: The time-step.
-
Parameter type: number
-
Required: False
-
-
courant_number-
Pretty name: Courant number
-
Description: The Courant number used to determine the auto time step and to check the CFL condition.
-
Parameter type: number
-
Required: True
-
Initial values subgroup [physics.diffusion_equation.initial_values]
Initial values of the diffusion equation
Required: True
Full example (Please note that some options might be mutally exclusive):
[physics.diffusion_equation.initial_values]
filename = "model.h5"
format = "hdf5"
field = "VP"
{
"initial_values": {
"filename": "model.h5",
"format": "hdf5",
"field": "VP"
}
}
Detailed description of all parameters:
-
filename-
Pretty name: filename
-
Description: The filename of the initial values.
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: File format
-
Description: The file format for the volume data.
-
Parameter type: string
-
Required: False
-
Possible values:
"hdf5"
-
-
field-
Pretty name: field
-
Description: The name of the field to smooth.
-
Parameter type: string
-
Required: True
-
Final values subgroup [physics.diffusion_equation.final_values]
Output fields at the end of the simulation
Required: True
Full example (Please note that some options might be mutally exclusive):
[physics.diffusion_equation.final_values]
filename = "final.h5"
{
"final_values": {
"filename": "final.h5"
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Output file name
-
Description: File within which to store the final values
-
Parameter type: string
-
Required: True
-
Poisson’s equation subgroup [physics.poisson_equation]
Solve the Poisson equation. Mainly useful for computing the gravitational potential
Required: False
Full example (Please note that some options might be mutally exclusive):
[physics.poisson_equation]
[physics.poisson_equation.right_hand_side]
filename = "model.h5"
format = "hdf5"
field = "values"
fields = ["field1", "field2"]
[physics.poisson_equation.initial_values]
filename = "model.h5"
format = "hdf5"
field = "VP"
fields = ["field1", "field2"]
[[physics.poisson_equation.boundaries]]
type = "homogeneous-dirichlet"
side_sets = ["y0", "x1"]
components = "XXX"
[[physics.poisson_equation.boundaries]]
type = "neumann"
side_sets = ["y0", "x1"]
[physics.poisson_equation.solution]
filename = "solution.h5"
fields = ["solution", "residuals"]
{
"poisson_equation": {
"right_hand_side": {
"filename": "model.h5",
"format": "hdf5",
"field": "values",
"fields": [
"field1",
"field2"
]
},
"initial_values": {
"filename": "model.h5",
"format": "hdf5",
"field": "VP",
"fields": [
"field1",
"field2"
]
},
"boundaries": [
[
{
"type": "homogeneous-dirichlet",
"side_sets": [
"y0",
"x1"
],
"components": "XXX"
},
{
"type": "neumann",
"side_sets": [
"y0",
"x1"
]
}
]
],
"solution": {
"filename": "solution.h5",
"fields": [
"solution",
"residuals"
]
}
}
}
Detailed description of all parameters:
Right-hand side subgroup [physics.poisson_equation.right_hand_side]
Right-hand side values.
Required: True
Full example (Please note that some options might be mutally exclusive):
[physics.poisson_equation.right_hand_side]
filename = "model.h5"
format = "hdf5"
field = "values"
fields = ["field1", "field2"]
{
"right_hand_side": {
"filename": "model.h5",
"format": "hdf5",
"field": "values",
"fields": [
"field1",
"field2"
]
}
}
Detailed description of all parameters:
-
filename-
Pretty name: filename
-
Description: The filename of the right-hand side.
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: File format
-
Description: The file format for the volume data.
-
Parameter type: string
-
Required: False
-
Possible values:
"hdf5"
-
-
field-
Pretty name: field
-
Description: The field in which the right-hand-side values are stored
-
Parameter type: string
-
Required: False
-
-
fields-
Pretty name: fields
-
Description: The field names in which the right-hand-side values are stored
-
Parameter type: array of strings
-
Required: False
-
Initial values subgroup [physics.poisson_equation.initial_values]
Initial guess to solve the linear system
Required: False
Full example (Please note that some options might be mutally exclusive):
[physics.poisson_equation.initial_values]
filename = "model.h5"
format = "hdf5"
field = "VP"
fields = ["field1", "field2"]
{
"initial_values": {
"filename": "model.h5",
"format": "hdf5",
"field": "VP",
"fields": [
"field1",
"field2"
]
}
}
Detailed description of all parameters:
-
filename-
Pretty name: filename
-
Description: The filename of the initial values.
-
Parameter type: string
-
Required: True
-
-
format-
Pretty name: File format
-
Description: The file format for the volume data.
-
Parameter type: string
-
Required: False
-
Possible values:
"hdf5"
-
-
field-
Pretty name: field
-
Description: The name of the field to smooth.
-
Parameter type: string
-
Required: False
-
-
fields-
Pretty name: fields
-
Description: The field names in which the right-hand-side values are stored
-
Parameter type: array of strings
-
Required: False
-
Boundary conditions subgroup [physics.poisson_equation.boundaries]
Boundary conditions for wave equations.
Required: False
Full example (Please note that some options might be mutally exclusive):
[[physics.poisson_equation.boundaries]]
type = "homogeneous-dirichlet"
side_sets = ["y0", "x1"]
components = "XXX"
[[physics.poisson_equation.boundaries]]
type = "neumann"
side_sets = ["y0", "x1"]
[
{
"type": "homogeneous-dirichlet",
"side_sets": [
"y0",
"x1"
],
"components": "XXX"
},
{
"type": "neumann",
"side_sets": [
"y0",
"x1"
]
}
]
Detailed description of all parameters:
Child array: [physics.poisson_equation.boundaries]
Full example (Please note that some options might be mutally exclusive):
[[physics.poisson_equation.boundaries]]
type = "homogeneous-dirichlet"
side_sets = ["y0", "x1"]
components = "XXX"
{
"type": "homogeneous-dirichlet",
"side_sets": [
"y0",
"x1"
],
"components": "XXX"
}
Detailed description of all parameters:
-
type-
Pretty name: Homogeneous Dirichlet
-
Description: Homogeneous dirichlet boundary conditions
-
Parameter type: string
-
Required: True
-
Possible values:
"homogeneous-dirichlet"
-
-
side_sets-
Pretty name: Side sets
-
Description: Side sets at which to apply the boundary conditions.
-
Parameter type: array of strings
-
Required: True
-
-
components-
Pretty name: XXX
-
Description: XXX
-
Parameter type: array of booleans
-
Required: False
-
Child array: [physics.poisson_equation.boundaries]
Full example (Please note that some options might be mutally exclusive):
[[physics.poisson_equation.boundaries]]
type = "neumann"
side_sets = ["y0", "x1"]
{
"type": "neumann",
"side_sets": [
"y0",
"x1"
]
}
Detailed description of all parameters:
-
type-
Pretty name: Neumann
-
Description: Apply a Neumann boundary condition
-
Parameter type: string
-
Required: True
-
Possible values:
"neumann"
-
-
side_sets-
Pretty name: Side sets
-
Description: Side sets at which to apply the boundary conditions.
-
Parameter type: array of strings
-
Required: True
-
Solution subgroup [physics.poisson_equation.solution]
Solution output
Required: True
Full example (Please note that some options might be mutally exclusive):
[physics.poisson_equation.solution]
filename = "solution.h5"
fields = ["solution", "residuals"]
{
"solution": {
"filename": "solution.h5",
"fields": [
"solution",
"residuals"
]
}
}
Detailed description of all parameters:
-
filename-
Pretty name: Output file name
-
Description: File within which to store the solution
-
Parameter type: string
-
Required: True
-
-
fields-
Pretty name: Fields
-
Description: Choose which parameters to store.
-
Parameter type: array of strings
-
Required: False
-
Possible values:
"solution","residuals","right-hand-side","inverse-mass-matrix","valence","debug","gradient-of-phi"
-
Solver group [solver]
This groups describes the properties of the iterative linear solver.
Required: False
Full example (Please note that some options might be mutally exclusive):
[solver]
type = "cg"
preconditioner = true
max_iterations = 10
relative_tolerance = 1e-06
absolute_tolerance = 1.0
monitor = true
{
"solver": {
"type": "cg",
"preconditioner": true,
"max_iterations": 10,
"relative_tolerance": 1e-06,
"absolute_tolerance": 1.0,
"monitor": true
}
}
Detailed description of all parameters:
-
type-
Pretty name: Iterative linear solver type
-
Description: Iterative linear solver type
-
Parameter type: string
-
Required: True
-
Possible values:
"cg","gmres","bcgs"
-
-
preconditioner-
Pretty name: Preconditioner
-
Description: Enable / disable preconditioner
-
Parameter type: boolean
-
Required: False
-
-
max_iterations-
Pretty name: Maximum number of iterations
-
Description: Stopping criterion: Maximum number of iterations.
-
Parameter type: integer
-
Required: True
-
-
relative_tolerance-
Pretty name: Relative tolerance
-
Description: Stopping criterion: Relative tolerance.
-
Parameter type: number
-
Required: True
-
-
absolute_tolerance-
Pretty name: Absolute tolerance
-
Description: Stopping criterion: Absolute tolerance.
-
Parameter type: number
-
Required: True
-
-
monitor-
Pretty name: Monitor convergence
-
Description: Verbose output of iterations.
-
Parameter type: boolean
-
Required: False
-