Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Vertical transverse isotropic (VTI) solvers: Improve current one ("Fletcher" + add density) + Add other solver ("Zhang") #2816

Open
wants to merge 25 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
f0a4227
remove old vti files
Bertbk Oct 7, 2024
35320cd
Acoustic VTI Fletcher and Zhang Propagators. Schema and Adjoint Propa…
Bertbk Oct 7, 2024
a72a12a
VTI unit tests
Bertbk Oct 8, 2024
ece9b75
VTI docs
Bertbk Oct 8, 2024
3f4f093
VTI: comment 'FreeOnDevice' lines
Bertbk Oct 11, 2024
8e8b2fd
VTI: cosmetic
Bertbk Oct 11, 2024
6f5f292
vti input files
Bertbk Oct 11, 2024
58e57d5
VTI uncrustify
Bertbk Oct 11, 2024
c89a500
Docs: Add 'sphinxcontrib.bibtex' as requierement. Add bibtex file (fo…
Bertbk Oct 11, 2024
4979093
vti: uncrustify
Bertbk Oct 11, 2024
4c62077
Merge branch 'develop' into feature/Bertbk/AcousticVTIDensity
Bertbk Dec 10, 2024
e706287
conflit solving + update solvers
Bertbk Dec 10, 2024
44e9eed
Fixed compilation errors.
Dec 11, 2024
705621e
VTI fix: register Field Sigma
Bertbk Dec 11, 2024
44cf6a9
VTI fix: compiler issue, use LeapFrogVTI
Bertbk Dec 11, 2024
42bc6c2
VTI fix: unsused variable, remove old VTI input file
Bertbk Dec 11, 2024
69e5e9e
Doc: add mathtools to imglatex. Use latex_additional_files instead of…
Bertbk Dec 11, 2024
45d02f3
Fixed style.
Dec 11, 2024
fbf524f
VTI doc: change subtitle and subsubsections underscript symbols
Bertbk Dec 17, 2024
091b6f9
Geos sphinx: include latex_macros.sty in preamble (directly)
Bertbk Dec 17, 2024
30b6b91
Added fix for missing volume integral. WIP, does not work yet.
Dec 18, 2024
7c64037
Fixed typo in AcousticGradzDelta field name.
Jan 9, 2025
b4d41d8
Separated the two approaches: Q1 or precomp dz(f). Used B matrix in c…
Jan 10, 2025
5d79ae1
Made sure delta/epsilon are Q1 when using precomputed f.
Jan 10, 2025
247528b
Fixed on-the-fly computation of missing z term, albeit with a perform…
Jan 13, 2025
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
244 changes: 244 additions & 0 deletions inputFiles/wavePropagation/acous3D_vtiFletcher_smoke.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
<?xml version="1.0" ?>
<Problem>

<!-- hexahedral mesh generated internally by GEOSX -->
<Mesh>
<InternalMesh
name="mesh"
elementTypes="{ C3D8 }"
xCoords="{ 0,101}"
yCoords="{ 0,101 }"
zCoords="{ 0,101 }"
nx="{ 5 }"
ny="{ 5 }"
nz="{ 5 }"
cellBlockNames="{ cb }"/>
</Mesh>

<Geometry>
<Box
name="zpos"
xMin="{ -0.1, -0.1, 100.9}"
xMax="{ 101.1, 101.1, 101.1}"/>
<Box
name="zneg"
xMin="{ -0.1, -0.1, -0.1}"
xMax="{ 101.1, 101.1, 0.1}"/>
<Box
name="xpos"
xMin="{ 100.9, -0.1, -0.1}"
xMax="{ 101.1, 101.1, 101.1}"/>
<Box
name="xneg"
xMin="{ -0.1, -0.1, -0.1}"
xMax="{ 0.1, 101.1, 101.1}"/>
<Box
name="ypos"
xMin="{ -0.1, 100.9, -0.1}"
xMax="{ 101.1, 101.1, 101.1}"/>
<Box
name="yneg"
xMin="{ -0.1, -0.1, -0.1}"
xMax="{ 101.1, 0.1, 101.1}"/>
</Geometry>

<!-- The free surface condition the domain -->
<FieldSpecifications>
<FieldSpecification
name="zposFreeSurface"
objectPath="faceManager"
fieldName="AcousticFreeSurface"
scale="0.0"
setNames="{ zpos }"/>
<FieldSpecification
name="znegBottomSurface"
objectPath="faceManager"
fieldName="AcousticBottomSurface"
scale="0.0"
setNames="{ zneg }"/>
<FieldSpecification
name="LateralFreeSurface"
objectPath="faceManager"
fieldName="AcousticLateralSurface"
scale="0.0"
setNames="{ xpos, xneg, ypos, yneg }"/>
<FieldSpecification
name="acousticEpsilon"
initialCondition="1"
objectPath="ElementRegions/Region/cb"
fieldName="acousticEpsilon"
scale="0.24"
setNames="{ all }"/>
<FieldSpecification
name="acousticDelta"
initialCondition="1"
objectPath="ElementRegions/Region/cb"
fieldName="acousticDelta"
scale="0.1"
setNames="{ all }"/>
<FieldSpecification
name="acousticSigma"
initialCondition="1"
objectPath="ElementRegions/Region/cb"
fieldName="acousticSigma"
scale="0.75"
setNames="{ all }"/>
</FieldSpecifications>
<Solvers>
<!-- define the solver -->
<!-- define the source coordinates -->
<!-- define the time source frequency -->
<!-- define the receiver coordinates -->
<AcousticVTIFletcherSEM
name="acousticVTIFletcherSolver"
cflFactor="0.25"
discretization="FE1"
targetRegions="{ Region }"
sourceCoordinates="{ { 55, 55, 55 },
{ 10, 10, 14 } }"
timeSourceFrequency="5.0"
receiverCoordinates="{ { 5, 5, 11 },
{ 5, 50, 11 },
{ 5, 95, 11 } }"/>
</Solvers>

<NumericalMethods>
<FiniteElements>
<FiniteElementSpace
name="FE1"
order="1"
formulation="SEM"/>
</FiniteElements>
</NumericalMethods>

<ElementRegions>
<CellElementRegion
name="Region"
cellBlocks="{ cb }"
materialList="{ nullModel }"/>
</ElementRegions>

<Constitutive>
<NullModel
name="nullModel"/>
</Constitutive>

<FieldSpecifications>
<!-- 1) The initial pressure field -->
<FieldSpecification
name="initialPressure_n"
initialCondition="1"
setNames="{ all }"
objectPath="nodeManager"
fieldName="pressure_p_n"
scale="0.0"/>

<FieldSpecification
name="initialPressure_p_nm1"
initialCondition="1"
setNames="{ all }"
objectPath="nodeManager"
fieldName="pressure_p_nm1"
scale="0.0"/>

<FieldSpecification
name="initialPressure_q_n"
initialCondition="1"
setNames="{ all }"
objectPath="nodeManager"
fieldName="pressure_q_n"
scale="0.0"/>

<FieldSpecification
name="initialPressure_q_nm1"
initialCondition="1"
setNames="{ all }"
objectPath="nodeManager"
fieldName="pressure_q_nm1"
scale="0.0"/>

<!-- 2) The velocity and density in the domain -->
<FieldSpecification
name="cellVelocity"
initialCondition="1"
objectPath="ElementRegions/Region/cb"
fieldName="acousticVelocity"
scale="1500"
setNames="{ all }"/>

<FieldSpecification
name="cellDensity"
initialCondition="1"
objectPath="ElementRegions/Region/cb"
fieldName="acousticDensity"
scale="1.5"
setNames="{ all }"/>

<!-- 3) The free surface condition the domain -->
<FieldSpecification
name="zposFreeSurface"
objectPath="faceManager"
fieldName="FreeSurface"
scale="0.0"
setNames="{ zpos }"/>
</FieldSpecifications>

<Events
maxTime="0.20">
<!-- trigger the application of the solver -->
<!-- control the timestepping here with forceDt -->
<PeriodicEvent
name="solverApplications"
forceDt="0.001"
target="/Solvers/acousticVTIFletcherSolver"/>

<!-- generate an output that can be read from VTK -->
<PeriodicEvent
name="vtk"
timeFrequency="0.001"
targetExactTimestep="0"
target="/Outputs/vtkOutput"/>

<!-- two events to output pressure in an hdf5 file -->
<PeriodicEvent
name="timeHistoryCollection"
timeFrequency="0.001"
target="/Tasks/pressureCollection"/>

<PeriodicEvent
name="timeHistoryOutput"
timeFrequency="0.001"
targetExactTimestep="0"
target="/Outputs/timeHistoryOutput"/>

<PeriodicEvent
name="restarts"
timeFrequency="0.10"
targetExactTimestep="0"
target="/Outputs/restartOutput"/>
</Events>

<!-- collect the pressure values at the nodes -->
<Tasks>
<PackCollection
name="pressureCollection"
objectPath="/Problem/domain/MeshBodies/mesh/meshLevels/FE1/nodeManager"
fieldName="pressure_p_np1"/>
</Tasks>

<Outputs>
<!-- output all the mesh values registered with a plot level LEVEL_0, LEVEL_1, LEVEL_2, LEVEL_3 -->
<VTK
name="vtkOutput"
plotLevel="3"/>

<!-- output the pressure values to a file named pressure_history.hdf5 -->
<TimeHistory
name="timeHistoryOutput"
sources="{ /Tasks/pressureCollection }"
filename="pressure_history"/>

<Restart
name="restartOutput"/>
</Outputs>
</Problem>
Original file line number Diff line number Diff line change
Expand Up @@ -47,50 +47,43 @@
<FieldSpecification
name="zposFreeSurface"
objectPath="faceManager"
fieldName="FreeSurface"
fieldName="AcousticFreeSurface"
scale="0.0"
setNames="{ zpos }"/>
<FieldSpecification
name="znegBottomSurface"
objectPath="faceManager"
fieldName="BottomSurface"
fieldName="AcousticBottomSurface"
scale="0.0"
setNames="{ zneg }"/>
<FieldSpecification
name="LateralFreeSurface"
objectPath="faceManager"
fieldName="LateralSurface"
fieldName="AcousticLateralSurface"
scale="0.0"
setNames="{ xpos, xneg, ypos, yneg }"/>
<FieldSpecification
name="Epsilon"
name="acousticEpsilon"
initialCondition="1"
objectPath="ElementRegions/Region/cb"
fieldName="epsilon"
fieldName="acousticEpsilon"
scale="0.24"
setNames="{ all }"/>
<FieldSpecification
name="Delta"
name="acousticDelta"
initialCondition="1"
objectPath="ElementRegions/Region/cb"
fieldName="delta"
fieldName="acousticDelta"
scale="0.1"
setNames="{ all }"/>
<FieldSpecification
name="f"
initialCondition="1"
objectPath="ElementRegions/Region/cb"
fieldName="f"
scale="1.0"
setNames="{ all }"/>
</FieldSpecifications>
</FieldSpecifications>
<Solvers>
<!-- define the solver -->
<!-- define the source coordinates -->
<!-- define the time source frequency -->
<!-- define the receiver coordinates -->
<AcousticVTISEM
name="acousticSolver"
<AcousticVTIZhangSEM
name="acousticVTIZhangSolver"
cflFactor="0.25"
discretization="FE1"
targetRegions="{ Region }"
Expand All @@ -114,7 +107,7 @@
<ElementRegions>
<CellElementRegion
name="Region"
cellBlocks="{ * }"
cellBlocks="{ cb }"
materialList="{ nullModel }"/>
</ElementRegions>

Expand Down Expand Up @@ -157,7 +150,7 @@
fieldName="pressure_q_nm1"
scale="0.0"/>

<!-- 2) The velocity in the domain -->
<!-- 2) The velocity and density in the domain -->
<FieldSpecification
name="cellVelocity"
initialCondition="1"
Expand All @@ -166,6 +159,14 @@
scale="1500"
setNames="{ all }"/>

<FieldSpecification
name="cellDensity"
initialCondition="1"
objectPath="ElementRegions/Region/cb"
fieldName="acousticDensity"
scale="1.5"
setNames="{ all }"/>

<!-- 3) The free surface condition the domain -->
<FieldSpecification
name="zposFreeSurface"
Expand All @@ -182,7 +183,7 @@
<PeriodicEvent
name="solverApplications"
forceDt="0.001"
target="/Solvers/acousticSolver"/>
target="/Solvers/acousticVTIZhangSolver"/>

<!-- generate an output that can be read from VTK -->
<PeriodicEvent
Expand Down
11 changes: 6 additions & 5 deletions src/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,8 @@
'matplotlib.sphinxext.plot_directive',
'sphinx.ext.napoleon',
'sphinxcontrib.plantuml',
'sphinxcontrib.programoutput'
'sphinxcontrib.programoutput',
'sphinxcontrib.bibtex'
]

plantuml = "/usr/bin/java -Djava.awt.headless=true -jar /tmp/plantuml.jar"
Expand Down Expand Up @@ -262,20 +263,20 @@
numfig = True

# Additional stuff for the LaTeX preamble.
latex_elements['preamble'] = '\\usepackage{amsmath}\n\\usepackage{amssymb}\n\\usepackage[retainorgcmds]{IEEEtrantools}\n'
latex_elements['preamble'] = '\\usepackage{amsmath}\n\\usepackage{amssymb}\n\\usepackage[retainorgcmds]{IEEEtrantools}\n\\usepackage{mathtools}\\input{docs/sphinx/latex_macros.sty}\n'
latex_additional_files = ['docs/sphinx/latex_macros.sty']

bibtex_bibfiles = ['docs/sphinx/biblio_wave.bib']

#####################################################
# add LaTeX macros

f = open('docs/sphinx/latex_macros.sty')
imgmath_latex_preamble = ""
imgmath_latex_preamble = "\\usepackage{mathtools}"
imgmath_image_format = 'svg'
imgmath_font_size = 14

for macro in f:
# used when building latex and pdf versions
latex_elements['preamble'] += macro + '\n'
# used when building html version
imgmath_latex_preamble += macro + '\n'

Expand Down
Loading