Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
c1861f1
Initial commit. Adding in source class.
rwalkerlewis Jun 12, 2023
559e175
Rebased on new upstream
rwalkerlewis Jun 13, 2023
a0584a9
Fixed STF nomenclature and added files to makefile
rwalkerlewis Jun 13, 2023
8327dfd
Issue with identifing point for source in parallel
rwalkerlewis Jun 13, 2023
458b224
Added Square Wavelet for testing
rwalkerlewis Jun 14, 2023
ab046c0
Added listing for squarewavelet classes
rwalkerlewis Jun 14, 2023
6766e72
Added lumped LHS mass matrix for MT source
rwalkerlewis Jun 14, 2023
67f3626
removed local source label functions
rwalkerlewis Jun 15, 2023
0057d4d
Removed other label function from source
rwalkerlewis Jun 15, 2023
7976afa
Moved coordinate to label assignment to function in Source.cc
rwalkerlewis Jun 15, 2023
5ab9a4c
First work on user selectable subfields for moment tensor sources
rwalkerlewis Jun 15, 2023
323823e
Fixed variable issue
rwalkerlewis Jun 15, 2023
2596703
Parallel works now
rwalkerlewis Jun 15, 2023
b6d84c5
Removed comments
rwalkerlewis Jun 15, 2023
a2f4368
Field is now selectable for MT
rwalkerlewis Jun 15, 2023
1d5c8fb
Changed square pulse to user selected subfield
rwalkerlewis Jun 15, 2023
61da8ed
Updated to new location function
rwalkerlewis Jun 15, 2023
d37a8e5
Array source input works for parallel
rwalkerlewis Jun 15, 2023
529f041
Passes libtest for source
rwalkerlewis Oct 25, 2023
a08a9e3
Intermediate update for unit tests
rwalkerlewis Nov 23, 2023
c793863
Minor changes
rwalkerlewis Nov 23, 2023
236ba38
Cleanup of testing loose ends, still not passing source check. See th…
rwalkerlewis Jan 2, 2024
77db4ad
added point force header to makefile
rwalkerlewis Jan 5, 2024
ef6d3cf
Point Force libtest fails on factory assertion
rwalkerlewis Jan 16, 2024
1d8421d
Libtests pass, moving to implement timehistorydb
rwalkerlewis Jan 17, 2024
7699459
Added change to allow moment tensor force STFs to use time history db
rwalkerlewis Feb 5, 2024
ff96de9
Added fekernel for timehistorywavelet
rwalkerlewis Feb 5, 2024
a819d5d
need to find out how to pass _dbtimehistory
rwalkerlewis Feb 5, 2024
db18b1d
Kicked dbtimehistory down a level
cpstutorials Feb 7, 2024
a233ff9
first pass for libsrc finished
rwalkerlewis Feb 19, 2024
815e4e4
Updated modulesrc
rwalkerlewis Mar 18, 2024
faf8972
Gave up and returned everything to AuxiliaryFactoryMomentTensorForce
rwalkerlewis Mar 19, 2024
2600227
Moved time history from an aux field
rwalkerlewis Apr 3, 2024
0c833da
Added explanation of wellbore character
rwalkerlewis Jun 11, 2024
cf29a6f
Added ability to set r_e constant
rwalkerlewis Jun 13, 2024
cd38123
TimeHistoryWavelet compiles
rwalkerlewis Jun 13, 2024
6fa9226
Updated for MPI
rwalkerlewis Jun 13, 2024
fbc9bd6
remembered r_e constant
rwalkerlewis Jul 2, 2024
2fea53c
Added squarepulsesource, still issues
rwalkerlewis Jul 13, 2024
3a2e759
Updated to ensure compilation
rwalkerlewis Jul 16, 2024
808a7c3
Midway through timehistory source
rwalkerlewis Sep 12, 2024
05158fb
Mesh: Fix for empty labels
knepley Jun 3, 2025
58a722c
Allow data that is not from timestepping in HDF5
knepley Jun 3, 2025
b166df2
added point source example
cpstutorials Jun 3, 2025
54454f2
Updated to fix input units
cpstutorials Jun 4, 2025
4096792
Added ability to time shift wavelet to zero phase
cpstutorials Jun 4, 2025
5766b29
Parallel fix
knepley Jun 5, 2025
e4944ba
Added cfg for petsc test
cpstutorials Jun 5, 2025
f015c2c
MeshIOPetsc: Allow creation from command line
knepley Jun 5, 2025
3b8d922
Added break to switch statement
cpstutorials Jun 5, 2025
2a10bbe
Restricted branch to point source only.
cpstutorials Jun 6, 2025
598e695
Adjustments to permit compilation
cpstutorials Jun 6, 2025
ee33790
Fixed install files so that it runs
cpstutorials Jun 6, 2025
caf6d6a
Removed unrelated tests
cpstutorials Jun 6, 2025
875856d
Added makefile back
cpstutorials Jun 6, 2025
57fdecc
Removed vestigal parts of test makefile
cpstutorials Jun 6, 2025
6568888
just removing source tests
cpstutorials Jun 6, 2025
4493475
Just removing source tests
cpstutorials Jun 6, 2025
a3ce73d
Update configure.ac
rwalkerlewis Jun 7, 2025
0daf65a
Added functioning MMS tests to moment tensor source
cpstutorials Dec 31, 2025
b9330e9
Updated docs to include source components
cpstutorials Jan 21, 2026
3e047e1
Fixed old include
cpstutorials Jan 21, 2026
26203b4
fixes to ensure CI tests work
cpstutorials Jan 22, 2026
cb7867c
source mms test passes
cpstutorials Jan 22, 2026
1e8d4e1
Believed to pass with no failures
cpstutorials Jan 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .vscode/settings.json
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changes to this file are not relevant. Please remove.

Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
},
"files.associations": {
"*.icc": "cpp",
"iosfwd": "cpp"
"iosfwd": "cpp",
"*.tcc": "cpp",
"fstream": "cpp"
},
"python.formatting.autopep8Args": [
"-max-line-length",
Expand Down
5 changes: 5 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ AC_CONFIG_FILES([Makefile
libsrc/pylith/feassemble/Makefile
libsrc/pylith/fekernels/Makefile
libsrc/pylith/faults/Makefile
libsrc/pylith/sources/Makefile
libsrc/pylith/friction/Makefile
libsrc/pylith/materials/Makefile
libsrc/pylith/meshio/Makefile
Expand All @@ -211,6 +212,7 @@ AC_CONFIG_FILES([Makefile
modulesrc/include/Makefile
modulesrc/bc/Makefile
modulesrc/faults/Makefile
modulesrc/sources/Makefile
modulesrc/feassemble/Makefile
modulesrc/friction/Makefile
modulesrc/materials/Makefile
Expand All @@ -236,6 +238,7 @@ AC_CONFIG_FILES([Makefile
tests/libtests/problems/data/Makefile
tests/libtests/meshio/data/Makefile
tests/libtests/scales/Makefile
tests/libtests/sources/Makefile
tests/libtests/topology/Makefile
tests/libtests/topology/data/Makefile
tests/libtests/testing/Makefile
Expand All @@ -250,6 +253,8 @@ AC_CONFIG_FILES([Makefile
tests/mmstests/incompressibleelasticity/nofaults-2d/Makefile
tests/mmstests/poroelasticity/Makefile
tests/mmstests/poroelasticity/nofaults-2d/Makefile
tests/mmstests/sources/Makefile
tests/mmstests/sources/momenttensor-2d/Makefile
tests/fullscale/Makefile
tests/fullscale/cornercases/Makefile
tests/fullscale/cornercases/nofaults-2d/Makefile
Expand Down
1 change: 1 addition & 0 deletions docs/user/components/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ faults/index.md
materials/index.md
meshio/index.md
problems/index.md
sources/index.md
testing/index.md
topology/index.md
utils/index.md
Expand Down
29 changes: 29 additions & 0 deletions docs/user/components/sources/AuxSubfieldsMomentTensorForce.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# AuxSubfieldsMomentTensorForce

% WARNING: Do not edit; this is a generated file!
:Full name: `pylith.sources.AuxSubfieldsMomentTensorForce`
:Journal name: `auxsubfieldsmomenttensorforce`

Container for moment tensor force auxiliary subfields.

This component defines the discretization for the moment tensor and time delay auxiliary subfields.

## Pyre Facilities

* `moment_tensor`: Moment tensor subfield.
- **current value**: 'subfield', from {default}
- **configurable as**: subfield, moment_tensor
* `time_delay`: Time delay subfield.
- **current value**: 'subfield', from {default}
- **configurable as**: subfield, time_delay

## Example

Example of setting `AuxSubfieldsMomentTensorForce` Pyre properties and facilities in a parameter file.

:::{code-block} cfg
[pylithapp.problem.sources.source]
auxiliary_subfields.moment_tensor.basis_order = 0
auxiliary_subfields.time_delay.basis_order = 0
:::

25 changes: 25 additions & 0 deletions docs/user/components/sources/AuxSubfieldsSourceTime.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# AuxSubfieldsSourceTime

% WARNING: Do not edit; this is a generated file!
:Full name: `pylith.sources.AuxSubfieldsSourceTime`
:Journal name: `auxsubfieldssourcetime`

Container for source time function auxiliary subfields.

This component defines the discretization for the center frequency auxiliary subfield used by wavelet source time functions.

## Pyre Facilities

* `center_frequency`: Center frequency subfield.
- **current value**: 'subfield', from {default}
- **configurable as**: subfield, center_frequency

## Example

Example of setting `AuxSubfieldsSourceTime` Pyre properties and facilities in a parameter file.

:::{code-block} cfg
[pylithapp.problem.sources.source]
source_time_function.auxiliary_subfields.center_frequency.basis_order = 0
:::

41 changes: 41 additions & 0 deletions docs/user/components/sources/GaussianWavelet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# GaussianWavelet

% WARNING: Do not edit; this is a generated file!
:Full name: `pylith.sources.GaussianWavelet`
:Journal name: `gaussianwavelet`

Gaussian wavelet source time function.

The Gaussian wavelet provides a smooth pulse.

The wavelet is defined as:

$S(t) = \frac{1}{2\pi^2 f_0^2} \exp\left(-\pi^2 f_0^2 (t-t_d)^2\right)$

where $f_0$ is the center frequency and $t_d$ is the time delay.

Implements `SourceTimeFunctionMomentTensorForce`.

## Pyre Facilities

* `auxiliary_subfields`: Discretization information for source time function parameters.
- **current value**: 'auxiliary_subfields', from {file='...', line=..., function='__set__'}
- **configurable as**: auxiliary_subfields

## Example

Example of setting `GaussianWavelet` Pyre properties and facilities in a parameter file.

:::{code-block} cfg
[pylithapp.problem.sources.source]
source_time_function = pylith.sources.GaussianWavelet

# Center frequency specified in the auxiliary field database
db_auxiliary_field = spatialdata.spatialdb.UniformDB
db_auxiliary_field.description = Source properties
db_auxiliary_field.values = [moment_tensor_xx, moment_tensor_yy, moment_tensor_xy, moment_tensor_zz, time_delay, center_frequency]
db_auxiliary_field.data = [1.0e12*Pa*s, 1.0e12*Pa*s, 0.0*Pa*s, 1.0e12*Pa*s, 0.0*s, 5.0]

source_time_function.auxiliary_subfields.center_frequency.basis_order = 0
:::

84 changes: 84 additions & 0 deletions docs/user/components/sources/MomentTensorForce.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# MomentTensorForce

% WARNING: Do not edit; this is a generated file!
:Full name: `pylith.sources.MomentTensorForce`
:Journal name: `momenttensorforce`

Moment tensor point source.

This component implements a point source using a moment tensor representation.
The moment tensor describes the equivalent body forces of a seismic source.
The temporal evolution of the source is controlled by a source time function.

Implements `Source`.

## Pyre Facilities

* `auxiliary_subfields`: Discretization information for auxiliary subfields.
- **current value**: 'auxiliary_subfields', from {file='...', line=..., function='__set__'}
- **configurable as**: auxiliary_subfields
* `db_auxiliary_field`: Database for source parameters.
- **current value**: 'simpledb', from {default}
- **configurable as**: simpledb, db_auxiliary_field
* `derived_subfields`: Discretization of derived subfields.
- **current value**: 'emptybin', from {default}
- **configurable as**: emptybin, derived_subfields
* `observers`: Observers (e.g., output).
- **current value**: 'singlephysicsobserver', from {default}
- **configurable as**: singlephysicsobserver, observers
* `reader`: Reader for source points list.
- **current value**: 'pointslist', from {default}
- **configurable as**: pointslist, reader
* `source_time_function`: Source time function for moment tensor force.
- **current value**: 'timehistorywavelet', from {default}
- **configurable as**: timehistorywavelet, source_time_function

## Pyre Properties

* `description`=\<str\>: Descriptive label for source.
- **default value**: ''
- **current value**: '', from {default}
- **validator**: <function validateDescription at ...>
* `field`=\<str\>: Solution subfield associated with source.
- **default value**: 'displacement'
- **current value**: 'displacement', from {default}
* `label`=\<str\>: Name of label for source.
- **default value**: 'source-id'
- **current value**: 'source-id', from {default}
* `label_value`=\<int\>: Value of label identifying source.
- **default value**: 1
- **current value**: 1, from {default}

## Example

Example of setting `MomentTensorForce` Pyre properties and facilities in a parameter file.

:::{code-block} cfg
[pylithapp.problem]
sources = [source]
sources.source = pylith.sources.MomentTensorForce

[pylithapp.problem.sources.source]
description = Earthquake source
label_value = 2

# Specify source locations
reader.filename = source_sites.txt
reader.coordsys = spatialdata.geocoords.CSCart
reader.coordsys.space_dim = 2

# Use Ricker wavelet source time function
source_time_function = pylith.sources.RickerWavelet

# Source parameters (moment tensor and time delay)
db_auxiliary_field = spatialdata.spatialdb.UniformDB
db_auxiliary_field.description = Source properties
db_auxiliary_field.values = [moment_tensor_xx, moment_tensor_yy, moment_tensor_xy, moment_tensor_zz, time_delay, center_frequency]
db_auxiliary_field.data = [1.0e12*Pa*s, 1.0e12*Pa*s, 0.0*Pa*s, 1.0e12*Pa*s, 0.0*s, 5.0]

# Discretization of auxiliary subfields
auxiliary_subfields.moment_tensor.basis_order = 0
auxiliary_subfields.time_delay.basis_order = 0
source_time_function.auxiliary_subfields.center_frequency.basis_order = 0
:::

42 changes: 42 additions & 0 deletions docs/user/components/sources/RickerWavelet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# RickerWavelet

% WARNING: Do not edit; this is a generated file!
:Full name: `pylith.sources.RickerWavelet`
:Journal name: `rickerwavelet`

Ricker wavelet source time function.

The Ricker wavelet (Mexican hat wavelet) is the negative normalized second derivative of a Gaussian.
It is commonly used as a source time function in seismic wave propagation studies.

The wavelet is defined as:

$S(t) = \left(1 - 2\pi^2 f_0^2 (t-t_d)^2\right) \exp\left(-\pi^2 f_0^2 (t-t_d)^2\right)$

where $f_0$ is the center frequency and $t_d$ is the time delay.

Implements `SourceTimeFunctionMomentTensorForce`.

## Pyre Facilities

* `auxiliary_subfields`: Discretization information for source time function parameters.
- **current value**: 'auxiliary_subfields', from {file='...', line=..., function='__set__'}
- **configurable as**: auxiliary_subfields

## Example

Example of setting `RickerWavelet` Pyre properties and facilities in a parameter file.

:::{code-block} cfg
[pylithapp.problem.sources.source]
source_time_function = pylith.sources.RickerWavelet

# Center frequency specified in the auxiliary field database
db_auxiliary_field = spatialdata.spatialdb.UniformDB
db_auxiliary_field.description = Source properties
db_auxiliary_field.values = [moment_tensor_xx, moment_tensor_yy, moment_tensor_xy, moment_tensor_zz, time_delay, center_frequency]
db_auxiliary_field.data = [1.0e12*Pa*s, 1.0e12*Pa*s, 0.0*Pa*s, 1.0e12*Pa*s, 0.0*s, 5.0]

source_time_function.auxiliary_subfields.center_frequency.basis_order = 0
:::

45 changes: 45 additions & 0 deletions docs/user/components/sources/Source.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Source

% WARNING: Do not edit; this is a generated file!
:Full name: `pylith.sources.Source`
:Journal name: `source`

Abstract base class for point sources.

This is the base class for all point source implementations in PyLith.
Point sources are used to specify internal forcing terms at discrete points within the domain.

## Pyre Facilities

* `auxiliary_subfields`: Discretization information for auxiliary subfields.
- **current value**: 'emptybin', from {default}
- **configurable as**: emptybin, auxiliary_subfields
* `db_auxiliary_field`: Database for source parameters.
- **current value**: 'simpledb', from {default}
- **configurable as**: simpledb, db_auxiliary_field
* `derived_subfields`: Discretization of derived subfields.
- **current value**: 'emptybin', from {default}
- **configurable as**: emptybin, derived_subfields
* `observers`: Observers (e.g., output).
- **current value**: 'singlephysicsobserver', from {default}
- **configurable as**: singlephysicsobserver, observers
* `reader`: Reader for source points list.
- **current value**: 'pointslist', from {default}
- **configurable as**: pointslist, reader

## Pyre Properties

* `description`=\<str\>: Descriptive label for source.
- **default value**: ''
- **current value**: '', from {default}
- **validator**: <function validateDescription at ...>
* `field`=\<str\>: Solution subfield associated with source.
- **default value**: 'displacement'
- **current value**: 'displacement', from {default}
* `label`=\<str\>: Name of label for source.
- **default value**: 'source-id'
- **current value**: 'source-id', from {default}
* `label_value`=\<int\>: Value of label identifying source.
- **default value**: 1
- **current value**: 1, from {default}

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# SourceTimeFunctionMomentTensorForce

% WARNING: Do not edit; this is a generated file!
:Full name: `pylith.sources.SourceTimeFunctionMomentTensorForce`
:Journal name: `sourcetimefunctionmomenttensorforce`

Abstract base class for source time functions.

This is the base class for source time functions used with moment tensor force sources.
Derived classes implement specific wavelet types.

## Pyre Facilities

* `auxiliary_subfields`: Discretization information for physical properties and state variables.
- **current value**: 'emptybin', from {default}
- **configurable as**: emptybin, auxiliary_subfields

41 changes: 41 additions & 0 deletions docs/user/components/sources/SquareWavelet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# SquareWavelet

% WARNING: Do not edit; this is a generated file!
:Full name: `pylith.sources.SquareWavelet`
:Journal name: `squarewavelet`

Square wavelet (step function) source time function.

The square wavelet is a Heaviside step function that activates the source at the time delay.

The wavelet is defined as:

$S(t) = \begin{cases} 0 & t < t_d \\ 1 & t \geq t_d \end{cases}$

where $t_d$ is the time delay.

Implements `SourceTimeFunctionMomentTensorForce`.

## Pyre Facilities

* `auxiliary_subfields`: Discretization information for source time function parameters.
- **current value**: 'auxiliary_subfields', from {file='...', line=..., function='__set__'}
- **configurable as**: auxiliary_subfields

## Example

Example of setting `SquareWavelet` Pyre properties and facilities in a parameter file.

:::{code-block} cfg
[pylithapp.problem.sources.source]
source_time_function = pylith.sources.SquareWavelet

# Source parameters specified in the auxiliary field database
db_auxiliary_field = spatialdata.spatialdb.UniformDB
db_auxiliary_field.description = Source properties
db_auxiliary_field.values = [moment_tensor_xx, moment_tensor_yy, moment_tensor_xy, moment_tensor_zz, time_delay, center_frequency]
db_auxiliary_field.data = [1.0e12*Pa*s, 1.0e12*Pa*s, 0.0*Pa*s, 1.0e12*Pa*s, 0.5*s, 1.0]

source_time_function.auxiliary_subfields.center_frequency.basis_order = 0
:::

Loading