This documentation is not for the latest stable Salvus version.
Release: 0.12.16
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" output_filename = "gradient.h5" format = "hdf5" [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" [hardware] gpu = false [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"] [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", "output_filename": "gradient.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" } }, "hardware": { "gpu": false }, "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" ] } }, "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]
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" output_filename = "gradient.h5" format = "hdf5"
{ "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", "output_filename": "gradient.h5", "format": "hdf5" } } }
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
[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
[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
[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
[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
[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" output_filename = "gradient.h5" format = "hdf5"
{ "gradient": { "parameterization": "rho-vp-vs", "output_filename": "gradient.h5", "format": "hdf5" } }
Detailed description of all parameters:
parameterization
Pretty name: Parameterization
Description: Parameterization of this gradeint
Parameter type: string
Required: True
Possible values: "linear"
, "rho-vp"
, "rho-vp-vs"
, "impedance"
, "love-parameters"
, "tti"
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"
[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
, 3
, 4
, 5
, 6
, 7
[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"
[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"
[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"
[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
{ "hardware": { "gpu": false } }
Detailed description of all parameters:
gpu
Pretty name: Enable GPU support
Description: Run simulation on GPUs
Parameter type: boolean
Required: True
[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": { "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" ] } } }
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
[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
[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
[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"
[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
[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
[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
[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_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"
[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:
[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
[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
[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
[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
[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
[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
[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
[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
[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"
[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
[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:
[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
[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
[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
[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
[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
[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
[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:
[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
[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
[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:
[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
[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
[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]
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