diff --git a/.github/workflows/project-date-automation.yml b/.github/workflows/project-date-automation.yml new file mode 100644 index 000000000..4a26428d4 --- /dev/null +++ b/.github/workflows/project-date-automation.yml @@ -0,0 +1,188 @@ +name: Automate Project Dates + +on: + issues: + types: [opened, edited, closed, reopened] + # Note: project_card is for legacy projects. For Projects V2, we need to use other triggers + # The workflow will run when issues/PRs change, then check if project status changed + +jobs: + update-project-dates: + runs-on: ubuntu-latest + steps: + - name: Get Project Item + id: get_item + uses: actions/github-script@v7 + with: + script: | + // Get the project item details + const query = ` + query($owner: String!, $repo: String!, $issueNumber: Int!) { + repository(owner: $owner, name: $repo) { + issue(number: $issueNumber) { + projectItems(first: 10) { + nodes { + id + project { + id + number + } + fieldValues(first: 20) { + nodes { + ... on ProjectV2ItemFieldSingleSelectValue { + name + field { + ... on ProjectV2SingleSelectField { + name + } + } + } + ... on ProjectV2ItemFieldDateValue { + date + field { + ... on ProjectV2Field { + name + } + } + } + } + } + } + } + } + } + } + `; + + const variables = { + owner: context.repo.owner, + repo: context.repo.repo, + issueNumber: context.issue?.number || context.payload.pull_request?.number + }; + + if (!variables.issueNumber) { + console.log('No issue or PR number found'); + return; + } + + const result = await github.graphql(query, variables); + const projectItems = result.repository.issue.projectItems.nodes; + + for (const item of projectItems) { + console.log(`Processing project item: ${item.id}`); + + // Find status field value + let currentStatus = null; + let startDate = null; + let endDate = null; + let statusFieldId = null; + let startDateFieldId = null; + let endDateFieldId = null; + + // First, get field IDs from the project + const projectQuery = ` + query($projectId: ID!) { + node(id: $projectId) { + ... on ProjectV2 { + fields(first: 20) { + nodes { + ... on ProjectV2Field { + id + name + } + ... on ProjectV2SingleSelectField { + id + name + } + } + } + } + } + } + `; + + const projectResult = await github.graphql(projectQuery, { + projectId: item.project.id + }); + + const fields = projectResult.node.fields.nodes; + + // Map field names to IDs (using exact field names) + for (const field of fields) { + if (field.name.toLowerCase() === 'status') { + statusFieldId = field.id; + } else if (field.name === 'Start Date') { + startDateFieldId = field.id; + } else if (field.name === 'End Date') { + endDateFieldId = field.id; + } + } + + // Get current field values + for (const fieldValue of item.fieldValues.nodes) { + if (fieldValue.field?.name?.toLowerCase() === 'status') { + currentStatus = fieldValue.name; + } else if (fieldValue.field?.name === 'Start Date') { + startDate = fieldValue.date; + } else if (fieldValue.field?.name === 'End Date') { + endDate = fieldValue.date; + } + } + + console.log(`Current status: ${currentStatus}`); + console.log(`Start date: ${startDate}`); + console.log(`End date: ${endDate}`); + + const today = new Date().toISOString().split('T')[0]; + + // Only update dates if they don't already exist (this prevents overwriting existing dates) + // Update start date if status is "In progress 🧑‍💻" and no start date exists + if (currentStatus === 'In progress 🧑‍💻' && !startDate && startDateFieldId) { + console.log('Setting start date to today'); + await github.graphql(` + mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $value: Date!) { + updateProjectV2ItemFieldValue(input: { + projectId: $projectId + itemId: $itemId + fieldId: $fieldId + value: { date: $value } + }) { + projectV2Item { + id + } + } + } + `, { + projectId: item.project.id, + itemId: item.id, + fieldId: startDateFieldId, + value: today + }); + } + + // Update end date if status is "Done ✅" and no end date exists + if (currentStatus === 'Done ✅' && !endDate && endDateFieldId) { + console.log('Setting end date to today'); + await github.graphql(` + mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $value: Date!) { + updateProjectV2ItemFieldValue(input: { + projectId: $projectId + itemId: $itemId + fieldId: $fieldId + value: { date: $value } + }) { + projectV2Item { + id + } + } + } + `, { + projectId: item.project.id, + itemId: item.id, + fieldId: endDateFieldId, + value: today + }); + } + } + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.jenkins/gnu_compiler_checks.gvy b/.jenkins/gnu_compiler_checks.gvy index 95cbe1fff..852c707cc 100644 --- a/.jenkins/gnu_compiler_checks.gvy +++ b/.jenkins/gnu_compiler_checks.gvy @@ -1,7 +1,7 @@ pipeline{ agent { node { - label 'della_rk9481' + label 'della-rse_specfempp' } } stages{ @@ -77,7 +77,7 @@ pipeline{ module load ${GNU_COMPILER_MODULE} cd build_cpu_${GNU_COMPILER_NAME}_${CMAKE_HOST_NAME}_${SIMD_NAME}_${env.BUILD_TAG}/tests/unit-tests export BUILD_DIR=build_cpu_${GNU_COMPILER_NAME}_${CMAKE_HOST_NAME}_${SIMD_NAME}_${env.BUILD_TAG} - srun -N 1 -t 00:20:00 ${HOST_RUN_FLAGS} --constraint="intel|cascade" bash -c 'export OMP_PROC_BIND=spread; export OMP_THREADS=places; ctest -j --output-on-failure;' + srun -N 1 -t 00:20:00 --account rse ${HOST_RUN_FLAGS} --constraint="intel|cascade" bash -c 'export OMP_PROC_BIND=spread; export OMP_THREADS=places; ctest -j --output-on-failure;' """ echo ' Testing completed ' } diff --git a/.jenkins/intel_compiler_checks.gvy b/.jenkins/intel_compiler_checks.gvy index 1018b4d6f..7f0e484df 100644 --- a/.jenkins/intel_compiler_checks.gvy +++ b/.jenkins/intel_compiler_checks.gvy @@ -1,7 +1,7 @@ pipeline{ agent { node { - label 'della_rk9481' + label 'della-rse_specfempp' } } stages{ @@ -78,7 +78,7 @@ pipeline{ module load ${INTEL_MODULE} cd build_cpu_${INTEL_COMPILER_NAME}_${CMAKE_HOST_NAME}_${SIMD_NAME}_${env.BUILD_TAG}/tests/unit-tests export BUILD_DIR=build_cpu_${INTEL_COMPILER_NAME}_${CMAKE_HOST_NAME}_${SIMD_NAME}_${env.BUILD_TAG} - srun -N 1 -t 00:20:00 ${HOST_RUN_FLAGS} --constraint="intel|cascade" bash -c 'export OMP_PROC_BIND=spread; export OMP_THREADS=places; ctest -j --output-on-failure;' + srun -N 1 -t 00:20:00 --account rse ${HOST_RUN_FLAGS} --constraint="intel|cascade" bash -c 'export OMP_PROC_BIND=spread; export OMP_THREADS=places; ctest -j --output-on-failure;' """ echo ' Testing completed ' } diff --git a/.jenkins/nvidia_compiler_checks.gvy b/.jenkins/nvidia_compiler_checks.gvy index 1e5fc1615..214cf1656 100644 --- a/.jenkins/nvidia_compiler_checks.gvy +++ b/.jenkins/nvidia_compiler_checks.gvy @@ -1,7 +1,7 @@ pipeline{ agent { node { - label 'della_rk9481' + label 'della-rse_specfempp' } } stages{ @@ -92,7 +92,7 @@ pipeline{ module load ${CUDA_MODULE} cd build_cuda_${CUDA_COMPILER_NAME}_${CMAKE_HOST_NAME}_${CMAKE_DEVICE_NAME}_${SIMD_NAME}_${env.BUILD_TAG}/tests/unit-tests export BUILD_DIR=build_cuda_${CUDA_COMPILER_NAME}_${CMAKE_HOST_NAME}_${CMAKE_DEVICE_NAME}_${SIMD_NAME}_${env.BUILD_TAG} - srun -N 1 -t 00:30:00 ${HOST_RUN_FLAGS} ${DEVICE_RUN_FLAGS} bash -c 'export OMP_PROC_BIND=spread; export OMP_THREADS=places; ctest -j 10 --output-on-failure;' + srun -N 1 -t 00:30:00 --account rse ${HOST_RUN_FLAGS} ${DEVICE_RUN_FLAGS} bash -c 'export OMP_PROC_BIND=spread; export OMP_THREADS=places; ctest -j 10 --output-on-failure;' """ echo ' Testing completed ' } diff --git a/CMakeLists.txt b/CMakeLists.txt index 256007e45..22c3c4061 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,8 @@ set(CMAKE_CXX_STANDARD 17) option(SPECFEM_ENABLE_ADIOS2 "Enable ADIOS2 I/O in SPECFEM++" OFF) option(SPECFEM_ENABLE_HDF5 "Enable HDF5 I/O in SPECFEM++" OFF) option(SPECFEM_ENABLE_HDF5_FORCE_INSTALL "Force install HDF5 dependency if SPECFEM_ENABLE_HDF5 is ON even if system HDF5 is found" OFF) +option(SPECFEM_ENABLE_NPZ "Enable NPZ I/O in SPECFEM++" OFF) +option(SPECFEM_ENABLE_ZLIB_FORCE_INSTALL "Force install ZLIB dependency even if system ZLIB is found" OFF) option(SPECFEM_ENABLE_VTK "Enable VTK visualization in SPECFEM++" ON) option(SPECFEM_ENABLE_MPI "MPI enabled" OFF) option(SPECFEM_BUILD_TESTS "Tests included" OFF) @@ -103,6 +105,9 @@ include("${CMAKE_SOURCE_DIR}/cmake/boost.cmake") # Find HDF5 include("${CMAKE_SOURCE_DIR}/cmake/hdf5.cmake") +# Find or install NPZ library function +include("${CMAKE_SOURCE_DIR}/cmake/npz.cmake") + # Find or install ADIOS2 library function include("${CMAKE_SOURCE_DIR}/cmake/adios2.cmake") @@ -195,10 +200,14 @@ target_link_libraries( add_library( io + # IO libraries + src/io/NPY/impl/npy_header.cpp + # SPECFEM IO src/io/fortranio/fortran_io.cpp src/io/sources/dim2/read_sources.cpp src/io/sources/dim3/read_sources.cpp - src/io/receivers.cpp + src/io/receivers/dim2/read_receivers.cpp + src/io/receivers/dim3/read_receivers.cpp # Fortran 2D part src/io/mesh/impl/fortran/dim2/mesh.cpp src/io/mesh/impl/fortran/dim2/read_boundaries.cpp @@ -223,6 +232,7 @@ target_link_libraries( specfem::receivers yaml-cpp boost + $<$:zlib> $<$:hdf5> $<$:adios2> ) @@ -230,6 +240,7 @@ target_link_libraries( target_compile_definitions( io PUBLIC + $<$>:-DNO_NPZ> $<$>:-DNO_HDF5> $<$>:-DNO_ADIOS2> ) @@ -245,6 +256,7 @@ add_library( target_link_libraries( enumerations ${BOOST_LIBS} + Kokkos::kokkos ) @@ -396,17 +408,6 @@ target_link_libraries( # Disable unity build for source_time_function due to KOKKOS_INLINE_FUNCTION issues set_target_properties(source_time_function PROPERTIES UNITY_BUILD OFF) - -add_library(coupled_interface - src/coupled_interface/coupled_interface.cpp -) - -target_link_libraries( - coupled_interface - Kokkos::kokkos - assembly -) - add_library( kokkos_kernels src/kokkos_kernels/impl/compute_mass_matrix.cpp @@ -416,9 +417,13 @@ add_library( src/kokkos_kernels/impl/compute_source_interaction.cpp src/kokkos_kernels/impl/compute_stiffness_interaction.cpp src/kokkos_kernels/impl/compute_material_derivatives.cpp + src/kokkos_kernels/impl/compute_coupling.cpp src/kokkos_kernels/frechet_kernels.cpp ) -set_target_properties(kokkos_kernels PROPERTIES UNITY_BUILD_BATCH_SIZE 4) +set_target_properties(kokkos_kernels PROPERTIES + UNITY_BUILD $> + UNITY_BUILD_BATCH_SIZE $,0,4> +) target_link_libraries( kokkos_kernels @@ -479,6 +484,7 @@ target_link_libraries( periodic_tasks reader writer + io ) target_compile_definitions( @@ -545,7 +551,6 @@ target_link_libraries( writer periodic_tasks reader - coupled_interface kokkos_kernels solver ${BOOST_LIBS} @@ -580,7 +585,6 @@ target_link_libraries( writer periodic_tasks reader - coupled_interface kokkos_kernels solver ${BOOST_LIBS} diff --git a/CMakePresets.json b/CMakePresets.json index 8682c5fe2..9baefd82f 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -104,6 +104,8 @@ "SPECFEM_ENABLE_MPI": "OFF", "SPECFEM_BUILD_BENCHMARKS": "ON", "SPECFEM_ENABLE_ADIOS2": "ON", + "SPECFEM_ENABLE_NPZ": "ON", + "SPECFEM_ENABLE_ZLIB_FORCE_INSTALL": "ON", "SPECFEM_ENABLE_HDF5": "ON", "SPECFEM_ENABLE_HDF5_FORCE_INSTALL": "ON", "SPECFEM_BENCHMARKS_BUILD_DIR": "${sourceDir}/benchmarks/build/release-io" diff --git a/benchmarks/src/CMakeFiles/nightly_benchmarks.smk.in b/benchmarks/src/CMakeFiles/nightly_benchmarks.smk.in new file mode 100644 index 000000000..fabcdab6f --- /dev/null +++ b/benchmarks/src/CMakeFiles/nightly_benchmarks.smk.in @@ -0,0 +1,50 @@ +SPECFEM_BIN = "@CMAKE_BINARY_DIR@/bin/specfem2d" +MESHFEM_BIN = "@CMAKE_BINARY_DIR@/bin/xmeshfem2D" + +configfile: "@SPECFEM_BENCHMARKS_BUILD_DIR@/nightly_config.yaml" + +rule all: + input: + expand( + "@SPECFEM_BENCHMARKS_BUILD_DIR@/dim2/{module}/benchmark/profiles.json", + module=[benchmark["name"] for benchmark in config["benchmarks"]] + ), + +rule profiles: + input: + "@SPECFEM_BENCHMARKS_BUILD_DIR@/dim2/{module}/benchmark/output.log" + output: + "@SPECFEM_BENCHMARKS_BUILD_DIR@/dim2/{module}/benchmark/profiles.json" + shell: + """ + # get hardware information + echo -e "\n# Current Time" > {wildcards.module}_profiles.txt + date >> {wildcards.module}_profiles.txt + echo -e "# Benchmark: {wildcards.module}" >> {wildcards.module}_profiles.txt + echo -e "\n# Hardware Information" >> {wildcards.module}_profiles.txt + lscpu >> {wildcards.module}_profiles.txt + # Extract Kokkos profiling information + echo -e "\n# Kokkos Profiling Information" >> {wildcards.module}_profiles.txt + profile=$(grep 'KokkosP: Kernel timing written' {input} | awk '{{print $NF}}') + ~/kokkos-tools/profiling/simple-kernel-timer/kp_reader ${{profile}} >> {wildcards.module}_profiles.txt + # Parse the log file to extract relevant information + python3 @SPECFEM_BENCHMARKS_BUILD_DIR@/run_parser.py {wildcards.module}_profiles.txt -o {output} + + rm {wildcards.module}_profiles.txt + """ + +for benchmark in config["benchmarks"]: + module_name = benchmark["name"] + alias = f'{module_name}_' + run_solver_alias = f'{alias}run_solver' + module: + name: module_name + snakefile: benchmark["snakefile"] + + use rule * from module_name as alias* + + use rule run_solver from module_name as run_solver_alias with: + params: + KOKKOS_TOOLS_LIBS="~/kokkos-tools/profiling/simple-kernel-timer/kp_kernel_timer.so" + output: + log=f"@SPECFEM_BENCHMARKS_BUILD_DIR@/dim2/{module_name}/benchmark/output.log" diff --git a/benchmarks/src/CMakeFiles/nightly_config.yaml.in b/benchmarks/src/CMakeFiles/nightly_config.yaml.in new file mode 100644 index 000000000..ae9221b62 --- /dev/null +++ b/benchmarks/src/CMakeFiles/nightly_config.yaml.in @@ -0,0 +1,7 @@ +benchmarks: + - name: homogeneous_medium_flat_topography + description: "Benchmark for homogeneous medium with flat topography" + snakefile: "@SPECFEM_BENCHMARKS_BUILD_DIR@/dim2/homogeneous-medium-flat-topography/Snakefile" + - name: fluid_solid_interface + description: "Benchmark for fluid-solid interface" + snakefile: "@SPECFEM_BENCHMARKS_BUILD_DIR@/dim2/fluid-solid-interface/Snakefile" diff --git a/benchmarks/src/CMakeLists.txt b/benchmarks/src/CMakeLists.txt index cd92c06c7..a24819d93 100644 --- a/benchmarks/src/CMakeLists.txt +++ b/benchmarks/src/CMakeLists.txt @@ -20,5 +20,15 @@ add_subdirectory(dim2/Tromp_2005) add_subdirectory(dim2/poroelastic-semi-infinite) add_subdirectory(dim2/homogeneous-cosserat) +configure_file(CMakeFiles/nightly_benchmarks.smk.in ${SPECFEM_BENCHMARKS_BUILD_DIR}/nightly_benchmarks.smk @ONLY) +configure_file(CMakeFiles/nightly_config.yaml.in ${SPECFEM_BENCHMARKS_BUILD_DIR}/nightly_config.yaml @ONLY) + +## Copy entire nightly_benchmarks directory +file(COPY + ${CMAKE_CURRENT_SOURCE_DIR}/nightly_benchmarks + ${CMAKE_CURRENT_SOURCE_DIR}/run_parser.py + DESTINATION ${SPECFEM_BENCHMARKS_BUILD_DIR} +) + # 3D add_subdirectory(dim3/homogeneous_halfspace) diff --git a/benchmarks/src/dim2/Tromp_2005/CMakeFiles/Snakefile.in b/benchmarks/src/dim2/Tromp_2005/CMakeFiles/Snakefile.in index eddbfa064..5b7b7cc15 100644 --- a/benchmarks/src/dim2/Tromp_2005/CMakeFiles/Snakefile.in +++ b/benchmarks/src/dim2/Tromp_2005/CMakeFiles/Snakefile.in @@ -35,7 +35,7 @@ rule forward_simulation: network_name=["AA"], component=["BXX", "BXZ"], ), - forward_wavefield="OUTPUT_FILES/ForwardWavefield.h5", + forward_wavefield=directory("OUTPUT_FILES/ForwardWavefield"), resources: nodes=1, tasks=1, diff --git a/benchmarks/src/dim2/Tromp_2005/CMakeFiles/adjoint_config.yaml.in b/benchmarks/src/dim2/Tromp_2005/CMakeFiles/adjoint_config.yaml.in index 09c002475..f59588908 100644 --- a/benchmarks/src/dim2/Tromp_2005/CMakeFiles/adjoint_config.yaml.in +++ b/benchmarks/src/dim2/Tromp_2005/CMakeFiles/adjoint_config.yaml.in @@ -40,12 +40,12 @@ parameters: reader: wavefield: directory: "@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES" - format: HDF5 + format: npy writer: kernels: directory: "@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES" - format: ASCII + format: npy solver: time-marching: diff --git a/benchmarks/src/dim2/Tromp_2005/CMakeFiles/forward_config.yaml.in b/benchmarks/src/dim2/Tromp_2005/CMakeFiles/forward_config.yaml.in index b5bbbf3bf..df4fef8c0 100644 --- a/benchmarks/src/dim2/Tromp_2005/CMakeFiles/forward_config.yaml.in +++ b/benchmarks/src/dim2/Tromp_2005/CMakeFiles/forward_config.yaml.in @@ -29,7 +29,7 @@ parameters: format: ASCII wavefield: directory: "@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES" - format: HDF5 + format: npy for_adjoint_simulations: true solver: diff --git a/benchmarks/src/dim2/Tromp_2005/plot.py b/benchmarks/src/dim2/Tromp_2005/plot.py index dcde819c0..a1be94a06 100644 --- a/benchmarks/src/dim2/Tromp_2005/plot.py +++ b/benchmarks/src/dim2/Tromp_2005/plot.py @@ -4,16 +4,16 @@ # Load the kernels -def load_data(directory): - X = np.loadtxt(directory + "/elastic_psv_isotropic/X.txt") - Z = np.loadtxt(directory + "/elastic_psv_isotropic/Z.txt") - - rho = np.loadtxt(directory + "/elastic_psv_isotropic/rho.txt") - mu = np.loadtxt(directory + "/elastic_psv_isotropic/mu.txt") - kappa = np.loadtxt(directory + "/elastic_psv_isotropic/kappa.txt") - rhop = np.loadtxt(directory + "/elastic_psv_isotropic/rhop.txt") - alpha = np.loadtxt(directory + "/elastic_psv_isotropic/alpha.txt") - beta = np.loadtxt(directory + "/elastic_psv_isotropic/beta.txt") +def load_data(kernel_file): + X = np.load(kernel_file + "/elastic_psv_isotropic/X.npy") + Z = np.load(kernel_file + "/elastic_psv_isotropic/Z.npy") + + rho = np.load(kernel_file + "/elastic_psv_isotropic/rho.npy") + mu = np.load(kernel_file + "/elastic_psv_isotropic/mu.npy") + kappa = np.load(kernel_file + "/elastic_psv_isotropic/kappa.npy") + rhop = np.load(kernel_file + "/elastic_psv_isotropic/rhop.npy") + alpha = np.load(kernel_file + "/elastic_psv_isotropic/alpha.npy") + beta = np.load(kernel_file + "/elastic_psv_isotropic/beta.npy") return X, Z, rho, kappa, mu, rhop, alpha, beta diff --git a/benchmarks/src/dim2/fluid-solid-interface/CMakeFiles/Snakefile.in b/benchmarks/src/dim2/fluid-solid-interface/CMakeFiles/Snakefile.in index f20170aa6..77b7515e2 100644 --- a/benchmarks/src/dim2/fluid-solid-interface/CMakeFiles/Snakefile.in +++ b/benchmarks/src/dim2/fluid-solid-interface/CMakeFiles/Snakefile.in @@ -4,34 +4,34 @@ MESHFEM_BIN = "@CMAKE_BINARY_DIR@/bin/xmeshfem2D" rule all: input: - plotX="OUTPUT_FILES/results/traces_X.png", - plotZ="OUTPUT_FILES/results/traces_Z.png", + plotX="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results/traces_X.png", + plotZ="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results/traces_Z.png", localrule: True rule generate_mesh: input: - "Par_File", + "@CURRENT_BENCHMARK_BUILD_DIR@/Par_File", output: - database="OUTPUT_FILES/database.bin", - stations="OUTPUT_FILES/STATIONS", + database="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/database.bin", + stations="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/STATIONS", localrule: True shell: """ - mkdir -p OUTPUT_FILES + mkdir -p @CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES {MESHFEM_BIN} -p {input} """ rule run_solver: input: - database="OUTPUT_FILES/database.bin", - stations="OUTPUT_FILES/STATIONS", - source="sources.yaml", - config="specfem_config.yaml", + database="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/database.bin", + stations="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/STATIONS", + source="@CURRENT_BENCHMARK_BUILD_DIR@/sources.yaml", + config="@CURRENT_BENCHMARK_BUILD_DIR@/specfem_config.yaml", output: seismograms=expand( - "OUTPUT_FILES/results/{network_name}.{station_name}.S2.{component}.semd", + "@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results/{network_name}.{station_name}.S2.{component}.semd", station_name=[ "S0001", "S0002", @@ -48,6 +48,7 @@ rule run_solver: network_name=["AA"], component=["BXX", "BXZ"], ), + log="@CURRENT_BENCHMARK_BUILD_DIR@/output.log", resources: nodes=1, tasks=1, @@ -57,16 +58,17 @@ rule run_solver: """ # module purge # module load boost/1.73.0 - mkdir -p OUTPUT_FILES/results - echo "Hostname: $(hostname)" > output.log - {SPECFEM_BIN} -p {input.config} >> output.log + export KOKKOS_TOOLS_LIBS={params.KOKKOS_TOOLS_LIBS} + mkdir -p @CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results + echo "Hostname: $(hostname)" > {output.log} + {SPECFEM_BIN} -p {input.config} >> {output.log} """ rule plot_seismogram: input: trace_files=expand( - "OUTPUT_FILES/results/{network_name}.{station_name}.S2.{component}.semd", + "@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results/{network_name}.{station_name}.S2.{component}.semd", station_name=[ "S0001", "S0002", @@ -84,8 +86,8 @@ rule plot_seismogram: component=["BXX", "BXZ"], ), output: - traces_X="OUTPUT_FILES/results/traces_X.png", - traces_Z="OUTPUT_FILES/results/traces_Z.png", + traces_X="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results/traces_X.png", + traces_Z="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results/traces_Z.png", localrule: True run: import glob @@ -124,7 +126,7 @@ rule plot_seismogram: return stream - stream = get_traces("OUTPUT_FILES/results") + stream = get_traces("@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results") stream.select(component='X').plot(size=(800, 1000)).savefig(output.traces_X) stream.select(component='Z').plot(size=(800, 1000)).savefig(output.traces_Z) @@ -133,5 +135,5 @@ rule plot_seismogram: rule clean: shell: """ - rm -rf OUTPUT_FILES + rm -rf @CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES """ diff --git a/benchmarks/src/dim2/homogeneous-medium-flat-topography/CMakeFiles/Snakefile.in b/benchmarks/src/dim2/homogeneous-medium-flat-topography/CMakeFiles/Snakefile.in index 6ade2a30d..f5b21b387 100644 --- a/benchmarks/src/dim2/homogeneous-medium-flat-topography/CMakeFiles/Snakefile.in +++ b/benchmarks/src/dim2/homogeneous-medium-flat-topography/CMakeFiles/Snakefile.in @@ -4,38 +4,39 @@ MESHFEM_BIN = "@CMAKE_BINARY_DIR@/bin/xmeshfem2D" rule all: input: - traces_X="OUTPUT_FILES/results/traces_X.png", - traces_Z="OUTPUT_FILES/results/traces_Z.png", + traces_X="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results/traces_X.png", + traces_Z="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results/traces_Z.png", localrule: True rule generate_mesh: input: - "Par_File", + "@CURRENT_BENCHMARK_BUILD_DIR@/Par_File", output: - database="OUTPUT_FILES/database.bin", - stations="OUTPUT_FILES/STATIONS", + database="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/database.bin", + stations="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/STATIONS", localrule: True shell: """ - mkdir -p OUTPUT_FILES + mkdir -p @CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES {MESHFEM_BIN} -p {input} """ rule run_solver: input: - database="OUTPUT_FILES/database.bin", - stations="OUTPUT_FILES/STATIONS", - source="source.yaml", - config="specfem_config.yaml", + database="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/database.bin", + stations="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/STATIONS", + source="@CURRENT_BENCHMARK_BUILD_DIR@/source.yaml", + config="@CURRENT_BENCHMARK_BUILD_DIR@/specfem_config.yaml", output: seismograms=expand( - "OUTPUT_FILES/results/{network_name}.{station_name}.S2.{component}.semv", + "@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results/{network_name}.{station_name}.S2.{component}.semv", station_name=["S0001", "S0002", "S0003", "S0004", "S0005", "S0006"], network_name=["AA"], component=["BXX", "BXZ"], ), + log="@CURRENT_BENCHMARK_BUILD_DIR@/output.log", resources: nodes=1, tasks=1, @@ -45,23 +46,24 @@ rule run_solver: """ # module purge # module load boost/1.73.0 - mkdir -p OUTPUT_FILES/results - echo "Hostname: $(hostname)" > output.log - {SPECFEM_BIN} -p {input.config} >> output.log + export KOKKOS_TOOLS_LIBS={params.KOKKOS_TOOLS_LIBS} + mkdir -p @CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results + echo "Hostname: $(hostname)" > {output.log} + {SPECFEM_BIN} -p {input.config} >> {output.log} """ rule plot_seismogram: input: trace_files=expand( - "OUTPUT_FILES/results/{network_name}.{station_name}.S2.{component}.semv", + "@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results/{network_name}.{station_name}.S2.{component}.semv", station_name=["S0001", "S0002", "S0003", "S0004", "S0005", "S0006"], network_name=["AA"], component=["BXX", "BXZ"], ), output: - traces_X="OUTPUT_FILES/results/traces_X.png", - traces_Z="OUTPUT_FILES/results/traces_Z.png" + traces_X="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results/traces_X.png", + traces_Z="@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results/traces_Z.png" localrule: True run: import glob @@ -98,7 +100,7 @@ rule plot_seismogram: return stream - stream = get_traces("OUTPUT_FILES/results") + stream = get_traces("@CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES/results") stream.select(component='X').plot(size=(800, 1000)).savefig(output.traces_X) stream.select(component='Z').plot(size=(800, 1000)).savefig(output.traces_Z) @@ -107,5 +109,5 @@ rule clean: localrule: True shell: """ - rm -rf OUTPUT_FILES + rm -rf @CURRENT_BENCHMARK_BUILD_DIR@/OUTPUT_FILES """ diff --git a/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/Mesh_Par_file.in b/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/Mesh_Par_file.in index eb5c9cb59..9d935f8c9 100644 --- a/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/Mesh_Par_file.in +++ b/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/Mesh_Par_file.in @@ -30,8 +30,8 @@ NGNOD = 8 # number of elements at the surface along edges of the mesh at the surface # (must be 8 * multiple of NPROC below if mesh is not regular and contains mesh doublings) # (must be multiple of NPROC below if mesh is regular) -NEX_XI = 10 -NEX_ETA = 8 +NEX_XI = 15 +NEX_ETA = 12 # number of MPI processors along xi and eta (can be different) NPROC_XI = 1 @@ -94,7 +94,7 @@ NMATERIALS = 1 # Q_mu : Q_mu attenuation quality factor # anisotropy_flag : 0 = no anisotropy / 1,2,... check the implementation in file aniso_model.f90 # domain_id : 1 = acoustic / 2 = elastic -1 2300.0 2800.0 1500.0 2444.4 300.0 0 2 +1 2300.0 2800.0 1500.0 0 0 0 2 #----------------------------------------------------------- # @@ -106,4 +106,4 @@ NMATERIALS = 1 NREGIONS = 1 # define the different regions of the model as : #NEX_XI_BEGIN #NEX_XI_END #NEX_ETA_BEGIN #NEX_ETA_END #NZ_BEGIN #NZ_END #material_id -1 10 1 8 1 6 1 +1 15 1 12 1 9 1 diff --git a/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/Par_File.in b/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/Par_File.in index 89f68be3e..dacece77f 100644 --- a/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/Par_File.in +++ b/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/Par_File.in @@ -26,8 +26,8 @@ SUPPRESS_UTM_PROJECTION = .true. NPROC = 1 # time step parameters -NSTEP = 5000 -DT = 0.05 +NSTEP = 1000 +DT = 0.04 # set to true to use local-time stepping (LTS) LTS_MODE = .false. diff --git a/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/interfaces.txt.in b/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/interfaces.txt.in index 44733be99..849adccfb 100644 --- a/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/interfaces.txt.in +++ b/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/interfaces.txt.in @@ -13,4 +13,4 @@ # for each layer, we give the number of spectral elements in the vertical direction # # layer number 1 (top layer) -6 + 9 diff --git a/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/specfem_config.yaml.in b/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/specfem_config.yaml.in index faa4ccf43..1a47deb96 100644 --- a/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/specfem_config.yaml.in +++ b/benchmarks/src/dim3/homogeneous_halfspace/CMakeFiles/specfem_config.yaml.in @@ -20,8 +20,8 @@ parameters: time-marching: time-scheme: type: Newmark - dt: 1.1e-3 - nstep: 1600 + dt: 4e-2 + nstep: 1000 simulation-mode: forward: diff --git a/benchmarks/src/dim3/homogeneous_halfspace/DATA/CMTSOLUTION b/benchmarks/src/dim3/homogeneous_halfspace/DATA/CMTSOLUTION deleted file mode 100644 index 3d78a2e2f..000000000 --- a/benchmarks/src/dim3/homogeneous_halfspace/DATA/CMTSOLUTION +++ /dev/null @@ -1,13 +0,0 @@ -PDE 1999 01 01 00 00 00.00 67000 67000 -25000 4.2 4.2 homog_test -event name: homog_test -time shift: 0.0000 -half duration: 5.0 -latorUTM: 67000.0 -longorUTM: 67000.0 -depth: 30.0 -Mrr: -7.600000e+27 -Mtt: 7.700000e+27 -Mpp: -2.000000e+26 -Mrt: -2.500000e+28 -Mrp: 4.000000e+26 -Mtp: -2.500000e+27 diff --git a/benchmarks/src/dim3/homogeneous_halfspace/DATA/FORCESOLUTION b/benchmarks/src/dim3/homogeneous_halfspace/DATA/FORCESOLUTION new file mode 100644 index 000000000..04827be97 --- /dev/null +++ b/benchmarks/src/dim3/homogeneous_halfspace/DATA/FORCESOLUTION @@ -0,0 +1,11 @@ +FORCE 001 +time shift: 0.0000 +hdurorf0: 0.25 +latorUTM: 40000.0 +longorUTM: 50000.0 +depth: 30.0 +source time function: 1 +factor force source: 1.d14 +component dir vect source E: 0.d0 +component dir vect source N: 0.d0 +component dir vect source Z_UP: 1.d0 diff --git a/benchmarks/src/dim3/homogeneous_halfspace/DATA/STATIONS b/benchmarks/src/dim3/homogeneous_halfspace/DATA/STATIONS new file mode 100644 index 000000000..975f7bc1b --- /dev/null +++ b/benchmarks/src/dim3/homogeneous_halfspace/DATA/STATIONS @@ -0,0 +1,9 @@ +X55 DB 40000.00 55000.00 0.0 0.0 +X60 DB 41000.00 60000.00 0.0 0.0 +X65 DB 42000.00 65000.00 0.0 0.0 +X70 DB 44000.00 70000.00 0.0 0.0 +X75 DB 48000.00 75000.00 0.0 0.0 +X80 DB 51000.00 80000.00 0.0 0.0 +X85 DB 54000.00 85000.00 0.0 0.0 +X90 DB 58000.00 90000.00 0.0 0.0 +X95 DB 62000.00 95000.00 0.0 0.0 diff --git a/benchmarks/src/dim3/homogeneous_halfspace/force.yaml b/benchmarks/src/dim3/homogeneous_halfspace/force.yaml index f5a0b9c72..958750ef3 100644 --- a/benchmarks/src/dim3/homogeneous_halfspace/force.yaml +++ b/benchmarks/src/dim3/homogeneous_halfspace/force.yaml @@ -5,11 +5,10 @@ sources: y : 40000.0 z : -30000.0 source_surf: false - angle : 0.0 fx : 0.0 fy : 0.0 fz : 1.0 Ricker: - factor: 1e10 - tshift: 5.0 - f0: 10.0 + factor: 1e14 + tshift: 0.0 + f0: 0.25 diff --git a/benchmarks/src/dim3/homogeneous_halfspace/plot_seismograms.py b/benchmarks/src/dim3/homogeneous_halfspace/plot_seismograms.py new file mode 100644 index 000000000..4eb1bc40f --- /dev/null +++ b/benchmarks/src/dim3/homogeneous_halfspace/plot_seismograms.py @@ -0,0 +1,215 @@ +import numpy as np +import matplotlib.pyplot as plt +import matplotlib.gridspec as gridspec +import glob +from matplotlib.patches import Circle + + +def read_stations(filename): + """Read STATIONS file""" + stations = [] + with open(filename, "r") as f: + for line in f: + if line.strip(): + parts = line.strip().split() + station = parts[0] + network = parts[1] + y = float(parts[2]) # latitude/UTM_Y + x = float(parts[3]) # longitude/UTM_X + elevation = float(parts[4]) + burial = float(parts[5]) + stations.append( + { + "station": station, + "network": network, + "x": x, + "y": y, + "elevation": elevation, + "burial": burial, + } + ) + return stations + + +def read_forcesolution(filename): + """Read FORCESOLUTION file""" + source = {} + with open(filename, "r") as f: + for line in f: + if line.strip(): + if "latorUTM:" in line: + source["y"] = float(line.split(":")[1].strip()) + elif "longorUTM:" in line: + source["x"] = float(line.split(":")[1].strip()) + elif "depth:" in line: + source["depth"] = float(line.split(":")[1].strip()) + return source + + +def read_seismogram(filename): + """Read seismogram file""" + data = np.loadtxt(filename) + return data[:, 0], data[:, 1] # time, displacement + + +def calculate_epicentral_distance(station_x, station_y, source_x, source_y): + """Calculate epicentral distance""" + return np.sqrt((station_x - source_x) ** 2 + (station_y - source_y) ** 2) + + +def main(): + # Read station and source data + stations = read_stations("DATA/STATIONS") + source = read_forcesolution("DATA/FORCESOLUTION") + + # Calculate epicentral distances and sort stations + for station in stations: + station["distance"] = calculate_epicentral_distance( + station["x"], station["y"], source["x"], source["y"] + ) + + stations_sorted = sorted(stations, key=lambda x: x["distance"]) + + # Create figure with gridspec for 1 row x 4 columns + fig = plt.figure(figsize=(20, 6)) + gs = gridspec.GridSpec(1, 4, width_ratios=[2, 1, 1, 1], hspace=0.3, wspace=0.3) + + # Subplot 1: Source-Station geometry with circular grid (larger) + ax1 = fig.add_subplot(gs[0, 0]) + + # Plot stations + for station in stations: + ax1.plot( + station["x"], + station["y"], + "rv", + markersize=8, + label="Stations" if station == stations[0] else "", + ) + ax1.text( + station["x"], + station["y"] + 1000, + station["station"], + ha="center", + va="bottom", + fontsize=8, + ) + + # Plot source + ax1.plot(source["x"], source["y"], "r*", markersize=15, label="Source") + + # Add circular distance grid + max_dist = max([s["distance"] for s in stations]) + circles = [5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000] + for radius in circles: + if radius <= max_dist * 1.2: + circle = Circle( + (source["x"], source["y"]), + radius, + fill=False, + linestyle="--", + alpha=0.3, + color="gray", + ) + ax1.add_patch(circle) + # Add distance labels + ax1.text( + source["x"] + radius * 0.7, + source["y"] + radius * 0.7, + f"{radius / 1000:.0f}km", + fontsize=8, + alpha=0.7, + ) + + ax1.set_xlabel("X (UTM)") + ax1.set_ylabel("Y (UTM)") + ax1.set_title("Source-Station Geometry") + ax1.legend() + ax1.grid(True, alpha=0.3) + ax1.set_aspect("equal") + + # Find seismogram files + seismogram_files = { + "BXX": sorted(glob.glob("OUTPUT_FILES/*.BXX.semd")), + "BXY": sorted(glob.glob("OUTPUT_FILES/*.BXY.semd")), + "BXZ": sorted(glob.glob("OUTPUT_FILES/*.BXZ.semd")), + } + + # Read all seismograms and find common time range + all_seismograms = {} + time_range = None + max_displacement = 0 + + for component in ["BXX", "BXY", "BXZ"]: + all_seismograms[component] = {} + for filename in seismogram_files[component]: + # Extract station name from filename + station_name = filename.split("/")[-1].split(".")[1] + time, displacement = read_seismogram(filename) + all_seismograms[component][station_name] = (time, displacement) + + # Update global ranges + if time_range is None: + time_range = (time.min(), time.max()) + else: + time_range = ( + min(time_range[0], time.min()), + max(time_range[1], time.max()), + ) + max_displacement = max(max_displacement, np.abs(displacement).max()) + + # Plot seismograms for each component + components = ["BXX", "BXY", "BXZ"] + + for i, component in enumerate(components): + ax = fig.add_subplot(gs[0, i + 1]) + + # Plot seismograms sorted by epicentral distance + y_spacing = max_displacement * 2.5 + + for j, station in enumerate(stations_sorted): + station_name = station["station"] + if station_name in all_seismograms[component]: + time, displacement = all_seismograms[component][station_name] + + # Normalize and offset displacement + normalized_disp = displacement / max_displacement * y_spacing * 0.8 + y_pos = j * y_spacing + + ax.plot(time, normalized_disp + y_pos, "k-", linewidth=0.8) + + # Add station label and distance + ax.text( + time_range[0] - (time_range[1] - time_range[0]) * 0.05, + y_pos, + f"{station_name}\n({station['distance'] / 1000:.1f}km)", + ha="right", + va="center", + fontsize=8, + ) + + ax.set_xlabel("Time (s)") + ax.set_title(f"Component {component}") + ax.set_xlim(time_range) + ax.grid(True, alpha=0.3) + + # Set y-axis limits to show all traces properly + if len(stations_sorted) > 0: + ax.set_ylim( + -y_spacing * 0.5, + (len(stations_sorted) - 1) * y_spacing + y_spacing * 0.5, + ) + + # Remove y-tick labels since they're just offsets + ax.set_yticklabels([]) + + # Set aspect ratio for seismogram plots to be consistent + ax.set_aspect("auto") + + plt.tight_layout() + plt.savefig("seismogram_plot.png", dpi=150, bbox_inches="tight") + plt.show() + + +if __name__ == "__main__": + main() diff --git a/benchmarks/src/nightly_benchmarks/cli.py b/benchmarks/src/nightly_benchmarks/cli.py new file mode 100644 index 000000000..a7f6ddb77 --- /dev/null +++ b/benchmarks/src/nightly_benchmarks/cli.py @@ -0,0 +1,32 @@ +import argparse +from .kp_parser import ( + parse_kokkos_output, + parse_regions_section, + parse_metadata, + total_execution_time, +) +from .io_utils import read_file, write_json + + +def main(): + parser = argparse.ArgumentParser(description="Parse Kokkos profiler output.") + parser.add_argument("profile", help="Path to kokkos profiler output file") + parser.add_argument( + "-o", "--output", default="output.json", help="Path to save parsed output JSON" + ) + + args = parser.parse_args() + + text = read_file(args.profile) + df_kernels = parse_kokkos_output(text) + df_regions = parse_regions_section(text) + metadata = parse_metadata(text) + total_time = total_execution_time(text) + ## append total execution time to metadata + metadata["total_execution_time"] = total_time + # Save outputs + write_json(metadata, df_kernels, df_regions, args.output) + + print(f"Parsed output saved to {args.output}") + print(f"Total execution time: {total_time} seconds") + return 0 diff --git a/benchmarks/src/nightly_benchmarks/io_utils.py b/benchmarks/src/nightly_benchmarks/io_utils.py new file mode 100644 index 000000000..72bc5ba64 --- /dev/null +++ b/benchmarks/src/nightly_benchmarks/io_utils.py @@ -0,0 +1,22 @@ +def read_file(path: str) -> str: + """Read a text file and return its content as a string.""" + with open(path, "r") as f: + return f.read() + + +def write_csv(df, path: str) -> None: + """Write a DataFrame to CSV.""" + df.to_csv(path, index=False) + + +def write_json(metadata, df_kernels, df_regions, path: str) -> None: + """Write DataFrames to JSON.""" + import json + + output = { + "metadata": metadata, + "kernels": df_kernels.to_dict(orient="records"), + "regions": df_regions.to_dict(orient="records"), + } + with open(path, "w") as f: + json.dump(output, f, indent=4) diff --git a/benchmarks/src/nightly_benchmarks/kp_parser.py b/benchmarks/src/nightly_benchmarks/kp_parser.py new file mode 100644 index 000000000..0c7d98f41 --- /dev/null +++ b/benchmarks/src/nightly_benchmarks/kp_parser.py @@ -0,0 +1,341 @@ +import re +import pandas as pd +from datetime import datetime +from typing import Dict, Any + + +def parse_regions_section(text: str) -> pd.DataFrame: + """ + Parse the Regions section of Kokkos profiler output into a pandas DataFrame. + """ + lines = text.splitlines() + regions = [] + i = 0 + + # Find the start of Regions section + while i < len(lines): + if lines[i].strip() == "Regions:": + i += 2 # Skip "Regions:" and empty line + break + i += 1 + + # Parse regions until we hit "Kernels:" section or end + while i < len(lines): + line = lines[i].strip() + + # Stop if we hit the Kernels section + if line.startswith("Kernels:") or line.startswith("-------------------------"): + break + + # Region name line + if line.startswith("- "): + region_name = line[2:].strip() + + # Next line contains numbers + if i + 1 < len(lines): + match = re.match( + r"\((\w+)\)\s+([\d\.]+)\s+(\d+)\s+([\d\.]+)\s+([\d\.]+)\s+([\d\.]+)", + lines[i + 1].strip(), + ) + if match: + exec_type, time, calls, avg, p1, p2 = match.groups() + regions.append( + { + "region": region_name, + "exec_type": exec_type, + "time": float(time), + "calls": int(calls), + "avg_time": float(avg), + "percent1": float(p1), + "percent2": float(p2), + } + ) + i += 1 # skip numeric line + i += 1 + + return pd.DataFrame(regions) + + +def parse_kernels_section(text: str) -> pd.DataFrame: + """ + Parse the Kernels section of Kokkos profiler output. + Returns a DataFrame with detailed kernel timing information. + """ + lines = text.splitlines() + kernels = [] + i = 0 + + # Find the start of Kernels section + while i < len(lines): + if lines[i].strip() == "Kernels:": + i += 2 # Skip "Kernels:" and empty line + break + i += 1 + + # Parse kernels until we hit summary section or end + while i < len(lines): + line = lines[i].strip() + + # Stop if we hit the summary section or another major section + if ( + line.startswith("-------------------------") + or line.startswith("Total Execution Time") + or line.startswith("# ") + or line == "" + ): + # Check if this is just a separator within kernels section + if line.startswith("-------------------------"): + # Look ahead to see if there's more kernel data + j = i + 1 + found_more_kernels = False + while j < len(lines) and j < i + 5: # Look ahead a few lines + next_line = lines[j].strip() + if ( + next_line + and not next_line.startswith("#") + and "(" in next_line + and ")" in next_line + ): + found_more_kernels = True + break + j += 1 + + if not found_more_kernels: + break + + # Parse kernel lines: "KERNEL_NAME(ARGS) COUNT TIME_PER_CALL TOTAL_TIME PERCENT" + if line and not line.startswith("#"): + # Use regex to parse kernel lines more robustly + kernel_pattern = r"^(.+?)\s+(\d+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)%?\s*$" + match = re.match(kernel_pattern, line) + + if match: + kernel_name = match.group(1).strip() + count = int(match.group(2)) + time_per_call = float(match.group(3)) + total_time = float(match.group(4)) + percent = float(match.group(5)) + + kernels.append( + { + "kernel_name": kernel_name, + "count": count, + "time_per_call": time_per_call, + "total_time": total_time, + "percent": percent, + } + ) + + i += 1 + + return pd.DataFrame(kernels) + + +def parse_kokkos_output(text: str) -> pd.DataFrame: + """ + Parse Kokkos profiler output into a pandas DataFrame. + """ + lines = text.splitlines() + kernels = [] + i = 0 + + # Find the start of Kernels section + while i < len(lines): + if lines[i].strip() == "Kernels:": + i += 2 # Skip "Kernels:" and empty line + break + i += 1 + + # Parse kernels until we hit summary section or end + while i < len(lines): + line = lines[i].strip() + + # Stop if we hit the summary section + if line.startswith("-------------------------"): + break + + # Kernel name line + if line.startswith("- "): + kernel_name = line[2:].strip() + + # Next line contains numbers + if i + 1 < len(lines): + match = re.match( + r"\((\w+)\)\s+([\d\.]+)\s+(\d+)\s+([\d\.]+)\s+([\d\.]+)\s+([\d\.]+)", + lines[i + 1].strip(), + ) + if match: + exec_type, time, calls, avg, p1, p2 = match.groups() + kernels.append( + { + "kernel": kernel_name, + "exec_type": exec_type, + "time": float(time), + "calls": int(calls), + "avg_time": float(avg), + "percent1": float(p1), + "percent2": float(p2), + } + ) + i += 1 # skip numeric line + i += 1 + + return pd.DataFrame(kernels) + + +def total_execution_time(text: str) -> float: + """ + Extract total execution time from the summary section of Kokkos profiler output. + """ + lines = text.splitlines() + total_time = 0.0 + + for line in lines: + if "Total Execution Time" in line: + match = re.search(r"Total Execution Time.*?:\s+([\d\.]+)", line) + if match: + total_time = float(match.group(1)) + break + + return total_time + + +def parse_metadata(text: str) -> Dict[str, Any]: + """ + Extract metadata information including timestamp, benchmark name, and hardware details. + """ + metadata = {} + lines = text.splitlines() + + hardware_info = {} + + for line in lines: + line = line.strip() + + # Extract current time + if line.startswith("# Current Time"): + continue + elif ( + line + and not line.startswith("#") + and "EDT" in line + or "EST" in line + or "PST" in line + or "PDT" in line + ): + # Parse timestamp line like "Tue Sep 16 03:32:35 PM EDT 2025" + try: + # Remove timezone abbreviations for parsing + cleaned_time = re.sub(r"\s+(EDT|EST|PST|PDT|UTC)\s+", " ", line) + # Try different datetime formats + for fmt in ["%a %b %d %I:%M:%S %p %Y", "%a %b %d %H:%M:%S %Y"]: + try: + parsed_time = datetime.strptime(cleaned_time, fmt) + metadata["timestamp"] = parsed_time.isoformat() + metadata["timestamp_raw"] = line + break + except ValueError: + continue + except Exception: + metadata["timestamp_raw"] = line + + # Extract benchmark name + elif line.startswith("# Benchmark:"): + benchmark_name = line.replace("# Benchmark:", "").strip() + metadata["benchmark_name"] = benchmark_name + + # Extract hardware information + elif ":" in line and not line.startswith("#"): + key, value = line.split(":", 1) + key = key.strip() + value = value.strip() + + # Map important hardware fields + hardware_fields = { + "Architecture": "architecture", + "CPU(s)": "cpu_count", + "Vendor ID": "cpu_vendor", + "Model name": "cpu_model", + "CPU family": "cpu_family", + "Model": "cpu_model_number", + "Thread(s) per core": "threads_per_core", + "Core(s) per socket": "cores_per_socket", + "Socket(s)": "socket_count", + "CPU max MHz": "cpu_max_mhz", + "CPU min MHz": "cpu_min_mhz", + "BogoMIPS": "bogomips", + "L1d cache": "l1d_cache", + "L1i cache": "l1i_cache", + "L2 cache": "l2_cache", + "L3 cache": "l3_cache", + "NUMA node(s)": "numa_nodes", + } + + if key in hardware_fields: + field_name = hardware_fields[key] + # Convert numeric fields + if field_name in [ + "cpu_count", + "cpu_family", + "cpu_model_number", + "threads_per_core", + "cores_per_socket", + "socket_count", + "numa_nodes", + ]: + try: + hardware_info[field_name] = int(value) + except ValueError: + hardware_info[field_name] = value + elif field_name in ["cpu_max_mhz", "cpu_min_mhz", "bogomips"]: + try: + hardware_info[field_name] = float(value) + except ValueError: + hardware_info[field_name] = value + else: + hardware_info[field_name] = value + # Calculate derived metrics + if "cpu_count" in hardware_info and "socket_count" in hardware_info: + hardware_info["cpus_per_socket"] = ( + hardware_info["cpu_count"] // hardware_info["socket_count"] + ) + + if "cores_per_socket" in hardware_info and "threads_per_core" in hardware_info: + hardware_info["logical_cores_per_socket"] = ( + hardware_info["cores_per_socket"] * hardware_info["threads_per_core"] + ) + + # Add parsing timestamp + metadata["hardware"] = hardware_info + + return metadata + + +def parse_complete_kokkos_output(filepath): + """Parse Kokkos profiler output file and return all structured data.""" + with open(filepath, "r") as f: + content = f.read() + + result = {} + + # Parse metadata (timestamp, benchmark name, hardware info) + metadata = parse_metadata(content) + if metadata: + result["metadata"] = metadata + + # Parse regions section (high-level operations) + regions_df = parse_regions_section(content) + if not regions_df.empty: + result["regions"] = regions_df + + # Parse kernels section (detailed kernel operations) + kernels_df = parse_kernels_section(content) + if not kernels_df.empty: + result["kernels"] = kernels_df + + # Calculate total execution time + total_time = total_execution_time(content) + if total_time is not None: + result["total_execution_time"] = total_time + + return result diff --git a/benchmarks/src/run_parser.py b/benchmarks/src/run_parser.py new file mode 100644 index 000000000..85d22bf30 --- /dev/null +++ b/benchmarks/src/run_parser.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python3 +import sys +from nightly_benchmarks.cli import main + +if __name__ == "__main__": + sys.exit(main()) diff --git a/cmake/npz.cmake b/cmake/npz.cmake new file mode 100644 index 000000000..049f694c4 --- /dev/null +++ b/cmake/npz.cmake @@ -0,0 +1,89 @@ +if (SPECFEM_ENABLE_NPZ) + # Prepend the CMAKE_MESSAGE_INDENT variable to ensure proper indentation in messages + list(APPEND CMAKE_MESSAGE_INDENT " NPZ: ") + + # First, try to find ZLIB system-wide (unless force install is enabled) + if(NOT SPECFEM_ENABLE_ZLIB_FORCE_INSTALL) + find_package(ZLIB QUIET) + endif() + + # If not found or force install is enabled, fetch and build ZLIB from source + if((NOT ZLIB_FOUND) OR (SPECFEM_ENABLE_ZLIB_FORCE_INSTALL)) + + # Disable unity build for here + set(SAVE_UNITY_BUILD ${CMAKE_UNITY_BUILD}) + set(CMAKE_UNITY_BUILD OFF) + + message(STATUS "Installing ZLIB from GitHub release...") + + include(FetchContent) + + # Set the specific version you want + set(SPECFEM_ZLIB_VERSION "1.3" CACHE STRING "ZLIB version to use for source install") + set(ZLIB_SOURCE_URL "https://github.com/madler/zlib/releases/download/v${SPECFEM_ZLIB_VERSION}/zlib-${SPECFEM_ZLIB_VERSION}.tar.gz") + + if (CMAKE_VERSION VERSION_LESS "3.28.0") + FetchContent_Declare( + zlib + URL ${ZLIB_SOURCE_URL} + DOWNLOAD_EXTRACT_TIMESTAMP FALSE + # URL_HASH SHA256=# Add the SHA256 hash here for verification (optional but recommended) + ) + + FetchContent_GetProperties(zlib) + if(NOT zlib_POPULATED) + FetchContent_Populate(zlib) + add_subdirectory(${zlib_SOURCE_DIR} ${zlib_BINARY_DIR} EXCLUDE_FROM_ALL) + endif() + else() + FetchContent_Declare( + zlib + URL ${ZLIB_SOURCE_URL} + DOWNLOAD_EXTRACT_TIMESTAMP FALSE + EXCLUDE_FROM_ALL + # URL_HASH SHA256=# Add the SHA256 hash here for verification (optional but recommended) + ) + + FetchContent_MakeAvailable(zlib) + endif() + + # Set variables that find_package would normally set + set(ZLIB_FOUND TRUE) + set(ZLIB_LIBRARIES zlibstatic) + set(ZLIB_INCLUDE_DIRS ${zlib_SOURCE_DIR} ${zlib_BINARY_DIR}) + + # Create alias target for modern CMake usage + if(NOT TARGET zlib) + add_library(zlib INTERFACE) + target_link_libraries(zlib INTERFACE zlibstatic) + target_include_directories(zlib INTERFACE ${ZLIB_INCLUDE_DIRS}) + endif() + + message(STATUS "ZLIB configured from source") + + # Restore the original unity build setting + set(CMAKE_UNITY_BUILD ${SAVE_UNITY_BUILD}) + + elseif(ZLIB_FOUND) + message(STATUS "Using system-wide ZLIB") + message(STATUS "ZLIB libs/ and incs/:.") + message(STATUS " LIB: ${ZLIB_LIBRARIES}") + message(STATUS " INC: ${ZLIB_INCLUDE_DIRS}") + + # Create alias target for modern CMake usage with system ZLIB + if(NOT TARGET zlib) + add_library(zlib INTERFACE) + target_link_libraries(zlib INTERFACE ${ZLIB_LIBRARIES}) + target_include_directories(zlib INTERFACE ${ZLIB_INCLUDE_DIRS}) + endif() + else () + message(STATUS "ZLIB not found.") + set(SPECFEM_ENABLE_ZLIB OFF CACHE BOOL "Disable ZLIB support" FORCE) + endif() + + # Pop the indentation for ZLIB messages + list(POP_BACK CMAKE_MESSAGE_INDENT) +else() + message(STATUS "NPZ support is disabled. Set SPECFEM_ENABLE_NPZ to ON to enable it.") + set(SPECFEM_ENABLE_NPZ OFF CACHE BOOL "Disable NPZ support" FORCE) +endif() diff --git a/core/specfem/assembly/assembly.hpp b/core/specfem/assembly/assembly.hpp index eef969304..d898e3c9a 100644 --- a/core/specfem/assembly/assembly.hpp +++ b/core/specfem/assembly/assembly.hpp @@ -12,7 +12,7 @@ namespace specfem::assembly { /** - * @brief Specialization of the assembly class for 2D finite element problems + * @brief Assembly class for finite element problems in different dimensions. * * @tparam DimensionTag */ diff --git a/core/specfem/assembly/assembly/dim2/assembly.cpp b/core/specfem/assembly/assembly/dim2/assembly.cpp index 90893beee..275bc146a 100644 --- a/core/specfem/assembly/assembly/dim2/assembly.cpp +++ b/core/specfem/assembly/assembly/dim2/assembly.cpp @@ -19,10 +19,12 @@ specfem::assembly::assembly::assembly( const std::shared_ptr &property_reader) { this->mesh = { mesh.tags, mesh.control_nodes, quadratures, mesh.adjacency_graph }; - this->element_types = { this->mesh.nspec, this->mesh.element_grid.ngllz, this->mesh.element_grid.ngllx, this->mesh, mesh.tags }; + this->edge_types = { this->mesh.element_grid.ngllx, + this->mesh.element_grid.ngllz, this->mesh, + this->element_types, mesh.coupled_interfaces }; this->jacobian_matrix = { this->mesh }; this->properties = { this->mesh.nspec, this->mesh.element_grid.ngllz, @@ -55,8 +57,9 @@ specfem::assembly::assembly::assembly( mesh, this->mesh, this->jacobian_matrix }; - this->coupled_interfaces = { mesh, this->mesh, this->jacobian_matrix, - this->element_types }; + this->coupled_interfaces = { this->mesh.element_grid.ngllz, + this->mesh.element_grid.ngllx, this->edge_types, + this->jacobian_matrix, this->mesh }; this->fields = { this->mesh, this->element_types, simulation }; if (allocate_boundary_values) diff --git a/core/specfem/assembly/assembly/dim2/assembly.hpp b/core/specfem/assembly/assembly/dim2/assembly.hpp index 62f40c68a..1cb0f1d96 100644 --- a/core/specfem/assembly/assembly/dim2/assembly.hpp +++ b/core/specfem/assembly/assembly/dim2/assembly.hpp @@ -7,6 +7,8 @@ #include "specfem/assembly/boundary_values.hpp" #include "specfem/assembly/compute_source_array.hpp" #include "specfem/assembly/coupled_interfaces.hpp" +#include "specfem/assembly/edge_types.hpp" +#include "specfem/assembly/element_types.hpp" #include "specfem/assembly/fields.hpp" #include "specfem/assembly/jacobian_matrix.hpp" #include "specfem/assembly/kernels.hpp" @@ -33,6 +35,8 @@ template <> struct assembly { ///< every ///< spectral ///< element + + specfem::assembly::edge_types edge_types; specfem::assembly::jacobian_matrix jacobian_matrix; ///< Partial ///< derivatives @@ -49,10 +53,8 @@ template <> struct assembly { specfem::assembly::boundaries boundaries; ///< Boundary ///< conditions specfem::assembly::coupled_interfaces - coupled_interfaces; ///< Coupled - ///< interfaces - ///< between 2 - ///< mediums + coupled_interfaces; ///< Coupled interfaces between 2 mediums (new + ///< implementation) specfem::assembly::fields fields; ///< Displacement, velocity, ///< and acceleration fields specfem::assembly::boundary_values diff --git a/core/specfem/assembly/boundaries.hpp b/core/specfem/assembly/boundaries.hpp index 09e6f982b..8d94338c0 100644 --- a/core/specfem/assembly/boundaries.hpp +++ b/core/specfem/assembly/boundaries.hpp @@ -12,9 +12,14 @@ template struct stacey; namespace specfem::assembly { +/** + * @brief Class representing the boundaries in the assembly. + * + * This class provides an interface for working with boundaries in the assembly. + */ template class boundaries; -} +} // namespace specfem::assembly #include "boundaries/dim2/boundaries.hpp" #include "boundaries/dim2/impl/acoustic_free_surface.hpp" diff --git a/core/specfem/assembly/boundaries/dim2/impl/acoustic_free_surface.hpp b/core/specfem/assembly/boundaries/dim2/impl/acoustic_free_surface.hpp index 6665a2fa9..a13afacf1 100644 --- a/core/specfem/assembly/boundaries/dim2/impl/acoustic_free_surface.hpp +++ b/core/specfem/assembly/boundaries/dim2/impl/acoustic_free_surface.hpp @@ -9,6 +9,7 @@ #include "mesh/mesh.hpp" #include "specfem/assembly/jacobian_matrix.hpp" #include "specfem/assembly/mesh.hpp" +#include "specfem/data_access.hpp" #include "specfem/point.hpp" namespace specfem::assembly::boundaries_impl { @@ -44,8 +45,14 @@ template <> struct acoustic_free_surface { const Kokkos::View &boundary_index_mapping, std::vector &boundary_tag); + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == false, + int> = 0> KOKKOS_FORCEINLINE_FUNCTION void - load_on_device(const specfem::point::index &index, + load_on_device(const IndexType &index, specfem::point::boundary &boundary) const { @@ -54,8 +61,14 @@ template <> struct acoustic_free_surface { return; } + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == false, + int> = 0> KOKKOS_FORCEINLINE_FUNCTION void - load_on_device(const specfem::point::index &index, + load_on_device(const IndexType &index, specfem::point::boundary< specfem::element::boundary_tag::composite_stacey_dirichlet, dimension_tag, false> &boundary) const { @@ -65,8 +78,14 @@ template <> struct acoustic_free_surface { return; } + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == true, + int> = 0> KOKKOS_FORCEINLINE_FUNCTION void - load_on_device(const specfem::point::simd_index &index, + load_on_device(const IndexType &index, specfem::point::boundary &boundary) const { @@ -87,8 +106,14 @@ template <> struct acoustic_free_surface { return; } + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == true, + int> = 0> KOKKOS_FORCEINLINE_FUNCTION void - load_on_device(const specfem::point::simd_index &index, + load_on_device(const IndexType &index, specfem::point::boundary< specfem::element::boundary_tag::composite_stacey_dirichlet, dimension_tag, true> &boundary) const { @@ -110,17 +135,28 @@ template <> struct acoustic_free_surface { return; } - inline void - load_on_host(const specfem::point::index &index, - specfem::point ::boundary - &boundary) const { + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == false, + int> = 0> + inline void load_on_host(const IndexType &index, + specfem::point::boundary &boundary) const { boundary.tag += h_quadrature_point_boundary_tag(index.ispec, index.iz, index.ix); return; } + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == false, + int> = 0> inline void - load_on_host(const specfem::point::index &index, + load_on_host(const IndexType &index, specfem::point::boundary< specfem::element::boundary_tag::composite_stacey_dirichlet, dimension_tag, false> &boundary) const { @@ -130,10 +166,15 @@ template <> struct acoustic_free_surface { return; } - inline void - load_on_host(const specfem::point::simd_index &index, - specfem::point::boundary - &boundary) const { + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == true, + int> = 0> + inline void load_on_host(const IndexType &index, + specfem::point::boundary &boundary) const { using simd = typename specfem::datatype::simd; @@ -149,8 +190,14 @@ template <> struct acoustic_free_surface { return; } + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == true, + int> = 0> inline void - load_on_host(const specfem::point::simd_index &index, + load_on_host(const IndexType &index, specfem::point::boundary< specfem::element::boundary_tag::composite_stacey_dirichlet, dimension_tag, true> &boundary) const { diff --git a/core/specfem/assembly/boundaries/dim2/impl/stacey.hpp b/core/specfem/assembly/boundaries/dim2/impl/stacey.hpp index 083b7a006..2f23762a9 100644 --- a/core/specfem/assembly/boundaries/dim2/impl/stacey.hpp +++ b/core/specfem/assembly/boundaries/dim2/impl/stacey.hpp @@ -9,6 +9,7 @@ #include "mesh/mesh.hpp" #include "specfem/assembly/jacobian_matrix.hpp" #include "specfem/assembly/mesh.hpp" +#include "specfem/data_access.hpp" #include "specfem/point.hpp" namespace specfem::assembly::boundaries_impl { @@ -59,8 +60,14 @@ template <> struct stacey { const Kokkos::View &boundary_index_mapping, std::vector &boundary_tag); + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == false, + int> = 0> KOKKOS_FORCEINLINE_FUNCTION void - load_on_device(const specfem::point::index &index, + load_on_device(const IndexType &index, specfem::point::boundary &boundary) const { @@ -74,8 +81,14 @@ template <> struct stacey { return; } + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == false, + int> = 0> KOKKOS_FORCEINLINE_FUNCTION void - load_on_device(const specfem::point::index &index, + load_on_device(const IndexType &index, specfem::point::boundary< specfem::element::boundary_tag::composite_stacey_dirichlet, dimension_tag, false> &boundary) const { @@ -90,8 +103,14 @@ template <> struct stacey { return; } + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == true, + int> = 0> KOKKOS_FORCEINLINE_FUNCTION void - load_on_device(const specfem::point::simd_index &index, + load_on_device(const IndexType &index, specfem::point::boundary &boundary) const { @@ -100,8 +119,7 @@ template <> struct stacey { using mask_type = typename simd::mask_type; using tag_type = typename simd::tag_type; - mask_type mask( - KOKKOS_LAMBDA(std::size_t lane) { return index.mask(lane); }); + mask_type mask([&](std::size_t lane) { return index.mask(lane); }); for (int lane = 0; lane < mask_type::size(); ++lane) { if (index.mask(lane)) { @@ -122,8 +140,14 @@ template <> struct stacey { .copy_from(&edge_weight(index.ispec, index.iz, index.ix), tag_type()); } + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == true, + int> = 0> KOKKOS_FORCEINLINE_FUNCTION void - load_on_device(const specfem::point::simd_index &index, + load_on_device(const IndexType &index, specfem::point::boundary< specfem::element::boundary_tag::composite_stacey_dirichlet, dimension_tag, true> &boundary) const { @@ -133,8 +157,7 @@ template <> struct stacey { using mask_type = typename simd::mask_type; using tag_type = typename simd::tag_type; - mask_type mask( - KOKKOS_LAMBDA(std::size_t lane) { return index.mask(lane); }); + mask_type mask([&](std::size_t lane) { return index.mask(lane); }); for (int lane = 0; lane < mask_type::size(); ++lane) { if (index.mask(lane)) { @@ -155,7 +178,13 @@ template <> struct stacey { .copy_from(&edge_weight(index.ispec, index.iz, index.ix), tag_type()); } - inline void load_on_host(const specfem::point::index &index, + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == false, + int> = 0> + inline void load_on_host(const IndexType &index, specfem::point::boundary &boundary) const { boundary.tag += @@ -169,8 +198,14 @@ template <> struct stacey { return; } + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == false, + int> = 0> inline void - load_on_host(const specfem::point::index &index, + load_on_host(const IndexType &index, specfem::point::boundary< specfem::element::boundary_tag::composite_stacey_dirichlet, dimension_tag, false> &boundary) const { @@ -185,18 +220,22 @@ template <> struct stacey { return; } - inline void - load_on_host(const specfem::point::simd_index &index, - specfem::point::boundary - &boundary) const { + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == true, + int> = 0> + inline void load_on_host(const IndexType &index, + specfem::point::boundary &boundary) const { using simd = typename specfem::datatype::simd; using mask_type = typename simd::mask_type; using tag_type = typename simd::tag_type; - mask_type mask( - KOKKOS_LAMBDA(std::size_t lane) { return index.mask(lane); }); + mask_type mask([&](std::size_t lane) { return index.mask(lane); }); for (int lane = 0; lane < mask_type::size(); ++lane) { if (index.mask(lane)) { @@ -219,8 +258,14 @@ template <> struct stacey { return; } + template ::value && + specfem::data_access::is_point::value && + IndexType::using_simd == true, + int> = 0> inline void - load_on_host(const specfem::point::simd_index &index, + load_on_host(const IndexType &index, specfem::point::boundary< specfem::element::boundary_tag::composite_stacey_dirichlet, dimension_tag, true> &boundary) const { @@ -230,13 +275,12 @@ template <> struct stacey { using mask_type = typename simd::mask_type; using tag_type = typename simd::tag_type; - mask_type mask( - KOKKOS_LAMBDA(std::size_t lane) { return index.mask(lane); }); + mask_type mask([&](std::size_t lane) { return index.mask(lane); }); for (int lane = 0; lane < mask_type::size(); ++lane) { if (index.mask(lane)) { - boundary.tag[lane] += quadrature_point_boundary_tag(index.ispec + lane, - index.iz, index.ix); + boundary.tag[lane] += h_quadrature_point_boundary_tag( + index.ispec + lane, index.iz, index.ix); } } diff --git a/core/specfem/assembly/boundaries/dim2/impl/utilities.hpp b/core/specfem/assembly/boundaries/dim2/impl/utilities.hpp index 52f6cf4f7..c5f31edf9 100644 --- a/core/specfem/assembly/boundaries/dim2/impl/utilities.hpp +++ b/core/specfem/assembly/boundaries/dim2/impl/utilities.hpp @@ -28,7 +28,7 @@ std::tuple, type_real> get_boundary_edge_and_weight( type == specfem::mesh_entity::type::top_left || type == specfem::mesh_entity::type::left) { const auto normal = - point_jacobian_matrix.compute_normal(specfem::enums::edge::type::LEFT); + point_jacobian_matrix.compute_normal(specfem::mesh_entity::type::left); const std::array edge_normal = { normal(0), normal(1) }; return std::make_tuple(edge_normal, weights[1]); } @@ -37,21 +37,21 @@ std::tuple, type_real> get_boundary_edge_and_weight( type == specfem::mesh_entity::type::top_right || type == specfem::mesh_entity::type::right) { const auto normal = - point_jacobian_matrix.compute_normal(specfem::enums::edge::type::RIGHT); + point_jacobian_matrix.compute_normal(specfem::mesh_entity::type::right); const std::array edge_normal = { normal(0), normal(1) }; return std::make_tuple(edge_normal, weights[1]); } if (type == specfem::mesh_entity::type::top) { const auto normal = - point_jacobian_matrix.compute_normal(specfem::enums::edge::type::TOP); + point_jacobian_matrix.compute_normal(specfem::mesh_entity::type::top); const std::array edge_normal = { normal(0), normal(1) }; return std::make_tuple(edge_normal, weights[0]); } if (type == specfem::mesh_entity::type::bottom) { const auto normal = point_jacobian_matrix.compute_normal( - specfem::enums::edge::type::BOTTOM); + specfem::mesh_entity::type::bottom); const std::array edge_normal = { normal(0), normal(1) }; return std::make_tuple(edge_normal, weights[0]); } diff --git a/core/specfem/assembly/coupled_interfaces.hpp b/core/specfem/assembly/coupled_interfaces.hpp index 52e93d6c9..8d818001c 100644 --- a/core/specfem/assembly/coupled_interfaces.hpp +++ b/core/specfem/assembly/coupled_interfaces.hpp @@ -2,6 +2,15 @@ namespace specfem::assembly { +namespace coupled_interfaces_impl { + +template +struct interface_container; + +} // namespace coupled_interfaces_impl + /** * @brief Information on coupled interfaces between two mediums * @tparam DimensionTag Dimension of spectral elements @@ -10,5 +19,4 @@ template struct coupled_interfaces; } // namespace specfem::assembly -#include "coupled_interfaces/dim2/coupled_interfaces.hpp" -#include "coupled_interfaces/dim2/coupled_interfaces.tpp" +#include "coupled_interfaces/dim2/coupled_interface.hpp" diff --git a/core/specfem/assembly/coupled_interfaces/dim2/coupled_interface.cpp b/core/specfem/assembly/coupled_interfaces/dim2/coupled_interface.cpp new file mode 100644 index 000000000..1fabec10b --- /dev/null +++ b/core/specfem/assembly/coupled_interfaces/dim2/coupled_interface.cpp @@ -0,0 +1,31 @@ + +#include "enumerations/interface.hpp" +#include "enumerations/material_definitions.hpp" +#include "impl/interface_container.tpp" +#include "specfem/assembly/coupled_interfaces.hpp" +#include "specfem/assembly/edge_types.hpp" +#include "specfem/assembly/jacobian_matrix.hpp" +#include "specfem/assembly/mesh.hpp" + +specfem::assembly::coupled_interfaces:: + coupled_interfaces( + const int ngllz, const int ngllx, + const specfem::assembly::edge_types + &edge_types, + const specfem::assembly::jacobian_matrix + &jacobian_matrix, + const specfem::assembly::mesh &mesh) { + + FOR_EACH_IN_PRODUCT( + (DIMENSION_TAG(DIM2), CONNECTION_TAG(WEAKLY_CONFORMING), + INTERFACE_TAG(ELASTIC_ACOUSTIC, ACOUSTIC_ELASTIC), + BOUNDARY_TAG(NONE, STACEY, ACOUSTIC_FREE_SURFACE, + COMPOSITE_STACEY_DIRICHLET)), + CAPTURE(interface_container) { + _interface_container_ = + InterfaceContainerType<_interface_tag_, _boundary_tag_>( + ngllz, ngllx, edge_types, jacobian_matrix, mesh); + }) + + return; +} diff --git a/core/specfem/assembly/coupled_interfaces/dim2/coupled_interface.hpp b/core/specfem/assembly/coupled_interfaces/dim2/coupled_interface.hpp new file mode 100644 index 000000000..d3c969ec4 --- /dev/null +++ b/core/specfem/assembly/coupled_interfaces/dim2/coupled_interface.hpp @@ -0,0 +1,242 @@ +#pragma once + +#include "enumerations/interface.hpp" +#include "enumerations/material_definitions.hpp" +#include "impl/interface_container.hpp" +#include "specfem/assembly/edge_types.hpp" +#include "specfem/assembly/jacobian_matrix.hpp" +#include "specfem/assembly/mesh.hpp" +#include "specfem/data_access.hpp" +#include +#include + +namespace specfem::assembly { + +/** + * @brief 2D coupled interfaces container for spectral element computations. + * + * This class manages the storage and access of data required to compute + * coupling between elements connected via weakly conforming edges in a 2D + * spectral element mesh. The interface data is split into multiple containers + * based on the types of media on either side of the interface (e.g., + * elastic-acoustic, acoustic-elastic) and the boundary conditions applied + * (e.g., free surface, Stacey absorbing). + * + * @tparam specfem::dimension::type::dim2 Template specialization for 2D domain + * + * @note This is a template specialization for 2D domains. The primary template + * is declared elsewhere and specialized here for dimension-specific + * optimizations. + * + * @see specfem::assembly::coupled_interfaces_impl::interface_container + * @see specfem::assembly::edge_types + * @see specfem::assembly::jacobian_matrix + * @see specfem::assembly::mesh + */ +template <> +class coupled_interfaces + : public specfem::data_access::Container< + specfem::data_access::ContainerType::edge, + specfem::data_access::DataClassType::coupled_interface, + specfem::dimension::type::dim2> { +public: + /** + * @brief Dimension tag for this specialization + * + * Static constant member that identifies this specialization as operating + * in 2D space. Used for compile-time dispatch and type checking. + */ + static constexpr auto dimension_tag = specfem::dimension::type::dim2; + +private: + template + using InterfaceContainerType = + specfem::assembly::coupled_interfaces_impl::interface_container< + dimension_tag, InterfaceTag, BoundaryTag>; + + FOR_EACH_IN_PRODUCT((DIMENSION_TAG(DIM2), CONNECTION_TAG(WEAKLY_CONFORMING), + INTERFACE_TAG(ELASTIC_ACOUSTIC, ACOUSTIC_ELASTIC), + BOUNDARY_TAG(NONE, ACOUSTIC_FREE_SURFACE, STACEY, + COMPOSITE_STACEY_DIRICHLET)), + DECLARE(((InterfaceContainerType, + (_INTERFACE_TAG_, _BOUNDARY_TAG_)), + interface_container))) + +public: + /** + * @brief Constructor for 2D coupled interfaces container + * + * Initializes all interface containers for the supported combinations of + * media types and boundary conditions. + * + * @param ngllz Number of Gauss-Lobatto-Legendre points in the z-direction + * @param ngllx Number of Gauss-Lobatto-Legendre points in the x-direction + * @param edge_types Reference to the edge types container that provides + * information about the types of edges in the mesh + * (e.g., boundary edges, internal edges). + * @param jacobian_matrix Reference to the Jacobian matrix container that + * provides geometric transformation information + * between reference and physical coordinates. + * @param mesh Reference to the 2D mesh container that provides element + * connectivity, material properties, and geometric information. + * + * @pre edge_types must be properly initialized for the given mesh + * @pre jacobian_matrix must be computed for all elements in the mesh + * @pre mesh must contain valid element-to-node connectivity + * + * @post All interface containers are initialized and ready for use + * @post Memory is allocated for all supported interface combinations + * @see specfem::assembly::edge_types + * @see specfem::assembly::jacobian_matrix + * @see specfem::assembly::mesh + */ + coupled_interfaces( + const int ngllz, const int ngllx, + const specfem::assembly::edge_types &edge_types, + const specfem::assembly::jacobian_matrix &jacobian_matrix, + const specfem::assembly::mesh &mesh); + + coupled_interfaces() = default; + + /** + * @brief Get interface container for specific coupling and boundary types + * + * Uses compile-time dispatch to return the appropriate interface container + * without runtime overhead. Supports elastic_acoustic/acoustic_elastic + * interfaces with + * none/acoustic_free_surface/stacey/composite_stacey_dirichlet boundary + * conditions. + * + * @tparam InterfaceTag Interface coupling type + * @tparam BoundaryTag Boundary condition type + * @return const reference to the requested interface container + * + * @example + * ```cpp + * const auto& container = interfaces.get_interface_container< + * specfem::interface::interface_tag::elastic_acoustic, + * specfem::element::boundary_tag::stacey>(); + * ``` + */ + template + KOKKOS_INLINE_FUNCTION const + InterfaceContainerType & + get_interface_container() const { + // Compile-time dispatch using FOR_EACH_IN_PRODUCT macro + FOR_EACH_IN_PRODUCT((DIMENSION_TAG(DIM2), CONNECTION_TAG(WEAKLY_CONFORMING), + INTERFACE_TAG(ELASTIC_ACOUSTIC, ACOUSTIC_ELASTIC), + BOUNDARY_TAG(NONE, ACOUSTIC_FREE_SURFACE, STACEY, + COMPOSITE_STACEY_DIRICHLET)), + CAPTURE((interface_container, interface_container)) { + if constexpr (InterfaceTag == _interface_tag_ && + BoundaryTag == _boundary_tag_) { + return _interface_container_; + } + }) + +#ifndef NDEBUG + // Debug check: abort if no matching specialization found + KOKKOS_ABORT_WITH_LOCATION( + "specfem::assembly::coupled_interfaces::get_interface_container(): No " + "matching specialization found."); +#endif + + // Unreachable code - satisfy compiler return requirements + return {}; + } +}; + +/** + * @defgroup CoupledInterfaceDataAccess + * @brief Data access functions for coupled interface computation data + * + */ + +/** + * @brief Load interface data from container to point on host + * + * Loads coupled interface data using compile-time dispatch based on the point's + * template parameters (connection, interface, and boundary types). + * + * @ingroup CoupledInterfaceDataAccess + * + * @tparam IndexType Edge index type + * @tparam ContainerType Coupled interfaces container type + * @tparam PointType Interface point type + * + * @param index Edge index specifying the interface location + * @param container Coupled interfaces container holding interface data + * @param point Point object where loaded data will be stored + * + * @pre index refers to valid mesh edge + * @pre container is properly initialized + * @pre point type matches supported interface combinations + * + * @note For host-side computations only. Use load_on_device for device code. + */ +template < + typename IndexType, typename ContainerType, typename PointType, + typename std::enable_if_t< + ((specfem::data_access::is_edge_index::value) && + (specfem::data_access::is_coupled_interface::value)), + int> = 0> +inline void load_on_host(const IndexType &index, const ContainerType &container, + PointType &point) { + + static_assert( + specfem::data_access::CheckCompatibility::value, + "Incompatible types in load_on_host"); + + container + .template get_interface_container() + .template impl_load(index, point); +} + +/** + * @brief Load interface data from container to point on device + * + * Loads coupled interface data using compile-time dispatch based on the point's + * template parameters (connection, interface, and boundary types). + * + * @ingroup CoupledInterfaceDataAccess + * + * @tparam IndexType Edge index type + * @tparam ContainerType Coupled interfaces container type + * @tparam PointType Interface point type + * + * @param index Edge index specifying the interface location + * @param container Coupled interfaces container holding interface data + * @param point Point object where loaded data will be stored + * + * @pre index refers to valid mesh edge + * @pre container is properly initialized + * @pre point type matches supported interface combinations + * + * @note For device-side computations only. Use load_on_host for host code. + */ +template < + typename IndexType, typename ContainerType, typename PointType, + typename std::enable_if_t< + ((specfem::data_access::is_edge_index::value) && + (specfem::data_access::is_coupled_interface::value)), + int> = 0> +KOKKOS_FORCEINLINE_FUNCTION void load_on_device(const IndexType &index, + const ContainerType &container, + PointType &point) { + + static_assert( + specfem::data_access::CheckCompatibility::value, + "Incompatible types in load_on_host"); + + container + .template get_interface_container() + .template impl_load(index, point); +} + +} // namespace specfem::assembly diff --git a/core/specfem/assembly/coupled_interfaces/dim2/coupled_interfaces.cpp b/core/specfem/assembly/coupled_interfaces/dim2/coupled_interfaces.cpp deleted file mode 100644 index f79a9a68e..000000000 --- a/core/specfem/assembly/coupled_interfaces/dim2/coupled_interfaces.cpp +++ /dev/null @@ -1,102 +0,0 @@ -#include "specfem/assembly/coupled_interfaces.hpp" -#include "enumerations/specfem_enums.hpp" -#include "kokkos_abstractions.h" -#include "macros.hpp" -#include "mesh/mesh.hpp" -#include "specfem/assembly/coupled_interfaces/interface_container.hpp" - -// // Topological map ordering for coupled elements - -// // +-----------------+ +-----------------+ -// // | | | | -// // | R | ^ ^ | L | -// // | I | | | | E | -// // | G | | | | F | -// // | H | | | | T | -// // | T | | | | | -// // | BOTTOM | | BOTTOM | -// // +-----------------+ +-----------------+ -// // --------------> --------------> -// // --------------> --------------> -// // +-----------------+ +-----------------+ -// // | TOP | | TOP | -// // | R | ^ ^ | L | -// // | I | | | | E | -// // | G | | | | F | -// // | H | | | | T | -// // | T | | | | | -// // | | | | -// // +-----------------+ +-----------------+ - -specfem::assembly::coupled_interfaces:: - coupled_interfaces( - const specfem::mesh::mesh &mesh, - const specfem::assembly::mesh &mesh_assembly, - const specfem::assembly::jacobian_matrix - &jacobian_matrix, - const specfem::assembly::element_types &element_types) - : elastic_acoustic(mesh, mesh_assembly, jacobian_matrix, element_types), - elastic_poroelastic(mesh, mesh_assembly, jacobian_matrix, element_types), - acoustic_poroelastic(mesh, mesh_assembly, jacobian_matrix, - element_types) {} -// Explicit template instantiation - -template class specfem::assembly::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::acoustic>; - -template class specfem::assembly::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::poroelastic>; - -template class specfem::assembly::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::poroelastic>; - -template specfem::assembly::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::acoustic> -specfem::assembly::coupled_interfaces:: - get_interface_container() const; - -template specfem::assembly::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::elastic_psv> -specfem::assembly::coupled_interfaces:: - get_interface_container() const; - -template specfem::assembly::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::poroelastic> -specfem::assembly::coupled_interfaces:: - get_interface_container() const; - -template specfem::assembly::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::poroelastic, - specfem::element::medium_tag::elastic_psv> -specfem::assembly::coupled_interfaces:: - get_interface_container() const; - -template specfem::assembly::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::poroelastic> -specfem::assembly::coupled_interfaces:: - get_interface_container() const; - -template specfem::assembly::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::poroelastic, - specfem::element::medium_tag::acoustic> -specfem::assembly::coupled_interfaces:: - get_interface_container() const; - -// Explicit template member function instantiation - -// // Explicit template instantiation of the coupled_interfaces class -// template class -// specfem::assembly::coupled_interfaces; diff --git a/core/specfem/assembly/coupled_interfaces/dim2/coupled_interfaces.hpp b/core/specfem/assembly/coupled_interfaces/dim2/coupled_interfaces.hpp deleted file mode 100644 index d70904ce4..000000000 --- a/core/specfem/assembly/coupled_interfaces/dim2/coupled_interfaces.hpp +++ /dev/null @@ -1,84 +0,0 @@ -#pragma once - -#include "enumerations/interface.hpp" -#include "mesh/mesh.hpp" -#include "specfem/assembly/coupled_interfaces/interface_container.hpp" -#include "specfem/assembly/jacobian_matrix.hpp" -#include "specfem/assembly/mesh.hpp" -#include "specfem/assembly/properties.hpp" - -namespace specfem::assembly { -/** - * @brief Information about coupled interfaces between 2 different media - * - */ -template <> struct coupled_interfaces { - -public: - /** - * @name Compile-time constants - * - */ - ///@{ - constexpr static auto dimension_tag = - specfem::dimension::type::dim2; ///< Dimension of spectral - ///< elements - ///@} - - /** - * @brief Default constructor - * - */ - coupled_interfaces() = default; - - /** - * @name Constructors - * - */ - ///@{ - - /** - * @brief Compute coupled interfaces for a given mesh - * - * @param mesh Finite element mesh information - * @param mesh_assembly Mesh information for assembly - * @param jacobian_matrix Jacobian matrix for every quadrature point - * @param properties Material properties for every quadrature point - */ - coupled_interfaces( - const specfem::mesh::mesh &mesh, - const specfem::assembly::mesh &mesh_assembly, - const specfem::assembly::jacobian_matrix &jacobian_matrix, - const specfem::assembly::element_types &element_types); - ///@} - - /** - * @brief Get the interface container that contains information about the - * interface between medium1 and medium2 - * - * @tparam medium1 Self medium of the interface - * @tparam medium2 Other medium of the interface - * @return specfem::assembly::interface_container Interface - * container - */ - template - specfem::assembly::interface_container - get_interface_container() const; - - specfem::assembly::interface_container< - dimension_tag, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::acoustic> - elastic_acoustic; ///< Elastic-acoustic interface - - specfem::assembly::interface_container< - dimension_tag, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::poroelastic> - acoustic_poroelastic; ///< Acoustic-poroelastic interface - - specfem::assembly::interface_container< - dimension_tag, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::poroelastic> - elastic_poroelastic; ///< Elastic-poroelastic interface -}; -} // namespace specfem::assembly diff --git a/core/specfem/assembly/coupled_interfaces/dim2/coupled_interfaces.tpp b/core/specfem/assembly/coupled_interfaces/dim2/coupled_interfaces.tpp deleted file mode 100644 index c52634c10..000000000 --- a/core/specfem/assembly/coupled_interfaces/dim2/coupled_interfaces.tpp +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include "enumerations/interface.hpp" -#include "specfem/assembly/coupled_interfaces.hpp" -#include "specfem/assembly/coupled_interfaces/interface_container.hpp" - -template -specfem::assembly::interface_container -specfem::assembly::coupled_interfaces::get_interface_container() const { - if constexpr (medium1 == specfem::element::medium_tag::elastic_psv && - medium2 == specfem::element::medium_tag::acoustic) { - return elastic_acoustic; - } else if constexpr (medium1 == specfem::element::medium_tag::acoustic && - medium2 == specfem::element::medium_tag::elastic_psv) { - return specfem::assembly::interface_container( - elastic_acoustic); - } else if constexpr (medium1 == specfem::element::medium_tag::acoustic && - medium2 == specfem::element::medium_tag::poroelastic) { - return acoustic_poroelastic; - } else if constexpr (medium1 == specfem::element::medium_tag::poroelastic && - medium2 == specfem::element::medium_tag::acoustic) { - return specfem::assembly::interface_container( - acoustic_poroelastic); - } else if constexpr (medium1 == specfem::element::medium_tag::elastic_psv && - medium2 == specfem::element::medium_tag::poroelastic) { - return elastic_poroelastic; - } else if constexpr (medium1 == specfem::element::medium_tag::poroelastic && - medium2 == specfem::element::medium_tag::elastic_psv) { - return specfem::assembly::interface_container( - elastic_poroelastic); - } -} diff --git a/core/specfem/assembly/coupled_interfaces/dim2/impl/interface_container.hpp b/core/specfem/assembly/coupled_interfaces/dim2/impl/interface_container.hpp index 1735bb3be..8388d90aa 100644 --- a/core/specfem/assembly/coupled_interfaces/dim2/impl/interface_container.hpp +++ b/core/specfem/assembly/coupled_interfaces/dim2/impl/interface_container.hpp @@ -1,198 +1,116 @@ + #pragma once -#include "edge/interface.hpp" #include "enumerations/interface.hpp" -#include "kokkos_abstractions.h" -#include "specfem/assembly/element_types.hpp" +#include "specfem/assembly/edge_types.hpp" #include "specfem/assembly/jacobian_matrix.hpp" #include "specfem/assembly/mesh.hpp" +#include "specfem/data_access.hpp" -namespace specfem::assembly { +namespace specfem::assembly::coupled_interfaces_impl { /** - * @brief Information about coupled interfaces between MediumTag1 and MediumTag2 + * @brief Container for 2D coupled interface data storage and access + * + * Manages interface data between different physical media (elastic-acoustic) + * with specific boundary conditions. Stores edge factors and normal vectors + * for interface computations in 2D spectral element simulations. * - * @tparam MediumTag1 Self medium of the interface - * @tparam MediumTag2 Other medium of the interface + * @tparam InterfaceTag Type of interface (ELASTIC_ACOUSTIC or ACOUSTIC_ELASTIC) + * @tparam BoundaryTag Boundary condition type (NONE, STACEY, etc.) */ - -template -struct interface_container { - /** - * @name Compile-time constants - * - */ - ///@{ - constexpr static auto dimension_tag = - specfem::dimension::type::dim2; ///< Dimension of spectral - ///< elements - constexpr static specfem::element::medium_tag medium1_type = - MediumTag1; ///< Self medium of the interface - constexpr static specfem::element::medium_tag medium2_type = - MediumTag2; ///< Other medium of the interface - ///@} +template +struct interface_container + : public specfem::data_access::Container< + specfem::data_access::ContainerType::edge, + specfem::data_access::DataClassType::coupled_interface, + specfem::dimension::type::dim2> { +public: + /** @brief Dimension tag for 2D specialization */ + constexpr static auto dimension_tag = specfem::dimension::type::dim2; + /** @brief Interface type (elastic-acoustic or acoustic-elastic) */ + constexpr static auto interface_tag = InterfaceTag; + /** @brief Boundary condition type */ + constexpr static auto boundary_tag = BoundaryTag; + /** @brief Medium type on the self side of the interface */ + constexpr static auto self_medium = + specfem::interface::attributes::self_medium(); + /** @brief Medium type on the coupled side of the interface */ + constexpr static auto coupled_medium = + specfem::interface::attributes::coupled_medium(); private: - using IndexView = - Kokkos::View; ///< Underlying view - ///< type to store - ///< indices - using EdgeTypeView = - Kokkos::View; ///< Underlying view type to - ///< store edge types - using EdgeFactorView = - Kokkos::View; ///< Underlying view type to - ///< integration factors - using EdgeNormalView = - Kokkos::View; ///< Underlying view type to - ///< store edge normals + /** @brief Base container type alias */ + using base_type = specfem::data_access::Container< + specfem::data_access::ContainerType::edge, + specfem::data_access::DataClassType::coupled_interface, + specfem::dimension::type::dim2>; + /** @brief View type for edge scaling factors */ + using EdgeFactorView = typename base_type::scalar_type< + type_real, Kokkos::DefaultExecutionSpace::memory_space>; + /** @brief View type for edge normal vectors */ + using EdgeNormalView = typename base_type::vector_type< + type_real, Kokkos::DefaultExecutionSpace::memory_space>; + + /** @brief Device view for edge scaling factors */ + EdgeFactorView edge_factor; + /** @brief Device view for edge normal vectors */ + EdgeNormalView edge_normal; + + /** @brief Host mirror for edge scaling factors */ + EdgeFactorView::HostMirror h_edge_factor; + /** @brief Host mirror for edge normal vectors */ + EdgeNormalView::HostMirror h_edge_normal; public: /** - * @name Constructors - * - */ - ///@{ - - /** - * @brief Default constructor + * @brief Constructs interface container with mesh and geometry data * - */ - interface_container() = default; - - interface_container(const int num_interfaces, const int ngll); - - /** - * @brief Compute the interface for a given mesh - * - * @param mesh Finite element mesh information - * @param points Assembly information - * @param quadrature Quadrature information - * @param jacobian_matrix Jacobian matrix for every quadrature point - * @param properties Material properties for every quadrature point - * @param mapping Mapping between mesh and compute spectral element indexing + * @param ngllz Number of GLL points in z-direction + * @param ngllx Number of GLL points in x-direction + * @param edge_types Edge type information from mesh + * @param jacobian_matrix Jacobian transformation data + * @param mesh Mesh connectivity and geometry */ interface_container( - const specfem::mesh::mesh &mesh, - const specfem::assembly::mesh &mesh_assembly, + const int ngllz, const int ngllx, + const specfem::assembly::edge_types + &edge_types, const specfem::assembly::jacobian_matrix &jacobian_matrix, - const specfem::assembly::element_types &element_types); + const specfem::assembly::mesh &mesh); - /** - * @brief Construct interface container from another container where mediums - * are swapped - * - * @param other Interface container with swapped mediums - */ - interface_container( - const interface_container &other) - : num_interfaces(other.num_interfaces), num_points(other.num_points), - medium1_index_mapping(other.medium2_index_mapping), - h_medium1_index_mapping(other.h_medium2_index_mapping), - medium2_index_mapping(other.medium1_index_mapping), - h_medium2_index_mapping(other.h_medium1_index_mapping), - medium1_edge_type(other.medium2_edge_type), - h_medium1_edge_type(other.h_medium2_edge_type), - medium2_edge_type(other.medium1_edge_type), - h_medium2_edge_type(other.h_medium1_edge_type), - medium1_edge_factor(other.medium2_edge_factor), - h_medium1_edge_factor(other.h_medium2_edge_factor), - medium2_edge_factor(other.medium1_edge_factor), - h_medium2_edge_factor(other.h_medium1_edge_factor), - medium1_edge_normal(other.medium2_edge_normal), - h_medium1_edge_normal(other.h_medium2_edge_normal), - medium2_edge_normal(other.medium1_edge_normal), - h_medium2_edge_normal(other.h_medium1_edge_normal) { - return; - } - ///@} - - int num_interfaces; ///< Number of edges between the two mediums - int num_points; ///< Number of points on the edges - IndexView medium1_index_mapping; ///< Spectral element index for every edge on - ///< self medium - IndexView medium2_index_mapping; ///< Spectral element index for every edge on - ///< other medium - - EdgeTypeView medium1_edge_type; ///< Edge orientation for every edge on self - ///< medium - EdgeTypeView medium2_edge_type; ///< Edge orientation for every edge on other - ///< medium - - IndexView::HostMirror h_medium1_index_mapping; ///< Host mirror for @ref - ///< medium1_index_mapping - IndexView::HostMirror h_medium2_index_mapping; ///< Host mirror for @ref - ///< medium2_index_mapping - - EdgeTypeView::HostMirror h_medium1_edge_type; ///< Host mirror for @ref - ///< medium1_edge_type - EdgeTypeView::HostMirror h_medium2_edge_type; ///< Host mirror for @ref - ///< medium2_edge_type - - EdgeFactorView medium1_edge_factor; ///< Integration factors for every - ///< quadrature point on self medium - EdgeFactorView medium2_edge_factor; ///< Integration factors for every - ///< quadrature point on other medium - - EdgeFactorView::HostMirror h_medium1_edge_factor; ///< Host mirror for @ref - ///< medium1_edge_factor - EdgeFactorView::HostMirror h_medium2_edge_factor; ///< Host mirror for @ref - ///< medium2_edge_factor - - EdgeNormalView medium1_edge_normal; ///< Edge normals for every quadrature - ///< point on self medium - EdgeNormalView medium2_edge_normal; ///< Edge normals for every quadrature - ///< point on other medium - - EdgeNormalView::HostMirror h_medium1_edge_normal; ///< Host mirror for @ref - ///< medium1_edge_normal - EdgeNormalView::HostMirror h_medium2_edge_normal; ///< Host mirror for @ref - ///< medium2_edge_normal + /** @brief Default constructor */ + interface_container() = default; /** - * @brief Get the spectral element index for elements on edges of the - * interface + * @brief Loads interface data at specified index into point * - * @return std::tuple Tuple containing the spectral - * element indices. The first element is the indices for self medium and the - * second element is the indices for the other medium - */ - std::tuple get_index_mapping() const { - return std::make_tuple(medium1_index_mapping, medium2_index_mapping); - } - - /** - * @brief Get the orientation for the edges of the interface + * Template function that loads edge factor and normal vector data + * from either device or host memory into the provided point object. * - * @return std::tuple Tuple containing the edge - * orientation. The first element is the edge orientation for self medium and - * the second element is the edge orientation for the other medium + * @tparam on_device If true, loads from device memory; if false, from host + * @tparam IndexType Type of index (must have iedge and ipoint members) + * @tparam PointType Type of point (must have edge_factor and edge_normal) + * @param index Edge and point indices for data location + * @param point Output point object to store loaded data */ - std::tuple get_edge_type() const { - return std::make_tuple(medium1_edge_type, medium2_edge_type); + template + KOKKOS_FORCEINLINE_FUNCTION void impl_load(const IndexType &index, + PointType &point) const { + if constexpr (on_device) { + point.edge_factor = edge_factor(index.iedge, index.ipoint); + point.edge_normal(0) = edge_normal(index.iedge, index.ipoint, 0); + point.edge_normal(1) = edge_normal(index.iedge, index.ipoint, 1); + } else { + point.edge_factor = h_edge_factor(index.iedge, index.ipoint); + point.edge_normal(0) = h_edge_normal(index.iedge, index.ipoint, 0); + point.edge_normal(1) = h_edge_normal(index.iedge, index.ipoint, 1); + } + return; } - - /** - * @brief Get the integration weights for edges on interface when computing - * intergrals over self medium - * - * @return EdgeFactorView Integration weights for every quadrature point on - * self medium - */ - EdgeFactorView get_edge_factor() const { return medium1_edge_factor; } - - /** - * @brief Get the normals to the edge at every quadrature point on the - * interface on self medium - * - * @return EdgeNormalView Normals to the edge at every quadrature point on - * self medium - */ - EdgeNormalView get_edge_normal() const { return medium1_edge_normal; } }; -} // namespace specfem::assembly +} // namespace specfem::assembly::coupled_interfaces_impl diff --git a/core/specfem/assembly/coupled_interfaces/dim2/impl/interface_container.tpp b/core/specfem/assembly/coupled_interfaces/dim2/impl/interface_container.tpp index dee89dcb2..12077d80e 100644 --- a/core/specfem/assembly/coupled_interfaces/dim2/impl/interface_container.tpp +++ b/core/specfem/assembly/coupled_interfaces/dim2/impl/interface_container.tpp @@ -1,350 +1,90 @@ #pragma once -#include "edge/interface.hpp" #include "enumerations/interface.hpp" -#include "interface_container.hpp" -#include "kokkos_abstractions.h" -#include "mesh/mesh.hpp" +#include "specfem/assembly/coupled_interfaces.hpp" +#include "specfem/assembly/edge_types.hpp" #include "specfem/assembly/jacobian_matrix.hpp" #include "specfem/assembly/mesh.hpp" -#include "specfem/assembly/properties.hpp" -#include "specfem/point.hpp" +#include "specfem/data_access.hpp" +#include "enumerations/macros.hpp" -namespace { - -std::vector > -get_points_on_edge(const specfem::enums::edge::type &edge, const int &ngll) { - std::vector > points(ngll); - - switch (edge) { - case specfem::enums::edge::type::BOTTOM: - for (int i = 0; i < ngll; i++) { - points[i] = std::make_tuple(i, 0); - } - break; - case specfem::enums::edge::type::TOP: - for (int i = 0; i < ngll; i++) { - points[i] = std::make_tuple(i, ngll - 1); - } - break; - case specfem::enums::edge::type::LEFT: - for (int i = 0; i < ngll; i++) { - points[i] = std::make_tuple(0, i); - } - break; - case specfem::enums::edge::type::RIGHT: - for (int i = 0; i < ngll; i++) { - points[i] = std::make_tuple(ngll - 1, i); - } - break; - default: - throw std::runtime_error("Invalid edge type"); - } - - return points; -} - -bool check_if_edges_are_connected( - const specfem::assembly::mesh &mesh, - const specfem::enums::edge::type edge1, - const specfem::enums::edge::type edge2, const int ispec1, - const int ispec2) { - - if (edge1 == edge2) { - return false; - } - - const auto h_coord = mesh.h_coord; - - const int ngll = h_coord.extent(2); - - const auto edge1_points = get_points_on_edge(edge1, ngll); - const auto edge2_points = get_points_on_edge(edge2, ngll); - - if (edge1_points.size() != edge2_points.size()) { - throw std::runtime_error( - "Number of points on edge1 and edge2 are different"); - } - - // size of one edge of the element - type_real edge_size = [&]() { - switch (edge1) { - case specfem::enums::edge::type::BOTTOM: - case specfem::enums::edge::type::TOP: - return h_coord(0, ispec1, 0, 1) - h_coord(0, ispec1, 0, 0); - break; - - case specfem::enums::edge::type::LEFT: - case specfem::enums::edge::type::RIGHT: - return h_coord(1, ispec1, 1, 0) - h_coord(1, ispec1, 0, 0); - break; - default: - throw std::runtime_error("Invalid edge type"); - } - }(); - - // Check that the distance every point on the edges is small - for (int ipoint = 0; ipoint < ngll; ipoint++) { - const auto [i1, j1] = edge1_points[ipoint]; - const specfem::point::global_coordinates - self_coordinates(h_coord(0, ispec1, j1, i1), - h_coord(1, ispec1, j1, i1)); - - const auto [i2, j2] = edge2_points[ipoint]; - const specfem::point::global_coordinates - coupled_coordinates(h_coord(0, ispec2, j2, i2), - h_coord(1, ispec2, j2, i2)); - - // Check that the distance between the two points is small - type_real distance = - specfem::point::distance(self_coordinates, coupled_coordinates); - - if (distance / edge_size > 1.e-10) { - return false; - } - } - - return true; -} - -std::tuple, std::vector > > -compute_edge_factors_and_normals( - const specfem::assembly::mesh &mesh, - const specfem::assembly::jacobian_matrix &jacobian_matrix, const int ispec1, - const int ispec2, const specfem::enums::edge::type edge1, - const specfem::enums::edge::type edge2) { - - const int ngll = mesh.element_grid.ngllx; - - const auto edge1_points = get_points_on_edge(edge1, ngll); - const auto edge2_points = get_points_on_edge(edge2, ngll); - - if (edge1_points.size() != edge2_points.size()) { - throw std::runtime_error( - "Number of points on edge1 and edge2 are different"); - } - - std::vector > - medium1_index(ngll); - std::vector > - medium2_index(ngll); - std::vector edge_factor(ngll); - std::vector > edge_normal(ngll); - - for (int ipoint = 0; ipoint < ngll; ipoint++) { - - using PointJacobianMatrixType = - specfem::point::jacobian_matrix; - - const auto [i1, j1] = edge1_points[ipoint]; - const specfem::point::index edge1_index( - ispec1, j1, i1); - PointJacobianMatrixType edge1_derivatives; - specfem::assembly::load_on_host(edge1_index, jacobian_matrix, - edge1_derivatives); - - const auto [i2, j2] = edge2_points[ipoint]; - const specfem::point::index edge2_index( - ispec2, j2, i2); - PointJacobianMatrixType edge2_derivatives; - specfem::assembly::load_on_host(edge2_index, jacobian_matrix, - edge2_derivatives); - - const auto edge1_normal = edge1_derivatives.compute_normal(edge1); - const auto edge2_normal = edge2_derivatives.compute_normal(edge2); - - if ((std::abs(edge1_normal(0) + edge2_normal(0)) > - 1.e-4 * (std::abs(edge1_normal(0) - edge2_normal(0)) / 2)) && - (std::abs(edge1_normal(1) + edge2_normal(1)) > - 1.e-4 * (std::abs(edge1_normal(1) - edge2_normal(1)) / 2))) { - throw std::runtime_error("Edge normals need to be opposite in direction"); - } - - const std::array weights = { mesh.h_weights(i1), - mesh.h_weights(j1) }; - - edge_factor[ipoint] = [&]() { - switch (edge1) { - case specfem::enums::edge::type::BOTTOM: - case specfem::enums::edge::type::TOP: - return weights[0]; - break; - - case specfem::enums::edge::type::LEFT: - case specfem::enums::edge::type::RIGHT: - return weights[1]; - break; - default: - throw std::runtime_error("Invalid edge type"); - } - }(); - - edge_normal[ipoint][0] = edge1_normal(0); - edge_normal[ipoint][1] = edge1_normal(1); - medium1_index[ipoint] = { ispec1, j1, i1 }; - medium2_index[ipoint] = { ispec2, j2, i2 }; - } - - return { edge_factor, edge_normal }; -} - -std::tuple, std::vector > > -compute_edge_factors_and_normals( - const specfem::assembly::mesh &mesh, - const specfem::assembly::jacobian_matrix &jacobian_matrix, const int ispec1, - const int ispec2) { - - const std::array edges{ - specfem::enums::edge::type::BOTTOM, specfem::enums::edge::type::TOP, - specfem::enums::edge::type::LEFT, specfem::enums::edge::type::RIGHT - }; - - std::array connected_edges; - int number_of_edges = 0; - for (const auto edge1 : edges) { - for (const auto edge2 : edges) { - if (check_if_edges_are_connected(mesh, edge1, edge2, ispec1, ispec2)) { - connected_edges[0] = edge1; - connected_edges[1] = edge2; - number_of_edges++; - } - } - } - - if (number_of_edges != 1) { - std::cout << "Number of edges : " << number_of_edges << std::endl; - throw std::runtime_error("Number of connected edges is not 1"); - } - - const auto [edge_factor, edge_normal] = - compute_edge_factors_and_normals(mesh, jacobian_matrix, ispec1, ispec2, - connected_edges[0], connected_edges[1]); - - return { connected_edges[0], connected_edges[1], edge_factor, edge_normal }; -} - -} // namespace - -template -specfem::assembly::interface_container::interface_container(const int num_interfaces, - const int ngll) - : num_interfaces(num_interfaces), num_points(ngll), - medium1_index_mapping( - "specfem::compute_interface_container::medium1_index_mapping", - num_interfaces), - h_medium1_index_mapping( - Kokkos::create_mirror_view(medium1_index_mapping)), - medium2_index_mapping( - "specfem::compute_interface_container::medium2_index_mapping", - num_interfaces), - h_medium2_index_mapping( - Kokkos::create_mirror_view(medium2_index_mapping)), - medium1_edge_type( - "specfem::compute_interface_container::medium1_edge_type", - num_interfaces), - h_medium1_edge_type(Kokkos::create_mirror_view(medium1_edge_type)), - medium2_edge_type( - "specfem::compute_interface_container::medium2_edge_type", - num_interfaces), - h_medium2_edge_type(Kokkos::create_mirror_view(medium2_edge_type)), - medium1_edge_factor( - "specfem::compute_interface_container::medium1_edge_factor", - num_interfaces, ngll), - h_medium1_edge_factor(Kokkos::create_mirror_view(medium1_edge_factor)), - medium2_edge_factor( - "specfem::compute_interface_container::medium2_edge_factor", - num_interfaces, ngll), - h_medium2_edge_factor(Kokkos::create_mirror_view(medium2_edge_factor)), - medium1_edge_normal( - "specfem::compute_interface_container::medium1_edge_normal", 2, - num_interfaces, ngll), - h_medium1_edge_normal(Kokkos::create_mirror_view(medium1_edge_normal)), - medium2_edge_normal( - "specfem::compute_interface_container::medium2_edge_normal", 2, - num_interfaces, ngll), - h_medium2_edge_normal(Kokkos::create_mirror_view(medium2_edge_normal)) { - return; -} - -template -specfem::assembly::interface_container:: +template +specfem::assembly::coupled_interfaces_impl::interface_container< + specfem::dimension::type::dim2, InterfaceTag, BoundaryTag>:: interface_container( - const specfem::mesh::mesh &mesh, - const specfem::assembly::mesh - &mesh_assembly, - const specfem::assembly::jacobian_matrix &jacobian_matrix, - const specfem::assembly::element_types &element_types) { - - const auto interface_container = std::get >( - mesh.coupled_interfaces.get()); - - int num_interfaces = interface_container.num_interfaces; - const int ngll = mesh_assembly.element_grid.ngllx; - - if (num_interfaces == 0) { - this->num_interfaces = 0; - return; + const int ngllz, const int ngllx, + const specfem::assembly::edge_types + &edge_types, + const specfem::assembly::jacobian_matrix + &jacobian_matrix, + const specfem::assembly::mesh &mesh) { + + if (ngllz <= 0 || ngllx <= 0) { + KOKKOS_ABORT_WITH_LOCATION("Invalid GLL grid size"); } - *this = specfem::assembly::interface_container( - num_interfaces, ngll); - - for (int iedge = 0; iedge < num_interfaces; ++iedge) { - const int ispec1_mesh = - interface_container.template get_spectral_elem_index(iedge); - const int ispec2_mesh = - interface_container.template get_spectral_elem_index(iedge); - - const int ispec1_compute = mesh_assembly.mesh_to_compute(ispec1_mesh); - const int ispec2_compute = mesh_assembly.mesh_to_compute(ispec2_mesh); - - if (!(((element_types.get_medium_tag(ispec1_compute) == MediumTag1) && - (element_types.get_medium_tag(ispec2_compute) == MediumTag2)) || - ((element_types.get_medium_tag(ispec1_compute) == MediumTag2 && - element_types.get_medium_tag(ispec2_compute) == MediumTag1)))) { - - throw std::runtime_error( - "Coupled Interfaces: Interface is not between the correct mediums"); - } - - h_medium1_index_mapping(iedge) = ispec1_compute; - h_medium2_index_mapping(iedge) = ispec2_compute; - - const auto [edge1_type, edge2_type, edge_factor, edge_normal] = - compute_edge_factors_and_normals(mesh_assembly, jacobian_matrix, - ispec1_compute, ispec2_compute); - - h_medium1_edge_type(iedge) = edge1_type; - h_medium2_edge_type(iedge) = edge2_type; - - const int npoints = edge_factor.size(); - - for (int ipoint = 0; ipoint < npoints; ipoint++) { - h_medium1_edge_factor(iedge, ipoint) = edge_factor[ipoint]; - h_medium2_edge_factor(iedge, ipoint) = edge_factor[ipoint]; - - h_medium1_edge_normal(0, iedge, ipoint) = edge_normal[ipoint][0]; - h_medium1_edge_normal(1, iedge, ipoint) = edge_normal[ipoint][1]; + if (ngllz != ngllx) { + KOKKOS_ABORT_WITH_LOCATION( + "The number of GLL points in z and x must be the same."); + } - h_medium2_edge_normal(0, iedge, ipoint) = -edge_normal[ipoint][0]; - h_medium2_edge_normal(1, iedge, ipoint) = -edge_normal[ipoint][1]; + const auto connection_mapping = + specfem::connections::connection_mapping(ngllx, ngllz); + + const auto [self_edges, coupled_edges] = edge_types.get_edges_on_host( + specfem::connections::type::weakly_conforming, InterfaceTag, BoundaryTag); + + const auto nedges = self_edges.size(); + + this->edge_factor = EdgeFactorView( + "specfem::assembly::coupled_interfaces::edge_factor", nedges, ngllx); + this->edge_normal = EdgeNormalView( + "specfem::assembly::coupled_interfaces::edge_normal", nedges, ngllx, 2); + + this->h_edge_factor = Kokkos::create_mirror_view(edge_factor); + this->h_edge_normal = Kokkos::create_mirror_view(edge_normal); + + const auto weights = mesh.h_weights; + + for (int i = 0; i < nedges; ++i) { + const int ispec = self_edges(i).ispec; + const auto edge_type = self_edges(i).edge_type; + + const int npoints = + connection_mapping.number_of_points_on_orientation(edge_type); + for (int ipoint = 0; ipoint < npoints; ++ipoint) { + const auto [iz, ix] = + connection_mapping.coordinates_at_edge(edge_type, ipoint); + specfem::point::jacobian_matrix + point_jacobian_matrix; + specfem::point::index point_index{ + ispec, iz, ix + }; + specfem::assembly::load_on_host(point_index, jacobian_matrix, + point_jacobian_matrix); + const auto dn = point_jacobian_matrix.compute_normal(edge_type); + this->h_edge_normal(i, ipoint, 0) = dn(0); + this->h_edge_normal(i, ipoint, 1) = dn(1); + const std::array w{ weights(ix), weights(iz) }; + this->h_edge_factor(i, ipoint) = [&]() { + switch (edge_type) { + case specfem::mesh_entity::type::bottom: + case specfem::mesh_entity::type::top: + return w[0]; + case specfem::mesh_entity::type::left: + case specfem::mesh_entity::type::right: + return w[1]; + default: + KOKKOS_ABORT_WITH_LOCATION("Invalid edge type"); + return static_cast(0.0); + } + return static_cast(0.0); + }(); } } - Kokkos::deep_copy(medium1_index_mapping, h_medium1_index_mapping); - Kokkos::deep_copy(medium2_index_mapping, h_medium2_index_mapping); - Kokkos::deep_copy(medium1_edge_type, h_medium1_edge_type); - Kokkos::deep_copy(medium2_edge_type, h_medium2_edge_type); - Kokkos::deep_copy(medium1_edge_factor, h_medium1_edge_factor); - Kokkos::deep_copy(medium2_edge_factor, h_medium2_edge_factor); - Kokkos::deep_copy(medium1_edge_normal, h_medium1_edge_normal); - Kokkos::deep_copy(medium2_edge_normal, h_medium2_edge_normal); - - return; + Kokkos::deep_copy(edge_factor, h_edge_factor); + Kokkos::deep_copy(edge_normal, h_edge_normal); } diff --git a/core/specfem/assembly/coupled_interfaces/interface_container.hpp b/core/specfem/assembly/coupled_interfaces/interface_container.hpp deleted file mode 100644 index 0630be278..000000000 --- a/core/specfem/assembly/coupled_interfaces/interface_container.hpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "enumerations/interface.hpp" - -namespace specfem::assembly { - -/** - * @brief Container for coupled interfaces between two mediums - * @tparam DimensionTag Dimension of spectral elements - */ -template -struct interface_container; - -} // namespace specfem::assembly - -#include "dim2/impl/interface_container.hpp" -#include "dim2/impl/interface_container.tpp" diff --git a/core/specfem/assembly/edge_types.hpp b/core/specfem/assembly/edge_types.hpp new file mode 100644 index 000000000..3938394fa --- /dev/null +++ b/core/specfem/assembly/edge_types.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "enumerations/interface.hpp" + +namespace specfem::assembly { + +template struct edge_types; + +} // namespace specfem::assembly + +#include "edge_types/dim2/edge_types.hpp" diff --git a/core/specfem/assembly/edge_types/dim2/edge_types.cpp b/core/specfem/assembly/edge_types/dim2/edge_types.cpp new file mode 100644 index 000000000..d2c417b67 --- /dev/null +++ b/core/specfem/assembly/edge_types/dim2/edge_types.cpp @@ -0,0 +1,148 @@ +#include "specfem/assembly/edge_types.hpp" +#include "enumerations/interface.hpp" +#include "enumerations/material_definitions.hpp" +#include "mesh/mesh.hpp" +#include "specfem/assembly/element_types.hpp" +#include + +using EdgeViewType = + Kokkos::View; + +specfem::assembly::edge_types::edge_types( + const int ngllx, const int ngllz, + const specfem::assembly::mesh &mesh, + const specfem::assembly::element_types &element_types, + const specfem::mesh::coupled_interfaces &coupled_interfaces) { + + // Count the number of interfaces for each combination of connection + FOR_EACH_IN_PRODUCT( + (DIMENSION_TAG(DIM2), CONNECTION_TAG(WEAKLY_CONFORMING), + INTERFACE_TAG(ELASTIC_ACOUSTIC, ACOUSTIC_ELASTIC), + BOUNDARY_TAG(NONE, STACEY, ACOUSTIC_FREE_SURFACE, + COMPOSITE_STACEY_DIRICHLET)), + CAPTURE(h_self_edges, h_coupled_edges, self_edges, coupled_edges) { + int count = 0; + constexpr auto self_medium = + specfem::interface::attributes<_dimension_tag_, + _interface_tag_>::self_medium(); + constexpr auto coupled_medium = + specfem::interface::attributes<_dimension_tag_, + _interface_tag_>::coupled_medium(); + if (_connection_tag_ == specfem::connections::type::weakly_conforming) { + const auto interface_container = + coupled_interfaces.template get(); + const int nedges = + interface_container.num_interfaces; // number of edges + for (int iedge = 0; iedge < nedges; ++iedge) { + const int ispec1_mesh = + interface_container.medium1_index_mapping(iedge); + const int ispec2_mesh = + interface_container.medium2_index_mapping(iedge); + const int ispec1 = mesh.mesh_to_compute(ispec1_mesh); + const auto boundary_tag = element_types.get_boundary_tag(ispec1); + if (boundary_tag == _boundary_tag_) { + count++; + } + } + + _self_edges_ = EdgeViewType( + "specfem::assembly::interface_types::self_edges", count); + _coupled_edges_ = EdgeViewType( + "specfem::assembly::interface_types::coupled_edges", count); + _h_self_edges_ = Kokkos::create_mirror_view(_self_edges_); + _h_coupled_edges_ = Kokkos::create_mirror_view(_coupled_edges_); + } + }) + + static const auto connection_mapping = + specfem::connections::connection_mapping(ngllx, ngllz); + + FOR_EACH_IN_PRODUCT( + (DIMENSION_TAG(DIM2), CONNECTION_TAG(WEAKLY_CONFORMING), + INTERFACE_TAG(ELASTIC_ACOUSTIC, ACOUSTIC_ELASTIC), + BOUNDARY_TAG(NONE, STACEY, ACOUSTIC_FREE_SURFACE, + COMPOSITE_STACEY_DIRICHLET)), + CAPTURE(h_self_edges, h_coupled_edges, self_edges, coupled_edges) { + int index = 0; + constexpr auto self_medium = + specfem::interface::attributes<_dimension_tag_, + _interface_tag_>::self_medium(); + constexpr auto coupled_medium = + specfem::interface::attributes<_dimension_tag_, + _interface_tag_>::coupled_medium(); + if (_connection_tag_ == specfem::connections::type::weakly_conforming) { + const auto interface_container = + coupled_interfaces.template get(); + const int nedges = + interface_container.num_interfaces; // number of edges + for (int iedge = 0; iedge < nedges; ++iedge) { + const int ispec1_mesh = + interface_container.medium1_index_mapping(iedge); + const int ispec2_mesh = + interface_container.medium2_index_mapping(iedge); + const int ispec1 = mesh.mesh_to_compute(ispec1_mesh); + const int ispec2 = mesh.mesh_to_compute(ispec2_mesh); + const auto boundary_tag = element_types.get_boundary_tag(ispec1); + if (boundary_tag == _boundary_tag_) { + const auto edge1 = interface_container.medium1_edge_type(iedge); + const auto edge2 = interface_container.medium2_edge_type(iedge); + const auto flip = + connection_mapping.flip_orientation(edge1, edge2); + _h_self_edges_(index) = + specfem::mesh_entity::edge{ ispec1, edge1, false }; + _h_coupled_edges_(index) = + specfem::mesh_entity::edge{ ispec2, edge2, flip }; + index++; + } + } + Kokkos::deep_copy(_self_edges_, _h_self_edges_); + Kokkos::deep_copy(_coupled_edges_, _h_coupled_edges_); + } + }) + + return; +} + +std::tuple +specfem::assembly::edge_types:: + get_edges_on_host(const specfem::connections::type connection, + const specfem::interface::interface_tag edge, + const specfem::element::boundary_tag boundary) const { + + FOR_EACH_IN_PRODUCT( + (DIMENSION_TAG(DIM2), CONNECTION_TAG(WEAKLY_CONFORMING), + INTERFACE_TAG(ELASTIC_ACOUSTIC, ACOUSTIC_ELASTIC), + BOUNDARY_TAG(NONE, STACEY, ACOUSTIC_FREE_SURFACE, + COMPOSITE_STACEY_DIRICHLET)), + CAPTURE(h_self_edges, h_coupled_edges) { + if (_connection_tag_ == connection && _interface_tag_ == edge && + _boundary_tag_ == boundary) { + return std::make_tuple(_h_self_edges_, _h_coupled_edges_); + } + }) + + throw std::runtime_error( + "Connection type, interface type or boundary type not found"); +} + +std::tuple +specfem::assembly::edge_types:: + get_edges_on_device(const specfem::connections::type connection, + const specfem::interface::interface_tag edge, + const specfem::element::boundary_tag boundary) const { + + FOR_EACH_IN_PRODUCT((DIMENSION_TAG(DIM2), CONNECTION_TAG(WEAKLY_CONFORMING), + INTERFACE_TAG(ELASTIC_ACOUSTIC, ACOUSTIC_ELASTIC), + BOUNDARY_TAG(NONE, STACEY, ACOUSTIC_FREE_SURFACE, + COMPOSITE_STACEY_DIRICHLET)), + CAPTURE(self_edges, coupled_edges) { + if (_connection_tag_ == connection && + _interface_tag_ == edge && + _boundary_tag_ == boundary) { + return std::make_tuple(_self_edges_, _coupled_edges_); + } + }) + + throw std::runtime_error( + "Connection type, interface type or boundary type not found"); +} diff --git a/core/specfem/assembly/edge_types/dim2/edge_types.hpp b/core/specfem/assembly/edge_types/dim2/edge_types.hpp new file mode 100644 index 000000000..1df30e3cd --- /dev/null +++ b/core/specfem/assembly/edge_types/dim2/edge_types.hpp @@ -0,0 +1,49 @@ +#pragma once + +#include "enumerations/interface.hpp" +#include "enumerations/material_definitions.hpp" +#include "mesh/mesh.hpp" +#include "specfem/assembly/element_types.hpp" +#include + +namespace specfem::assembly { + +template <> class edge_types { + +private: + using EdgeViewType = + Kokkos::View; + +public: + constexpr static auto dimension = specfem::dimension::type::dim2; + std::tuple + get_edges_on_host(const specfem::connections::type connection, + const specfem::interface::interface_tag edge, + const specfem::element::boundary_tag boundary) const; + + std::tuple + get_edges_on_device(const specfem::connections::type connection, + const specfem::interface::interface_tag edge, + const specfem::element::boundary_tag boundary) const; + + edge_types( + const int ngllx, const int ngllz, + const specfem::assembly::mesh &mesh, + const specfem::assembly::element_types &element_types, + const specfem::mesh::coupled_interfaces &coupled_interfaces); + + edge_types() = default; + +private: + FOR_EACH_IN_PRODUCT((DIMENSION_TAG(DIM2), CONNECTION_TAG(WEAKLY_CONFORMING), + INTERFACE_TAG(ELASTIC_ACOUSTIC, ACOUSTIC_ELASTIC), + BOUNDARY_TAG(NONE, ACOUSTIC_FREE_SURFACE, STACEY, + COMPOSITE_STACEY_DIRICHLET)), + DECLARE((EdgeViewType, self_edges), + (EdgeViewType::HostMirror, h_self_edges), + (EdgeViewType, coupled_edges), + (EdgeViewType::HostMirror, h_coupled_edges))) +}; + +} // namespace specfem::assembly diff --git a/core/specfem/assembly/fields/data_access.hpp b/core/specfem/assembly/fields/data_access.hpp index 84b6df266..97783358b 100644 --- a/core/specfem/assembly/fields/data_access.hpp +++ b/core/specfem/assembly/fields/data_access.hpp @@ -1,8 +1,9 @@ #pragma once -/* - @defgroup FieldDataAccess -*/ +/** + * @defgroup FieldDataAccess Field Data Access Functions + * @brief Data access functions for field operations + */ #include "dim2/add_on_device.hpp" #include "dim2/atomic_add_on_device.hpp" diff --git a/core/specfem/assembly/fields/dim2/impl/load_access_functions.hpp b/core/specfem/assembly/fields/dim2/impl/load_access_functions.hpp index 5f62caea6..1fdb8cede 100644 --- a/core/specfem/assembly/fields/dim2/impl/load_access_functions.hpp +++ b/core/specfem/assembly/fields/dim2/impl/load_access_functions.hpp @@ -217,4 +217,47 @@ load_after_simd_dispatch(const std::true_type, const IndexType &index, return; } +template ::value && + specfem::data_access::is_chunk_edge::value && + (specfem::data_access::is_field::value && ...)), + int> = 0> +KOKKOS_FORCEINLINE_FUNCTION void +load_after_simd_dispatch(const std::false_type, const IndexType &index, + const ContainerType &field, + AccessorTypes &...accessors) { + static_assert(!IndexType::using_simd, + "IndexType must not use SIMD in this overload"); + constexpr static auto MediumTag = + std::tuple_element_t<0, std::tuple >::medium_tag; + // Check that all accessors have the same medium tag + specfem::assembly::fields_impl::check_accessor_compatibility< + AccessorTypes...>(); + const auto current_field = field.template get_field(); + constexpr static int ncomponents = specfem::element::attributes< + std::tuple_element_t<0, std::tuple >::dimension_tag, + std::tuple_element_t<0, std::tuple >::medium_tag>:: + components; + + specfem::execution::for_each_level( + index.get_iterator(), + [&](const typename IndexType::iterator_type::index_type &iterator_index) { + const auto point_index = iterator_index.get_index(); + const auto iedge = point_index.get_policy_index(); + const int iglob = field.template get_iglob( + point_index.ispec, point_index.iz, point_index.ix, MediumTag); + for (int icomp = 0; icomp < ncomponents; ++icomp) { + (specfem::assembly::fields_impl::base_load_accessor< + on_device, AccessorTypes::data_class>( + iglob, icomp, current_field, + accessors(iedge, point_index.ipoint, icomp)), + ...); + } + }); + + return; +} + } // namespace specfem::assembly::simulation_field_impl diff --git a/core/specfem/assembly/fields/dim2/load_on_device.hpp b/core/specfem/assembly/fields/dim2/load_on_device.hpp index 6e556a480..85be68c78 100644 --- a/core/specfem/assembly/fields/dim2/load_on_device.hpp +++ b/core/specfem/assembly/fields/dim2/load_on_device.hpp @@ -36,30 +36,9 @@ KOKKOS_FORCEINLINE_FUNCTION void load_on_device(const IndexType &index, template ::value) && - (specfem::data_access::is_point::value) && - (specfem::data_access::is_field::value && ...)), - int> = 0> -KOKKOS_FORCEINLINE_FUNCTION void load_on_device(const IndexType &index, - const ContainerType &field, - AccessorTypes &...accessors) { - - constexpr static auto MediumTag = - std::tuple_element_t<0, std::tuple >::medium_tag; - - // Check that all accessors have the same medium tag - fields_impl::check_accessor_compatibility(); - - using simd_accessor_type = - std::integral_constant; - simulation_field_impl::load_after_simd_dispatch( - simd_accessor_type(), index, field, accessors...); - return; -} - -template ::value) && - (specfem::data_access::is_index_type::value) && + (specfem::data_access::is_point::value || + specfem::data_access::is_chunk_element::value || + specfem::data_access::is_chunk_edge::value) && (specfem::data_access::is_field::value && ...)), int> = 0> KOKKOS_FORCEINLINE_FUNCTION void load_on_device(const IndexType &index, diff --git a/core/specfem/assembly/jacobian_matrix/dim3/jacobian_matrix.cpp b/core/specfem/assembly/jacobian_matrix/dim3/jacobian_matrix.cpp index 1bcd4f36e..793c4f03a 100644 --- a/core/specfem/assembly/jacobian_matrix/dim3/jacobian_matrix.cpp +++ b/core/specfem/assembly/jacobian_matrix/dim3/jacobian_matrix.cpp @@ -62,10 +62,21 @@ specfem::assembly::jacobian_matrix:: h_gammaz = Kokkos::create_mirror_view(gammaz); h_jacobian = Kokkos::create_mirror_view(jacobian); + // Initialize the Kokkos view with single values + Kokkos::deep_copy(h_xix, mesh_jacobian.xix_regular); + Kokkos::deep_copy(h_xiy, mesh_jacobian.xix_regular); + Kokkos::deep_copy(h_xiz, mesh_jacobian.xix_regular); + Kokkos::deep_copy(h_etax, mesh_jacobian.xix_regular); + Kokkos::deep_copy(h_etay, mesh_jacobian.xix_regular); + Kokkos::deep_copy(h_etaz, mesh_jacobian.xix_regular); + Kokkos::deep_copy(h_gammax, mesh_jacobian.xix_regular); + Kokkos::deep_copy(h_gammay, mesh_jacobian.xix_regular); + Kokkos::deep_copy(h_gammaz, mesh_jacobian.xix_regular); + Kokkos::deep_copy(h_jacobian, mesh_jacobian.jacobian_regular); + if (mesh_jacobian.nspec_irregular > 0) { for (int ispec = 0; ispec < nspec; ispec++) { - // if element number is irregular if (mesh_jacobian.irregular_element_number(ispec)) { for (int iz = 0; iz < mesh_jacobian.ngllz; iz++) { @@ -88,38 +99,8 @@ specfem::assembly::jacobian_matrix:: } } } - } else { - for (int iz = 0; iz < mesh_jacobian.ngllz; iz++) { - for (int iy = 0; iy < mesh_jacobian.nglly; iy++) { - for (int ix = 0; ix < mesh_jacobian.ngllx; ix++) { - h_xix(ispec, iz, iy, ix) = mesh_jacobian.xix_regular; - h_xiy(ispec, iz, iy, ix) = mesh_jacobian.xix_regular; - h_xiz(ispec, iz, iy, ix) = mesh_jacobian.xix_regular; - h_etax(ispec, iz, iy, ix) = mesh_jacobian.xix_regular; - h_etay(ispec, iz, iy, ix) = mesh_jacobian.xix_regular; - h_etaz(ispec, iz, iy, ix) = mesh_jacobian.xix_regular; - h_gammax(ispec, iz, iy, ix) = mesh_jacobian.xix_regular; - h_gammay(ispec, iz, iy, ix) = mesh_jacobian.xix_regular; - h_gammaz(ispec, iz, iy, ix) = mesh_jacobian.xix_regular; - h_jacobian(ispec, iz, iy, ix) = mesh_jacobian.jacobian_regular; - } - } - } } } - - } else { - // Initialize the Kokkos view with single values - Kokkos::deep_copy(h_xix, mesh_jacobian.xix_regular); - Kokkos::deep_copy(h_xiy, mesh_jacobian.xix_regular); - Kokkos::deep_copy(h_xiz, mesh_jacobian.xix_regular); - Kokkos::deep_copy(h_etax, mesh_jacobian.xix_regular); - Kokkos::deep_copy(h_etay, mesh_jacobian.xix_regular); - Kokkos::deep_copy(h_etaz, mesh_jacobian.xix_regular); - Kokkos::deep_copy(h_gammax, mesh_jacobian.xix_regular); - Kokkos::deep_copy(h_gammay, mesh_jacobian.xix_regular); - Kokkos::deep_copy(h_gammaz, mesh_jacobian.xix_regular); - Kokkos::deep_copy(h_jacobian, mesh_jacobian.jacobian_regular); } this->sync_views(); diff --git a/core/specfem/assembly/jacobian_matrix/dim3/load_on_device.hpp b/core/specfem/assembly/jacobian_matrix/dim3/load_on_device.hpp index 05dbd0f3b..aa47cdd82 100644 --- a/core/specfem/assembly/jacobian_matrix/dim3/load_on_device.hpp +++ b/core/specfem/assembly/jacobian_matrix/dim3/load_on_device.hpp @@ -7,11 +7,14 @@ namespace specfem::assembly { -template ::value, - int> = 0> +template < + typename PointIndexType, typename ContainerType, typename PointType, + typename std::enable_if_t< + specfem::data_access::is_index_type::value && + PointIndexType::dimension_tag == specfem::dimension::type::dim3 && + !PointIndexType::using_simd && !PointType::simd::using_simd && + specfem::data_access::is_jacobian_matrix::value, + int> = 0> KOKKOS_FORCEINLINE_FUNCTION void load_on_device(const PointIndexType &index, const ContainerType &container, PointType &point) { diff --git a/core/specfem/assembly/jacobian_matrix/dim3/load_on_host.hpp b/core/specfem/assembly/jacobian_matrix/dim3/load_on_host.hpp index 76622727f..473f89993 100644 --- a/core/specfem/assembly/jacobian_matrix/dim3/load_on_host.hpp +++ b/core/specfem/assembly/jacobian_matrix/dim3/load_on_host.hpp @@ -7,19 +7,23 @@ namespace specfem::assembly { -template = 0> +template < + typename PointIndexType, typename ContainerType, typename PointType, + typename std::enable_if_t< + specfem::data_access::is_index_type::value && + PointIndexType::dimension_tag == specfem::dimension::type::dim3 && + !PointIndexType::using_simd && !PointType::simd::using_simd && + specfem::data_access::is_jacobian_matrix::value, + int> = 0> void load_on_host(const PointIndexType &index, const ContainerType &container, PointType &point) { + + constexpr static bool load_jacobian = PointType::store_jacobian; + static_assert( specfem::data_access::CheckCompatibility::value, - "Incompatible types"); - - constexpr static bool load_jacobian = PointType::store_jacobian; + "Incompatible Index, Container, and Point Types."); point.xix = container.h_xix(index.ispec, index.iz, index.iy, index.ix); point.xiy = container.h_xiy(index.ispec, index.iz, index.iy, index.ix); diff --git a/core/specfem/assembly/jacobian_matrix/dim3/store_on_host.hpp b/core/specfem/assembly/jacobian_matrix/dim3/store_on_host.hpp index e851ab6cf..78b573b48 100644 --- a/core/specfem/assembly/jacobian_matrix/dim3/store_on_host.hpp +++ b/core/specfem/assembly/jacobian_matrix/dim3/store_on_host.hpp @@ -7,17 +7,20 @@ namespace specfem::assembly { -template = 0> +template < + typename PointIndexType, typename PointType, typename ContainerType, + typename std::enable_if_t< + specfem::data_access::is_index_type::value && + PointIndexType::dimension_tag == specfem::dimension::type::dim3 && + !PointIndexType::using_simd && !PointType::simd::using_simd && + specfem::data_access::is_jacobian_matrix::value, + int> = 0> void store_on_host(const PointIndexType &index, const PointType &point, const ContainerType &container) { static_assert( specfem::data_access::CheckCompatibility::value, - "Incompatible types"); + "Incompatible Index, Container, and Point Types."); constexpr static bool store_jacobian = PointType::store_jacobian; diff --git a/core/specfem/assembly/mesh.hpp b/core/specfem/assembly/mesh.hpp index 45f6e2b04..17f220b9b 100644 --- a/core/specfem/assembly/mesh.hpp +++ b/core/specfem/assembly/mesh.hpp @@ -1,7 +1,5 @@ #pragma once -#pragma once - #include "enumerations/interface.hpp" namespace specfem::assembly::mesh_impl { @@ -19,10 +17,16 @@ template struct adjacency_graph; } // namespace specfem::assembly::mesh_impl namespace specfem::assembly { +/** + * @brief Assembled 3D mesh representation for spectral element analysis. + * + * @tparam Dimension The spatial dimension (e.g., dim2 or dim3). + */ template struct mesh; } // namespace specfem::assembly // Include dim2 declarations #include "mesh/dim2/mesh.hpp" + // Include dim3 declarations #include "mesh/dim3/mesh.hpp" diff --git a/core/specfem/assembly/mesh/dim2/impl/points.hpp b/core/specfem/assembly/mesh/dim2/impl/points.hpp index 964889559..5b5c3185d 100644 --- a/core/specfem/assembly/mesh/dim2/impl/points.hpp +++ b/core/specfem/assembly/mesh/dim2/impl/points.hpp @@ -8,10 +8,13 @@ namespace specfem::assembly::mesh_impl { /** * @brief Spectral element assembly information * + * This struct contains information about the coordinates and their local + * to global mapping. + * */ template <> struct points { public: - constexpr static auto dimension = + constexpr static auto dimension_tag = specfem::dimension::type::dim2; ///< Dimension constexpr static int ndim = 2; ///< Number of dimensions int nspec; ///< Number of spectral elements diff --git a/core/specfem/assembly/mesh/dim2/impl/shape_functions.hpp b/core/specfem/assembly/mesh/dim2/impl/shape_functions.hpp index a21406b54..b27664ae2 100644 --- a/core/specfem/assembly/mesh/dim2/impl/shape_functions.hpp +++ b/core/specfem/assembly/mesh/dim2/impl/shape_functions.hpp @@ -10,8 +10,9 @@ namespace specfem::assembly::mesh_impl { * */ template <> struct shape_functions { + public: - constexpr static auto dimension = + constexpr static auto dimension_tag = specfem::dimension::type::dim2; ///< Dimension int ngllz; ///< Number of quadrature points in z dimension int ngllx; ///< Number of quadrature points in x dimension diff --git a/core/specfem/assembly/mesh/dim2/impl/utilities.hpp b/core/specfem/assembly/mesh/dim2/impl/utilities.hpp index a5b017921..b9650bb4f 100644 --- a/core/specfem/assembly/mesh/dim2/impl/utilities.hpp +++ b/core/specfem/assembly/mesh/dim2/impl/utilities.hpp @@ -5,45 +5,143 @@ #include #include -/* +namespace specfem { +namespace assembly { +namespace mesh_impl { + +/** + * @namespace specfem::assembly::mesh_impl::dim2 + * + * @brief Utility functions for 2D mesh operations + * * Utility functions for 2D mesh operations * This header is technically part of the implementation details, but the * functions declared here are intended for testing as well and therefore * exposed. */ - -namespace specfem { -namespace assembly { -namespace mesh_impl { namespace dim2 { +/** + * @brief Represents a point in 2D space with coordinates and + * global/local indices + */ struct point { - type_real x = 0, z = 0; - int iloc = 0, iglob = 0; + type_real x = 0; ///< x coordinate + type_real z = 0; ///< z coordinate + int iloc = 0; ///< local index + int iglob = 0; ///< global index }; +/** + * @brief Represents a bounding box in 2D space + * + * This structure defines the minimum and maximum extents of a 2D region. + * required by the index mapping procedure. + */ struct bounding_box { - type_real xmin = std::numeric_limits::max(); - type_real xmax = std::numeric_limits::min(); - type_real zmin = std::numeric_limits::max(); - type_real zmax = std::numeric_limits::min(); + type_real xmin = + std::numeric_limits::max(); ///< Minimum x coordinate + type_real xmax = + std::numeric_limits::min(); ///< Maximum x coordinate + type_real zmin = + std::numeric_limits::max(); ///< Minimum z coordinate + type_real zmax = + std::numeric_limits::min(); ///< Maximum z coordinate }; +/** + * @brief Computes the spatial tolerance for a set of 2D points + * + * This function calculates the spatial tolerance based on the distribution + * of points in the mesh. It is used to determine the acceptable level of + * precision for spatial operations. + * + * @param points The 2D points to analyze + * @param nspec The number of spectral elements + * @param ngllxz The number of Gauss-Lobatto-Legendre points in the x and z + * directions + * @return type_real The computed spatial tolerance + */ type_real compute_spatial_tolerance(const std::vector &points, int nspec, int ngllxz); +/** + * @brief Flattens a 4D array of global coordinates into a 2D vector of points + * + * This function takes a 4D array of global coordinates and converts it into + * a 2D vector of point structures, which contain the relevant coordinate + * information for each point in the mesh. + * + * @param global_coordinates The 4D array of global coordinates + * @return std::vector The flattened vector of points + */ std::vector flatten_coordinates( const specfem::kokkos::HostView4d &global_coordinates); +/** + * @brief Sorts a vector of 2D points spatially + * + * This function sorts the points in the vector based on their spatial + * coordinates (x and z). The sorting is performed in-place. + * + * @param points The vector of 2D points to sort + */ void sort_points_spatially(std::vector &points); +/** + * @brief Assigns global numbering to a vector of 2D points + * + * This function assigns a global index to each point in the vector based + * on its spatial location. The global numbering is used to establish a + * consistent ordering of points across different processes. + * + * @param points The vector of 2D points to assign global numbering + * @param tolerance The spatial tolerance for determining point proximity + * @return int The number of unique global indices assigned + */ int assign_global_numbering(std::vector &points, type_real tolerance); +/** + * @brief Reorders a vector of 2D points to match the original layout + * + * This function takes a vector of sorted 2D points and reorders them + * to match the original layout before sorting. This is useful for + * maintaining consistency between different representations of the mesh. + * + * @param sorted_points The vector of sorted 2D points + * @return std::vector The reordered vector of points + */ std::vector reorder_to_original_layout(const std::vector &sorted_points); +/** + * @brief Computes the bounding box for a set of 2D points + * + * This function calculates the minimum and maximum extents of the + * points in the x and z dimensions, effectively creating a bounding + * box that encloses all the points. + * + * @param points The vector of 2D points to analyze + * @return bounding_box The computed bounding box + */ bounding_box compute_bounding_box(const std::vector &points); +/** + * @brief Create a coordinate arrays object + * + * Given the reordered 2D points and the mesh specifications, this function + * creates the necessary unique coordinate arrays for the simulation, as well as + * the associated mapping from local coordinates local to global coordinates, + * number of total points. + * + * @param reordered_points The vector of reordered 2D points + * @param nspec The number of spectral elements + * @param ngll The number of Gauss-Lobatto-Legendre points + * @param nglob The number of global points + * @return std::tuple, Kokkos::View, int> + */ std::tuple, Kokkos::View, int> diff --git a/core/specfem/assembly/mesh/dim2/mesh.hpp b/core/specfem/assembly/mesh/dim2/mesh.hpp index 9fd3b9d14..a0d0d64f7 100644 --- a/core/specfem/assembly/mesh/dim2/mesh.hpp +++ b/core/specfem/assembly/mesh/dim2/mesh.hpp @@ -52,10 +52,15 @@ struct mesh const specfem::quadrature::quadratures &quadratures, const specfem::mesh::adjacency_graph &adjacency_graph); + // TODO(Rohit: ADJ_GRAPH_DEFAULT) + // Remove assemble_legacy functionality when adjacency graph is the default + // feature for store mesh adjancencies void assemble_legacy(); void assemble(); + // TODO(Rohit: ADJ_GRAPH_DEFAULT) + // The graph should never be empty after it is made as default bool adjacency_graph_empty() const { return static_cast &>(*this) @@ -78,7 +83,7 @@ struct mesh * @tparam MemberType Member type. Needs to be a Kokkos::TeamPolicy member type * @tparam ViewType View type. Needs to be of @ref specfem::element::quadrature * @param team Team member - * @param quadrature Quadrature data + * @param mesh Mesh data * @param element_quadrature Quadrature data for the element (output) */ template @@ -134,7 +139,7 @@ impl_load(const MemberType &team, * @tparam MemberType Member type. Needs to be a Kokkos::TeamPolicy member type * @tparam ViewType View type. Needs to be of @ref specfem::element::quadrature * @param team Team member - * @param quadrature Quadrature data + * @param mesh Mesh data * @param element_quadrature Quadrature data for the element (output) */ template @@ -155,7 +160,7 @@ load_on_device(const MemberType &team, * @tparam MemberType Member type. Needs to be a Kokkos::TeamPolicy member type * @tparam ViewType View type. Needs to be of @ref specfem::element::quadrature * @param team Team member - * @param quadrature Quadrature data + * @param mesh Mesh data * @param element_quadrature Quadrature data for the element (output) */ template diff --git a/core/specfem/assembly/mesh/dim3/impl/shape_functions.hpp b/core/specfem/assembly/mesh/dim3/impl/shape_functions.hpp index 60ecc06d7..bba316882 100644 --- a/core/specfem/assembly/mesh/dim3/impl/shape_functions.hpp +++ b/core/specfem/assembly/mesh/dim3/impl/shape_functions.hpp @@ -10,8 +10,10 @@ namespace specfem::assembly::mesh_impl { * */ template <> struct shape_functions { +private: + constexpr static int ndim = 3; ///< Number of dimensions public: - constexpr static auto dimension = + constexpr static auto dimension_tag = specfem::dimension::type::dim3; ///< Dimension int ngllz; ///< Number of quadrature points in z dimension int nglly; ///< Number of quadrature points in y dimension diff --git a/core/specfem/assembly/mesh/impl/quadrature.hpp b/core/specfem/assembly/mesh/impl/quadrature.hpp index abc4f8e16..14cc5487b 100644 --- a/core/specfem/assembly/mesh/impl/quadrature.hpp +++ b/core/specfem/assembly/mesh/impl/quadrature.hpp @@ -6,8 +6,13 @@ namespace specfem::assembly::mesh_impl { +/** + * @brief Gauss-Lobatto-Legendre quadrature points and weights + * + * @tparam DimensionTag Dimension tag (2D or 3D) + */ template struct GLLQuadrature { - constexpr static auto dimension = DimensionTag; ///< Dimension tag + constexpr static auto dimension_tag = DimensionTag; ///< Dimension tag using ViewType = Kokkos::View; using DViewType = Kokkos::View struct GLLQuadrature { ViewType::HostMirror h_xi; ///< Quadrature points ViewType::HostMirror h_weights; ///< Quadrature weights + /** + * @brief Construct a new GLLQuadrature object + * + */ GLLQuadrature() = default; + /** + * @brief Construct a new GLLQuadrature object + * + * @param quadratures quadratures object + */ GLLQuadrature(const specfem::quadrature::quadratures &quadratures) : N(quadratures.gll.get_N()), xi(quadratures.gll.get_xi()), weights(quadratures.gll.get_w()), h_xi(quadratures.gll.get_hxi()), @@ -34,15 +48,22 @@ template struct GLLQuadrature { /** * @brief Information about the integration quadratures * + * This struct provides access to the quadrature points and weights for a given + * dimension. */ template struct quadrature : public specfem::assembly::mesh_impl::GLLQuadrature { public: - constexpr static auto dimension = DimensionTag; ///< Dimension tag + constexpr static auto dimension_tag = DimensionTag; ///< Dimension tag quadrature() = default; + /** + * @brief Construct a new quadrature object + * + * @param quadratures quadratures object + */ quadrature(const specfem::quadrature::quadratures &quadratures) : specfem::assembly::mesh_impl::GLLQuadrature(quadratures) { } diff --git a/core/specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection.cpp b/core/specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection.cpp new file mode 100644 index 000000000..af36b43b4 --- /dev/null +++ b/core/specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection.cpp @@ -0,0 +1,167 @@ + +#include "compute_intersection.hpp" +#include "Kokkos_Core_fwd.hpp" +#include "algorithms/locate_point_impl.hpp" +#include "enumerations/dimension.hpp" +#include "enumerations/mesh_entities.hpp" +#include "specfem/jacobian/dim2/jacobian.hpp" +#include "specfem/point/coordinates.hpp" +#include "specfem_setup.hpp" +#include +#include + +inline std::pair< + specfem::point::global_coordinates, + specfem::point::global_coordinates > +edge_extents( + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> &element_coordinates, + const specfem::mesh_entity::type &side) { + switch (side) { + case specfem::mesh_entity::type::bottom: + // control nodes 0 and 1 + return { element_coordinates(0), element_coordinates(1) }; + case specfem::mesh_entity::type::right: + // control nodes 1 and 2 + return { element_coordinates(1), element_coordinates(2) }; + case specfem::mesh_entity::type::top: + // control nodes 3 and 2 (order for increasing xi) + return { element_coordinates(3), element_coordinates(2) }; + case specfem::mesh_entity::type::left: + // control nodes 0 and 3 (order for increasing gamma) + return { element_coordinates(0), element_coordinates(3) }; + default: + throw std::runtime_error( + "compute_intersection must be given edges. Found " + + specfem::mesh_entity::to_string(side) + ", instead."); + } +} + +std::vector > +specfem::assembly::nonconforming_interfaces_impl::compute_intersection( + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> &element1, + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> &element2, + const specfem::mesh_entity::type &edge1, + const specfem::mesh_entity::type &edge2, + const Kokkos::View &mortar_quadrature) { + constexpr type_real eps = 1e-5; + const int nquad = mortar_quadrature.extent(0); + + std::vector > intersections(nquad); + + // endpoints of edge on either element (local coord = lo:-1, hi:1) + const auto [p1_lo, p1_hi] = edge_extents(element1, edge1); + const auto [p2_lo, p2_hi] = edge_extents(element2, edge2); + + // crossover: find local coordinate of opposite side for each point + // we do not use the in_element flag. + const type_real p2lo_on_1 = + specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + p2_lo, element1, edge1, 0) + .first; + const type_real p2hi_on_1 = + specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + p2_hi, element1, edge1, 0) + .first; + const type_real p1lo_on_2 = + specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + p1_lo, element2, edge2, 0) + .first; + const type_real p1hi_on_2 = + specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + p1_hi, element2, edge2, 0) + .first; + + // recover the bounds of the intersection in local coordinates: + // get_local_edge_coordinate returns values within [-1,1], so an edge's own + // bounds are already factored in. + type_real inter_min_on_1 = std::min(p2lo_on_1, p2hi_on_1); + type_real inter_max_on_1 = std::max(p2lo_on_1, p2hi_on_1); + type_real inter_min_on_2 = std::min(p1lo_on_2, p1hi_on_2); + type_real inter_max_on_2 = std::max(p1lo_on_2, p1hi_on_2); + + if (inter_min_on_1 > inter_max_on_1 - eps || + inter_min_on_2 > inter_max_on_2 - eps) { + // no intersection + std::ostringstream oss; + + specfem::point::global_coordinates center1; + if (element1.extent(0) == 9) { + center1 = element1(8); + } else { + center1.x = + (element1(0).x + element1(1).x + element1(2).x + element1(3).x) / 4; + center1.z = + (element1(0).z + element1(1).z + element1(2).z + element1(3).z) / 4; + } + + specfem::point::global_coordinates center2; + if (element2.extent(0) == 9) { + center2 = element2(8); + } else { + center2.x = + (element2(0).x + element2(1).x + element2(2).x + element2(3).x) / 4; + center2.z = + (element2(0).z + element2(1).z + element2(2).z + element2(3).z) / 4; + } + + oss << "When computing intersections between element A (" + << specfem::mesh_entity::to_string(edge1) << ") and element B (" + << specfem::mesh_entity::to_string(edge2) + << "), no intersection was found.\n" + << "\n" + << "Element A center: " << center1 << "\n" + << " Edge between: " << p1_lo << " - " << p1_hi << "\n" + << " intersection in local coordinates: [" << inter_min_on_1 << "," + << inter_max_on_1 << "]\n" + << "Element B center: " << center2 << "\n" + << " Edge between: " << p2_lo << " - " << p2_hi << "\n" + << " intersection in local coordinates: [" << inter_min_on_2 << "," + << inter_max_on_2 << "]\n"; + + throw std::runtime_error(oss.str()); + } + + /* we may get better accuracy if we properly space out the mortar quadrature + * points to have |ds| approx constant, but for now just scale points linearly + * along ispec's local coordinates. + */ + for (int iquad = 0; iquad < nquad; ++iquad) { + const type_real xi_mortar = mortar_quadrature(iquad); + // map from [-1,1] to [inter_min_on_1,inter_max_on_1] + const type_real xi_i = + 0.5 * ((inter_max_on_1 - inter_min_on_1) * xi_mortar + + (inter_max_on_1 + inter_min_on_1)); + intersections[iquad].first = xi_i; + + // find corresponding coordinate on jspec through global mapping: + + const auto [xi, gamma] = [&]() -> std::pair { + if (edge1 == specfem::mesh_entity::type::bottom) { + return { xi_i, -1 }; + } else if (edge1 == specfem::mesh_entity::type::right) { + return { 1, xi_i }; + } else if (edge1 == specfem::mesh_entity::type::top) { + return { xi_i, 1 }; + } else { + return { -1, xi_i }; + } + }(); + + // map from [-1,1] to [inter_min_on_2,inter_max_on_2]. Recover global coord + // through xi_i + intersections[iquad].second = + specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + specfem::jacobian::compute_locations(element1, element1.extent(0), + xi, gamma), + element2, edge2, 0) + .first; + } + + return intersections; +} diff --git a/core/specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection.hpp b/core/specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection.hpp new file mode 100644 index 000000000..e318a9595 --- /dev/null +++ b/core/specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection.hpp @@ -0,0 +1,43 @@ +#pragma once + +#include "enumerations/dimension.hpp" +#include "enumerations/mesh_entities.hpp" +#include "quadrature/interface.hpp" +#include "quadrature/quadrature.hpp" +#include "specfem/point.hpp" + +#include + +namespace specfem::assembly::nonconforming_interfaces_impl { + +/** + * @brief Computes the intersection between two elements, returning the knots of + * the "mortar", the codimension 1 element joining them at their intersection, + * in the local coordinates of both elements. + * + * The intersection is expected to span the space between two of the four + * candidate endpoints (endpoints of either element edge). + * + * @param element1 - global coordinate representation of the first element. + * @param element2 - global coordinate representation of the second element. + * @param edge1 - edge on the first element + * @param edge2 - edge on the second element + * @param mortar_quadrature - a list of local (mortar space) knots describing + *          the quadrature rule on the interval [-1,1] + * @return std::vector > - a vector of length + * mortar_quadrature.extent(0), with each element retval[i] being a pair + * (element1_local_coord, element2_local_coord) corresponding to the mortar + * knot mortar_quadrature(i). + */ +std::vector > compute_intersection( + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> &element1, + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> &element2, + const specfem::mesh_entity::type &edge1, + const specfem::mesh_entity::type &edge2, + const Kokkos::View &mortar_quadrature); + +} // namespace specfem::assembly::nonconforming_interfaces_impl diff --git a/core/specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection_in_assembly.cpp b/core/specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection_in_assembly.cpp new file mode 100644 index 000000000..3be20144c --- /dev/null +++ b/core/specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection_in_assembly.cpp @@ -0,0 +1,49 @@ + +#include "compute_intersection.hpp" +#include "enumerations/mesh_entities.hpp" +#include "compute_intersection_in_assembly.hpp" +#include "specfem_setup.hpp" +#include +#include + +template +std::vector > +specfem::assembly::nonconforming_interfaces_impl::compute_intersection( + const specfem::assembly::mesh &mesh, + const EdgeType &edge, + const Kokkos::View &mortar_quadrature) { + + const auto &graph = mesh.graph(); + + // i is source, j is target + const int ispec = boost::source(edge, graph); + const int jspec = boost::target(edge, graph); + + const specfem::mesh_entity::type iorientation = graph[edge].orientation; + const auto [edge_inv, exists] = boost::edge(jspec, ispec, graph); + if (!exists) { + throw std::runtime_error( + "Non-symmetric adjacency graph detected in `compute_intersection`."); + } + const specfem::mesh_entity::type jorientation = graph[edge_inv].orientation; + + const int ngnod = mesh.ngnod; + + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> + coorg1("coorg1", ngnod); + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> + coorg2("coorg2", ngnod); + + for (int i = 0; i < ngnod; i++) { + coorg1(i).x = mesh.h_control_node_coord(0, ispec, i); + coorg2(i).z = mesh.h_control_node_coord(1, jspec, i); + } + + return specfem::assembly::nonconforming_interfaces_impl:: + compute_intersection(coorg1, coorg2, iorientation, jorientation, + mortar_quadrature); +} diff --git a/core/specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection_in_assembly.hpp b/core/specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection_in_assembly.hpp new file mode 100644 index 000000000..728dcf1f7 --- /dev/null +++ b/core/specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection_in_assembly.hpp @@ -0,0 +1,34 @@ +#pragma once + +#include "quadrature/interface.hpp" +#include "quadrature/quadrature.hpp" +#include "specfem/assembly.hpp" + +#include + +namespace specfem::assembly::nonconforming_interfaces_impl { + +/** + * @brief Computes the intersection between two elements, returning the knots of + * the "mortar", the codimension 1 element joining them at their intersection, + * in the local coordinates of both elements. + * + * The intersection is expected to span the space between two of the four + * candidate endpoints (endpoints of either element edge). + * + * @param mesh - the assembly::mesh object + * @param edge - the adjacency graph edge of the intersection. + * mesh.graph()[edge] should reference the edge we want to + * construct the intersection between. + * @param mortar_quadrature - a list of local (mortar space) knots describing + *          the quadrature rule on the interval [-1,1] + * @return std::vector > - a vector of length + * mortar_quadrature.extent(0), with each element retval[i] being a pair + * (element1_local_coord, element2_local_coord) corresponding to the mortar + * knot mortar_quadrature(i). + */ +template +std::vector > compute_intersection( + const specfem::assembly::mesh &mesh, + const EdgeType &edge, const Kokkos::View &mortar_quadrature); +} // namespace specfem::assembly::nonconforming_interfaces_impl diff --git a/core/specfem/assembly/receivers.hpp b/core/specfem/assembly/receivers.hpp index c353b9d39..9d70ea55a 100644 --- a/core/specfem/assembly/receivers.hpp +++ b/core/specfem/assembly/receivers.hpp @@ -12,10 +12,16 @@ namespace specfem::assembly { /** - * @brief Struct to store information related to the receivers + * @brief Assembly-level receiver management for spectral element simulations * + * This template class manages seismic receivers within assembled finite element + * meshes, providing efficient access to receiver data for both host and device + * computations. The receivers support seismogram recording with various output + * types (displacement, velocity, acceleration) and handle coordinate + * transformations for proper seismogram orientation based on receiver geometry. + * + * @tparam DimensionTag The spatial dimension (dim2 or dim3) */ - template struct receivers; } // namespace specfem::assembly diff --git a/core/specfem/assembly/receivers/dim2/receivers.hpp b/core/specfem/assembly/receivers/dim2/receivers.hpp index b4278dd38..c8fb897c4 100644 --- a/core/specfem/assembly/receivers/dim2/receivers.hpp +++ b/core/specfem/assembly/receivers/dim2/receivers.hpp @@ -6,6 +6,25 @@ namespace specfem::assembly { +/** + * @brief 2D assembly receiver specialization for seismic simulations + * + * Specialized implementation of receivers for 2D spectral element simulations. + * This class manages seismic receivers located within 2D finite element meshes, + * handling Lagrange interpolation for accurate field sampling and coordinate + * transformations using receiver angles for proper seismogram orientation. + * + * Key features for 2D: + * - Supports multiple medium types: elastic_psv, elastic_sh, acoustic, + * poroelastic + * - Uses angle-based coordinate rotation (sine/cosine) for 2D transformations + * - Records 2-component seismograms (typically horizontal and vertical) + * - Efficient Kokkos-based data structures for GPU computations + * + * The class inherits from both StationIterator (for station metadata) and + * SeismogramIterator (for time-series data access), providing a unified + * interface for receiver management and seismogram recording. + */ template <> struct receivers : public receivers_impl::StationIterator, @@ -151,21 +170,26 @@ struct receivers }; /** - * @defgroup ComputeReceiversDataAccess + * @defgroup ComputeReceiversDataAccess2D + * @brief 2D receiver data access functions for device computations + * + * These functions provide efficient access to receiver data during GPU kernel + * execution for 2D spectral element simulations. They handle loading of + * Lagrange interpolants and storing of seismogram components with proper + * indexing. */ /** * @brief Load the Lagrange interpolant for receivers associated with the * iterator on the device * - * @ingroup ComputeReceiversDataAccess + * @ingroup ComputeReceiversDataAccess2D * * @tparam ChunkIndexType Chunk index type @ref * specfem::execution::ChunkElementIndex * @tparam ViewType Lagrange interpolant associated with the receivers in the * iterator * - * @param team_member Kokkos team member * @param chunk_index Chunk index * @param receivers Receivers object containing the receiver information * @param lagrange_interpolant Lagrange interpolant associated with the @@ -214,7 +238,7 @@ load_on_device(const ChunkIndexType &chunk_index, * @c receivers.set_seismogram_step(isig_step); * @c receivers.set_seismogram_type(iseis); * - * @ingroup ComputeReceiversDataAccess + * @ingroup ComputeReceiversDataAccess2D * @tparam ChunkIndexType Chunk index type * @tparam SeismogramViewType View of the seismogram components * @param receivers Receivers object containing the receiver information diff --git a/core/specfem/assembly/receivers/dim3/receivers.hpp b/core/specfem/assembly/receivers/dim3/receivers.hpp index 7d5db4a61..61650fa14 100644 --- a/core/specfem/assembly/receivers/dim3/receivers.hpp +++ b/core/specfem/assembly/receivers/dim3/receivers.hpp @@ -6,6 +6,26 @@ namespace specfem::assembly { +/** + * @brief 3D assembly receiver specialization for seismic simulations + * + * Specialized implementation of receivers for 3D spectral element simulations. + * This class manages seismic receivers located within 3D finite element meshes, + * handling Lagrange interpolation for accurate field sampling and coordinate + * transformations using full 3x3 rotation matrices for proper seismogram + * orientation in three-dimensional space. + * + * Key features for 3D: + * - Currently supports elastic medium type only + * - Uses full 3x3 rotation matrices for coordinate transformations + * - Records 3-component seismograms (X, Y, Z or North, East, Up) + * - Advanced rotation capabilities for arbitrary receiver orientations + * - Efficient Kokkos-based data structures for GPU computations + * + * The class inherits from both StationIterator (for station metadata) and + * SeismogramIterator (for time-series data access), providing a unified + * interface for receiver management and seismogram recording. + */ template <> struct receivers : public receivers_impl::StationIterator, @@ -158,21 +178,26 @@ struct receivers }; /** - * @defgroup ComputeReceiversDataAccess + * @defgroup ComputeReceiversDataAccess3D + * @brief 3D receiver data access functions for device computations + * + * These functions provide efficient access to receiver data during GPU kernel + * execution for 3D spectral element simulations. They handle loading of + * Lagrange interpolants and storing of seismogram components with proper + * indexing for three-dimensional computations. */ /** * @brief Load the Lagrange interpolant for receivers associated with the * iterator on the device * - * @ingroup ComputeReceiversDataAccess + * @ingroup ComputeReceiversDataAccess3D * * @tparam ChunkIndexType Chunk index type @ref * specfem::execution::ChunkElementIndex * @tparam ViewType Lagrange interpolant associated with the receivers in the * iterator * - * @param team_member Kokkos team member * @param chunk_index Chunk index * @param receivers Receivers object containing the receiver information * @param lagrange_interpolant Lagrange interpolant associated with the @@ -227,7 +252,7 @@ load_on_device(const ChunkIndexType &chunk_index, * @c receivers.set_seismogram_step(isig_step); * @c receivers.set_seismogram_type(iseis); * - * @ingroup ComputeReceiversDataAccess + * @ingroup ComputeReceiversDataAccess3D * @tparam ChunkIndexType Chunk index type * @tparam SeismogramViewType View of the seismogram components * @param receivers Receivers object containing the receiver information diff --git a/core/specfem/assembly/sources.hpp b/core/specfem/assembly/sources.hpp index de6cb6e23..dc7d4744e 100644 --- a/core/specfem/assembly/sources.hpp +++ b/core/specfem/assembly/sources.hpp @@ -4,6 +4,16 @@ namespace specfem::assembly { +/** + * @brief Assembly-level source management for spectral element simulations + * + * This template class manages sources within assembled finite element meshes, + * providing efficient access to source data for both host and device + * computations. The sources are organized by medium type (elastic, acoustic, + * poroelastic) and support time-dependent source time functions. + * + * @tparam DimensionTag The spatial dimension (dim2 or dim3) + */ template struct sources; ///< Forward declaration of sources class diff --git a/core/specfem/assembly/sources/dim2/sources.hpp b/core/specfem/assembly/sources/dim2/sources.hpp index e1baef7f2..48c62dcd3 100644 --- a/core/specfem/assembly/sources/dim2/sources.hpp +++ b/core/specfem/assembly/sources/dim2/sources.hpp @@ -11,6 +11,21 @@ #include namespace specfem::assembly { +/** + * @brief 2D template specialization for assembly-level source management + * + * This class manages sources within 2D assembled finite element meshes, + * providing efficient data access patterns for spectral element simulations. + * Sources are organized by medium type (elastic_psv, elastic_sh, acoustic, + * poroelastic) and support time-dependent computations through source time + * functions. + * + * Key features: + * - Device/host memory management with Kokkos + * - Medium-specific source organization + * - Time-dependent source function evaluation + * - Lagrange interpolant computation for spectral elements + */ template <> struct sources { public: @@ -210,8 +225,14 @@ template <> struct sources { &sources); }; +/** + * @defgroup SourceDataAccess2D Source Data Access Functions + * @brief Data access functions for source operations + */ + /** * @brief Load source information on device at the given index + * @ingroup SourceDataAccess2D * * Loads source information on device at the given index. Make sure you set the @@ -279,6 +300,7 @@ KOKKOS_INLINE_FUNCTION void load_on_device( /** * @brief Load source information on host at the given index + * @ingroup SourceDataAccess2D * * Loads source information on device at the given index. Make sure you set the @@ -347,6 +369,7 @@ void load_on_host( /** * @brief Store source information on device at the given index + * @ingroup SourceDataAccess2D * * Loads source information on device at the given index. Make sure you set the @@ -411,6 +434,7 @@ KOKKOS_INLINE_FUNCTION void store_on_device( /** * @brief Store source information on host at the given index + * @ingroup SourceDataAccess2D * * Loads source information on device at the given index. Make sure you set the diff --git a/core/specfem/assembly/sources/dim3/sources.hpp b/core/specfem/assembly/sources/dim3/sources.hpp index b21a0784b..a7d25ba31 100644 --- a/core/specfem/assembly/sources/dim3/sources.hpp +++ b/core/specfem/assembly/sources/dim3/sources.hpp @@ -11,6 +11,20 @@ #include namespace specfem::assembly { +/** + * @brief 3D template specialization for assembly-level source management + * + * This class manages sources within 3D assembled finite element meshes, + * providing efficient data access patterns for spectral element simulations. + * Sources are organized by medium type (currently supporting elastic medium) + * and support time-dependent computations through source time functions. + * + * Key features: + * - Device/host memory management with Kokkos + * - Medium-specific source organization + * - Time-dependent source function evaluation + * - Lagrange interpolant computation for 3D spectral elements + */ template <> struct sources { public: @@ -204,8 +218,14 @@ template <> struct sources { &sources); }; +/** + * @defgroup SourceDataAccess3D Source Data Access Functions + * @brief Data access functions for source operations + */ + /** * @brief Load source information on device at the given index + * @ingroup SourceDataAccess3D * * Loads source information on device at the given index. Make sure you set the @@ -234,10 +254,10 @@ KOKKOS_INLINE_FUNCTION void load_on_device( static_assert(PointSourceType::dimension_tag == specfem::dimension::type::dim3, - "PointSourceType must be a 2D point source type"); + "PointSourceType must be a 3D point source type"); static_assert(IndexType::dimension_tag == specfem::dimension::type::dim3, - "IndexType must be a 2D index type"); + "IndexType must be a 3D index type"); #ifndef NDEBUG @@ -272,6 +292,7 @@ KOKKOS_INLINE_FUNCTION void load_on_device( /** * @brief Load source information on host at the given index + * @ingroup SourceDataAccess3D * * Loads source information on device at the given index. Make sure you set the @@ -302,10 +323,10 @@ void load_on_host( static_assert(PointSourceType::dimension_tag == specfem::dimension::type::dim3, - "PointSourceType must be a 2D point source type"); + "PointSourceType must be a 3D point source type"); static_assert(IndexType::dimension_tag == specfem::dimension::type::dim3, - "IndexType must be a 2D index type"); + "IndexType must be a 3D index type"); #ifndef NDEBUG const int isource = index.imap; @@ -339,6 +360,7 @@ void load_on_host( /** * @brief Store source information on device at the given index + * @ingroup SourceDataAccess3D * * Loads source information on device at the given index. Make sure you set the @@ -366,10 +388,10 @@ KOKKOS_INLINE_FUNCTION void store_on_device( static_assert(PointSourceType::dimension_tag == specfem::dimension::type::dim3, - "PointSourceType must be a 2D point source type"); + "PointSourceType must be a 3D point source type"); static_assert(IndexType::dimension_tag == specfem::dimension::type::dim3, - "IndexType must be a 2D index type"); + "IndexType must be a 3D index type"); #ifndef NDEBUG const int isource = index.imap; @@ -402,6 +424,7 @@ KOKKOS_INLINE_FUNCTION void store_on_device( /** * @brief Store source information on host at the given index + * @ingroup SourceDataAccess3D * * Loads source information on device at the given index. Make sure you set the @@ -429,10 +452,10 @@ void store_on_host( static_assert(PointSourceType::dimension_tag == specfem::dimension::type::dim3, - "PointSourceType must be a 2D point source type"); + "PointSourceType must be a 3D point source type"); static_assert(IndexType::dimension_tag == specfem::dimension::type::dim3, - "IndexType must be a 2D index type"); + "IndexType must be a 3D index type"); #ifndef NDEBUG const int isource = index.imap; diff --git a/core/specfem/assembly/sources/impl/dim2/source_medium.tpp b/core/specfem/assembly/sources/impl/dim2/source_medium.tpp index a41d2744f..40d311189 100644 --- a/core/specfem/assembly/sources/impl/dim2/source_medium.tpp +++ b/core/specfem/assembly/sources/impl/dim2/source_medium.tpp @@ -21,7 +21,7 @@ void print_view_info(const ViewType& view, const std::string& name) { // 2D Constructor /* -// CPP20_CHANGE +// TODO(Lucas : CPP20 update) template template requires (DimensionTag == specfem::dimension::type::dim2) @@ -73,7 +73,7 @@ specfem::assembly::sources_impl::source_medium::source_ // 2D load_on_device /* -// CPP20_CHANGE +// TODO(Lucas : CPP20 update) template template requires (DimensionTag == specfem::dimension::type::dim2) @@ -97,7 +97,7 @@ specfem::assembly::sources_impl::source_medium::load_on // 2D store_on_device /* -// CPP20_CHANGE +// TODO(Lucas : CPP20 update) template template requires (DimensionTag == specfem::dimension::type::dim2) @@ -121,7 +121,7 @@ specfem::assembly::sources_impl::source_medium::store_o // 2D load_on_host /* -// CPP20_CHANGE +// TODO(Lucas : CPP20 update) template template requires (DimensionTag == specfem::dimension::type::dim2) @@ -145,7 +145,7 @@ specfem::assembly::sources_impl::source_medium::load_on // 2D store_on_host /* -// CPP20_CHANGE +// TODO(Lucas : CPP20 update) template template requires (DimensionTag == specfem::dimension::type::dim2) diff --git a/core/specfem/assembly/sources/impl/dim3/source_medium.tpp b/core/specfem/assembly/sources/impl/dim3/source_medium.tpp index 3d710b61b..1ea200ef9 100644 --- a/core/specfem/assembly/sources/impl/dim3/source_medium.tpp +++ b/core/specfem/assembly/sources/impl/dim3/source_medium.tpp @@ -8,7 +8,7 @@ // 3D Constructor /* -// CPP20_CHANGE +// TODO(Lucas : CPP20 update) template template requires (DimensionTag == specfem::dimension::type::dim3) @@ -52,7 +52,7 @@ specfem::assembly::sources_impl::source_medium::source_ // 3D load_on_device /* -// CPP20_CHANGE +// TODO(Lucas : CPP20 update) template template requires (DimensionTag == specfem::dimension::type::dim3) @@ -76,7 +76,7 @@ specfem::assembly::sources_impl::source_medium::load_on // 3D store_on_device /* -// CPP20_CHANGE +// TODO(Lucas : CPP20 update) template template requires (DimensionTag == specfem::dimension::type::dim3) @@ -100,7 +100,7 @@ specfem::assembly::sources_impl::source_medium::store_o // 3D load_on_host /* -// CPP20_CHANGE +// TODO(Lucas : CPP20 update) template template requires (DimensionTag == specfem::dimension::type::dim3) @@ -124,7 +124,7 @@ specfem::assembly::sources_impl::source_medium::load_on // 3D store_on_host /* -// CPP20_CHANGE +// TODO(Lucas : CPP20 update) template template requires (DimensionTag == specfem::dimension::type::dim3) diff --git a/core/specfem/assembly/sources/impl/locate_sources.hpp b/core/specfem/assembly/sources/impl/locate_sources.hpp index 896c01f3a..f0c11195d 100644 --- a/core/specfem/assembly/sources/impl/locate_sources.hpp +++ b/core/specfem/assembly/sources/impl/locate_sources.hpp @@ -7,6 +7,16 @@ namespace specfem::assembly::sources_impl { +/** + * @brief Locate sources in the mesh. + * + * @tparam DimensionTag Dimension of the mesh + * @param element_types Type of elements inside the mesh + * @param mesh mesh struct containing global coordinates, mapping, control nodes + * etc. + * @param sources vector of source objects to be located and given an associated + * `medium_tag` + */ template void locate_sources( const specfem::assembly::element_types &element_types, diff --git a/core/specfem/assembly/sources/impl/source_medium.hpp b/core/specfem/assembly/sources/impl/source_medium.hpp index 3d85810de..1e2f53aed 100644 --- a/core/specfem/assembly/sources/impl/source_medium.hpp +++ b/core/specfem/assembly/sources/impl/source_medium.hpp @@ -19,7 +19,7 @@ specfem::point::local_coordinates locate_point( // EXTENT_IMPL_CHANGE -namespace { +namespace specfem::assembly::sources_impl { template struct ExtentImpl { using type = typename ExtentImpl::type *; }; @@ -28,7 +28,7 @@ template struct ExtentImpl { using type = T; }; -} // namespace +} // namespace specfem::assembly::sources_impl namespace specfem::assembly::sources_impl { /** @@ -67,7 +67,8 @@ struct source_medium { ///< functions // EXTENT_IMPL_CHANGE using SourceArrayView = - Kokkos::View::type, + Kokkos::View::type, Kokkos::LayoutRight, Kokkos::DefaultExecutionSpace>; constexpr static int components = @@ -92,6 +93,7 @@ struct source_medium { /** * @brief Compute source information for 2D case + * @details Constructs source information for 2D spectral elements */ template ::type @@ -105,7 +107,9 @@ struct source_medium { const type_real t0, const type_real dt, const int nsteps); /** + * @overload * @brief Compute source information for 3D case + * @details Constructs source information for 3D spectral elements */ template ::type @@ -131,7 +135,7 @@ struct source_medium { ///< source_array /* - // CPP20_CHANGE + // TODO(Lucas : CPP20 update) template requires (DimensionTag == specfem::dimension::type::dim2) KOKKOS_INLINE_FUNCTION void load_on_device(...) const; @@ -157,7 +161,7 @@ struct source_medium { PointSourceType &point_source) const; /* - // CPP20_CHANGE + // TODO(Lucas : CPP20 update) template requires (DimensionTag == specfem::dimension::type::dim2) KOKKOS_INLINE_FUNCTION void store_on_device(...) const; @@ -183,7 +187,7 @@ struct source_medium { const PointSourceType &point_source) const; /* - // CPP20_CHANGE + // TODO(Lucas : CPP20 update) template requires (DimensionTag == specfem::dimension::type::dim2) void load_on_host(...) const; @@ -207,7 +211,7 @@ struct source_medium { PointSourceType &point_source) const; /* - // CPP20_CHANGE + // TODO(Lucas : CPP20 update) template requires (DimensionTag == specfem::dimension::type::dim2) */ @@ -219,7 +223,7 @@ struct source_medium { const PointSourceType &point_source) const; /* - // CPP20_CHANGE + // TODO(Lucas : CPP20 update) template requires (DimensionTag == specfem::dimension::type::dim3) */ diff --git a/core/specfem/chunk_edge/index.hpp b/core/specfem/chunk_edge/index.hpp new file mode 100644 index 000000000..fd8c07ddd --- /dev/null +++ b/core/specfem/chunk_edge/index.hpp @@ -0,0 +1,52 @@ +#pragma once + +#include "enumerations/interface.hpp" +#include "execution/chunked_edge_iterator.hpp" +#include "specfem/data_access.hpp" + +namespace specfem::chunk_edge { + +template +class Index + : public specfem::execution::ChunkEdgeIndex, + public specfem::data_access::Accessor< + specfem::data_access::AccessorType::chunk_edge, + specfem::data_access::DataClassType::index, DimensionTag, false> { +private: + using base_type = + specfem::execution::ChunkEdgeIndex; + +public: + /// @brief Iterator type for traversing elements in the chunk + using iterator_type = typename base_type::iterator_type; + + /** + * @brief Construct index from existing chunk element index base. + * + * Creates a chunk element index by wrapping an existing ChunkElementIndex + * object. This constructor is useful when you already have a base chunk + * element index and want to add the data access layer functionality. + * + * @param base The base chunk element index to wrap + * + * @code{.cpp} + * // Create base chunk element index + * auto base_index = specfem::execution::ChunkElementIndex<...>(...); + * + * // Wrap it with data access layer + * IndexType chunk_index(base_index); + * @endcode + */ + KOKKOS_INLINE_FUNCTION + Index(const base_type &base) : base_type(base) {} + + KOKKOS_INLINE_FUNCTION + Index(const ViewType indices, const int &ngllz, const int &ngllx, + const TeamMemberType &kokkos_index) + : base_type(indices, ngllz, ngllx, kokkos_index) {} +}; + +} // namespace specfem::chunk_edge diff --git a/core/specfem/data_access/check_compatibility.hpp b/core/specfem/data_access/check_compatibility.hpp index acf3044f1..1ddae0325 100644 --- a/core/specfem/data_access/check_compatibility.hpp +++ b/core/specfem/data_access/check_compatibility.hpp @@ -89,6 +89,41 @@ struct is_field< T::data_class == specfem::data_access::DataClassType::mass_matrix> > : std::true_type {}; +template +struct is_displacement : std::false_type {}; + +template +struct is_displacement< + T, std::enable_if_t > + : std::true_type {}; + +template struct is_velocity : std::false_type {}; + +template +struct is_velocity< + T, std::enable_if_t > + : std::true_type {}; + +template +struct is_acceleration : std::false_type {}; + +template +struct is_acceleration< + T, std::enable_if_t > + : std::true_type {}; + +template +struct is_mass_matrix : std::false_type {}; + +template +struct is_mass_matrix< + T, std::enable_if_t > + : std::true_type {}; + template struct is_index_type : std::false_type {}; @@ -96,7 +131,8 @@ template struct is_index_type< T, std::enable_if_t< T::data_class == specfem::data_access::DataClassType::index || - T::data_class == specfem::data_access::DataClassType::mapped_index> > + T::data_class == specfem::data_access::DataClassType::mapped_index || + T::data_class == specfem::data_access::DataClassType::edge_index> > : std::true_type {}; template @@ -108,4 +144,23 @@ struct is_assembly_index< specfem::data_access::DataClassType::assembly_index> > : std::true_type {}; +template +struct is_edge_index : std::false_type {}; + +template +struct is_edge_index< + T, std::enable_if_t > + : std::true_type {}; + +template +struct is_coupled_interface : std::false_type {}; + +template +struct is_coupled_interface< + T, + std::enable_if_t > + : std::true_type {}; + } // namespace specfem::data_access diff --git a/core/specfem/data_access/container.hpp b/core/specfem/data_access/container.hpp index d03893e67..5e63b3dd8 100644 --- a/core/specfem/data_access/container.hpp +++ b/core/specfem/data_access/container.hpp @@ -7,7 +7,7 @@ #include namespace specfem::data_access { -enum class ContainerType { boundary, interface, domain }; +enum class ContainerType { boundary, edge, domain }; namespace impl { template using tensor_type = Kokkos::View; }; + +template <> +struct ContainerValueType { + template + using scalar_type = Kokkos::View; + template + using vector_type = Kokkos::View; + template + using tensor_type = Kokkos::View; +}; } // namespace impl template struct global_coordinates { } // namespace point } // namespace specfem + +template +std::ostream & +operator<<(std::ostream &s, + const specfem::point::global_coordinates &point); diff --git a/core/specfem/point/coordinates.tpp b/core/specfem/point/coordinates.tpp index 24d99df23..fd210e014 100644 --- a/core/specfem/point/coordinates.tpp +++ b/core/specfem/point/coordinates.tpp @@ -13,7 +13,6 @@ KOKKOS_FUNCTION type_real specfem::point::distance( (p1.z - p2.z) * (p1.z - p2.z)); } - template <> KOKKOS_FUNCTION type_real specfem::point::distance( const specfem::point::global_coordinates @@ -24,3 +23,19 @@ KOKKOS_FUNCTION type_real specfem::point::distance( (p1.y - p2.y) * (p1.y - p2.y) + (p1.z - p2.z) * (p1.z - p2.z)); } + +template <> +std::ostream &operator<<( + std::ostream &s, + const specfem::point::global_coordinates + &coord) { + return s << "(" << coord.x << ", " << coord.z << ")"; +} + +template <> +std::ostream &operator<<( + std::ostream &s, + const specfem::point::global_coordinates + &coord) { + return s << "(" << coord.x << ", " << coord.y << ", " << coord.z << ")"; +} diff --git a/core/specfem/point/coupled_interface.hpp b/core/specfem/point/coupled_interface.hpp new file mode 100644 index 000000000..cdf070658 --- /dev/null +++ b/core/specfem/point/coupled_interface.hpp @@ -0,0 +1,81 @@ +#pragma once + +#include "enumerations/interface.hpp" +#include "specfem/data_access.hpp" +#include "specfem_setup.hpp" +#include + +namespace specfem::point { + +/** + * @brief Primary template for coupled interface points + * + * @tparam DimensionTag Spatial dimension + * @tparam ConnectionTag Connection type (strongly/weakly conforming) + * @tparam InterfaceTag Interface type (elastic-acoustic, acoustic-elastic) + * @tparam BoundaryTag Boundary condition type + */ +template +struct coupled_interface; + +/** + * @brief 2D coupled interface point data structure + * + * Represents a point on a coupled interface between different physical + * media in 2D spectral element simulations. Contains geometric data + * (edge factor and normal vector) needed for interface computations. + * + * @tparam ConnectionTag Connection type between elements + * @tparam InterfaceTag Type of interface (elastic-acoustic or acoustic-elastic) + * @tparam BoundaryTag Boundary condition applied to the interface + */ +template +struct coupled_interface + : public specfem::data_access::Accessor< + specfem::data_access::AccessorType::point, + specfem::data_access::DataClassType::coupled_interface, + specfem::dimension::type::dim2, false> { +private: + /** @brief Base accessor type alias */ + using base_type = specfem::data_access::Accessor< + specfem::data_access::AccessorType::point, + specfem::data_access::DataClassType::coupled_interface, + specfem::dimension::type::dim2, false>; + +public: + /** @brief Dimension tag for 2D specialization */ + static constexpr auto dimension_tag = specfem::dimension::type::dim2; + /** @brief Connection type between elements */ + static constexpr auto connection_tag = ConnectionTag; + /** @brief Interface type (elastic-acoustic or acoustic-elastic) */ + static constexpr auto interface_tag = InterfaceTag; + /** @brief Boundary condition type */ + static constexpr auto boundary_tag = BoundaryTag; + + /** @brief Edge scaling factor for interface computations */ + scalar_type edge_factor; + /** @brief Edge normal vector (2D) */ + vector_type edge_normal; + + /** + * @brief Constructs coupled interface point with geometric data + * + * @param edge_factor Scaling factor for the interface edge + * @param edge_normal_ Normal vector at the interface edge + */ + KOKKOS_INLINE_FUNCTION + coupled_interface(const scalar_type &edge_factor, + const vector_type &edge_normal_) + : edge_factor(edge_factor), edge_normal(edge_normal_) {} + + KOKKOS_INLINE_FUNCTION + coupled_interface() = default; +}; + +} // namespace specfem::point diff --git a/core/specfem/point/edge_index.hpp b/core/specfem/point/edge_index.hpp new file mode 100644 index 000000000..7719610a3 --- /dev/null +++ b/core/specfem/point/edge_index.hpp @@ -0,0 +1,59 @@ +#pragma once + +namespace specfem::point { + +/** + * @brief Primary template for edge index in spectral element meshes + * @tparam DimensionTag Spatial dimension (dim2 or dim3) + */ +template struct edge_index; + +/** + * @brief 2D edge index for spectral element edge access + * + * Provides indexing information to locate and access data at specific + * points along edges in 2D spectral element meshes. Contains both + * element-level indices (element, edge) and local coordinate indices + * within the edge. + */ +template <> +struct edge_index + : public specfem::data_access::Accessor< + specfem::data_access::AccessorType::point, + specfem::data_access::DataClassType::edge_index, + specfem::dimension::type::dim2, false> { + + /** @brief Dimension tag for 2D specialization */ + static constexpr auto dimension_tag = specfem::dimension::type::dim2; + + /** @brief Spectral element index */ + int ispec; + /** @brief Local edge index within the iterator */ + int iedge; + /** @brief Point index along the edge */ + int ipoint; + /** @brief Local z-coordinate index within element */ + int iz; + /** @brief Local x-coordinate index within element */ + int ix; + + /** @brief Default constructor */ + KOKKOS_INLINE_FUNCTION + edge_index() = default; + + /** + * @brief Constructs edge index with all indices + * + * @param ispec_ Element index + * @param iedge_ Edge index (0-3 for 2D quad elements) + * @param ipoint_ Point index along edge + * @param iz_ Local z-coordinate index + * @param ix_ Local x-coordinate index + */ + KOKKOS_INLINE_FUNCTION + edge_index(const int ispec_, const int iedge_, const int ipoint_, + const int iz_, const int ix_) + : ispec(ispec_), iedge(iedge_), ipoint(ipoint_), iz(iz_), ix(ix_) {} +}; + +} // namespace specfem::point diff --git a/core/specfem/point/impl/field.hpp b/core/specfem/point/impl/field.hpp index cca571dd3..b70df45d4 100644 --- a/core/specfem/point/impl/field.hpp +++ b/core/specfem/point/impl/field.hpp @@ -1,5 +1,6 @@ #pragma once +#include "datatypes/simd.hpp" #include "specfem/data_access.hpp" #include #include @@ -249,6 +250,27 @@ class field : public specfem::data_access::Accessor< KOKKOS_FORCEINLINE_FUNCTION bool operator!=(const field &other) const { return !(*this == other); } + + /** + * @brief Output a string representation of the field components. + * + * Outputs the values of all field components to the specified output stream. + * Each component is printed in order, enclosed in square brackets. + * If SIMD the SIMD values are printed in curly brackets. + * + */ + std::string print() const { + std::ostringstream os; + os << "{"; + for (std::size_t i = 0; i < components; ++i) { + os << this->m_data(i); + if (i < components - 1) { + os << ",\n"; + } + } + os << "}"; + return os.str(); + } }; } // namespace specfem::point::impl diff --git a/core/specfem/point/interface_index.hpp b/core/specfem/point/interface_index.hpp new file mode 100644 index 000000000..a0cc13e47 --- /dev/null +++ b/core/specfem/point/interface_index.hpp @@ -0,0 +1,41 @@ + +#pragma once + +#include "edge_index.hpp" +#include "enumerations/interface.hpp" + +namespace specfem::point { + +/** + * @brief Index pair for coupled interface points + * + * Contains edge indices for both sides of a coupled interface between + * different physical media. Used to locate corresponding points on + * interfaces between acoustic and elastic domains. + * + * @tparam DimensionTag Spatial dimension (dim2 or dim3) + */ +template class interface_index { +public: + /** @brief Edge index on the self side of the interface */ + specfem::point::edge_index self_index; + /** @brief Edge index on the coupled side of the interface */ + specfem::point::edge_index coupled_index; + + /** @brief Default constructor */ + KOKKOS_INLINE_FUNCTION + interface_index() = default; + + /** + * @brief Constructs interface index from self and coupled edge indices + * + * @param self_index Edge index on the self side of interface + * @param coupled_index Edge index on the coupled side of interface + */ + KOKKOS_INLINE_FUNCTION + interface_index(const specfem::point::edge_index &self_index, + const specfem::point::edge_index &coupled_index) + : self_index(self_index), coupled_index(coupled_index) {} +}; + +} // namespace specfem::point diff --git a/core/specfem/point/jacobian_matrix.hpp b/core/specfem/point/jacobian_matrix.hpp index 594d63c4a..cfebce3de 100644 --- a/core/specfem/point/jacobian_matrix.hpp +++ b/core/specfem/point/jacobian_matrix.hpp @@ -389,7 +389,7 @@ struct jacobian_matrix * Normal vector */ specfem::datatype::VectorPointViewType - compute_normal(const specfem::enums::edge::type &type) const; + compute_normal(const specfem::mesh_entity::type &type) const; ///@} private: diff --git a/core/specfem/point/jacobian_matrix.tpp b/core/specfem/point/jacobian_matrix.tpp index 3c8c9dce7..c75fd8710 100644 --- a/core/specfem/point/jacobian_matrix.tpp +++ b/core/specfem/point/jacobian_matrix.tpp @@ -6,15 +6,15 @@ template specfem::datatype::VectorPointViewType specfem::point::jacobian_matrix< specfem::dimension::type::dim2, true, - UseSIMD>::compute_normal(const specfem::enums::edge::type &type) const { + UseSIMD>::compute_normal(const specfem::mesh_entity::type &type) const { switch (type) { - case specfem::enums::edge::type::BOTTOM: + case specfem::mesh_entity::type::bottom: return this->impl_compute_normal_bottom(); - case specfem::enums::edge::type::TOP: + case specfem::mesh_entity::type::top: return this->impl_compute_normal_top(); - case specfem::enums::edge::type::LEFT: + case specfem::mesh_entity::type::left: return this->impl_compute_normal_left(); - case specfem::enums::edge::type::RIGHT: + case specfem::mesh_entity::type::right: return this->impl_compute_normal_right(); default: return this->impl_compute_normal_bottom(); diff --git a/core/specfem/point/mapped_index.hpp b/core/specfem/point/mapped_index.hpp index 6a0972fff..3dd5ba524 100644 --- a/core/specfem/point/mapped_index.hpp +++ b/core/specfem/point/mapped_index.hpp @@ -29,18 +29,10 @@ template struct mapped_index : public index { private: using base_type = index; - using accessor_type = specfem::data_access::Accessor< - specfem::data_access::AccessorType::point, - specfem::data_access::DataClassType::mapped_index, DimensionTag, - UseSIMD>; ///< Accessor type for - ///< mapped index public: int imap; ///< Index of the mapped element - constexpr static auto data_class = - accessor_type::data_class; ///< Data class of the mapped index - /** * @brief Constructor for the mapped index * diff --git a/core/specfem/receivers.hpp b/core/specfem/receivers.hpp index 1eaed9c77..652953129 100644 --- a/core/specfem/receivers.hpp +++ b/core/specfem/receivers.hpp @@ -1,10 +1,41 @@ #pragma once #include "enumerations/interface.hpp" + +/** + * @namespace specfem::receivers + * @brief Namespace for structures that handle receivers and seismic data + * capture + * + * This namespace contains receiver classes that capture wavefield data at + * specific locations during seismic simulations. The base class is @ref + * specfem::receivers::receiver, with template specializations for different + * spatial dimensions. + * + * 2D receiver implementations + * - @ref specfem::receivers::receiver + * + * 3D receiver implementations + * - @ref specfem::receivers::receiver + * + * Receivers are responsible for: + * - Recording displacement, velocity, or acceleration at specific coordinates + * - Interpolating wavefield values from the finite element mesh + * - Managing station metadata (network name, station name, coordinates) + * - Outputting seismograms for comparison with observed data + * + * See also + * - @ref specfem::receivers::receiver + */ namespace specfem::receivers { /** * @brief Receiver Class * + * This class is responsible for handling the reception of seismic data at a + * specific station. + * + * @tparam DimensionTag The dimension tag (2D or 3D) for the receiver. + * */ template class receiver; diff --git a/core/specfem/receivers/dim2/receiver.cpp b/core/specfem/receivers/dim2/receiver.cpp index 78f572a44..2a0de8be4 100644 --- a/core/specfem/receivers/dim2/receiver.cpp +++ b/core/specfem/receivers/dim2/receiver.cpp @@ -17,3 +17,12 @@ specfem::receivers::receiver::print() const { return message.str(); } + +bool specfem::receivers::receiver::operator==( + const receiver &other) const { + return (this->network_name == other.network_name) && + (this->station_name == other.station_name) && + specfem::utilities::is_close(this->x, other.x) && + specfem::utilities::is_close(this->z, other.z) && + specfem::utilities::is_close(this->angle, other.angle); +} diff --git a/core/specfem/receivers/dim2/receiver.hpp b/core/specfem/receivers/dim2/receiver.hpp index 2f641dfd6..e229c682a 100644 --- a/core/specfem/receivers/dim2/receiver.hpp +++ b/core/specfem/receivers/dim2/receiver.hpp @@ -59,6 +59,14 @@ template <> class receiver { type_real get_x() const { return this->x; } type_real get_z() const { return this->z; } + /** + * @brief Equality operator + * + * @param other Other receiver to compare with + * @return true if receivers are equal, false otherwise + */ + bool operator==(const receiver &other) const; + private: type_real x; ///< x coordinate of source type_real z; ///< z coordinate of source diff --git a/core/specfem/receivers/dim3/receiver.cpp b/core/specfem/receivers/dim3/receiver.cpp index 7adbd8ff9..5c34447be 100644 --- a/core/specfem/receivers/dim3/receiver.cpp +++ b/core/specfem/receivers/dim3/receiver.cpp @@ -18,3 +18,12 @@ specfem::receivers::receiver::print() const { return message.str(); } + +bool specfem::receivers::receiver::operator==( + const receiver &other) const { + return (this->network_name == other.network_name) && + (this->station_name == other.station_name) && + specfem::utilities::is_close(this->x, other.x) && + specfem::utilities::is_close(this->y, other.y) && + specfem::utilities::is_close(this->z, other.z); +} diff --git a/core/specfem/receivers/dim3/receiver.hpp b/core/specfem/receivers/dim3/receiver.hpp index 9a99db06e..f62994368 100644 --- a/core/specfem/receivers/dim3/receiver.hpp +++ b/core/specfem/receivers/dim3/receiver.hpp @@ -59,6 +59,14 @@ template <> class receiver { type_real get_y() const { return this->y; } type_real get_z() const { return this->z; } + /** + * @brief Equality operator + * + * @param other Other receiver to compare with + * @return true if receivers are equal, false otherwise + */ + bool operator==(const receiver &other) const; + private: type_real x; ///< x coordinate of station type_real y; ///< y coordinate of station diff --git a/core/specfem/source.hpp b/core/specfem/source.hpp index f5ae5c4c7..77a549832 100644 --- a/core/specfem/source.hpp +++ b/core/specfem/source.hpp @@ -2,6 +2,32 @@ #include "enumerations/interface.hpp" +/** + * @namespace specfem::sources + * @brief Namespace for structures that hold data related to sources + * + * This namespace contains source classes in a hierarchical structure. The base + * class is @ref specfem::sources::source, with second-level + * @ref specfem::sources::vector_source and @ref + * specfem::sources::tensor_source, abstractions followed by their specific + * implementations. + * + * 2D @ref specfem::sources::vector_source implementations + * - @ref specfem::sources::force + * - @ref specfem::sources::cosserat_force + * - @ref specfem::sources::adjoint_source + * + * 3D @ref specfem::sources::vector_source implementations + * - @ref specfem::sources::force + * + * 2D @ref specfem::sources::tensor_source implementations + * - @ref specfem::sources::moment_tensor< specfem::dimension::type::dim2 > + * + * See also + * - @ref specfem::sources::source + * - @ref specfem::sources::vector_source + * - @ref specfem::sources::tensor_source + */ namespace specfem::sources { enum class source_type { @@ -11,29 +37,64 @@ enum class source_type { } -namespace specfem::sources { - -template class tensor_source; - -template class vector_source; +#include "source/source.hpp" +#include "source/source.tpp" +#include "source/tensor_source.hpp" +#include "source/vector_source.hpp" -template struct moment_tensor; +/** + * Need forward declaration of the main templates prior to specialization of + * the dimension specific source implementations. + */ +namespace specfem::sources { +/** + * @brief Moment tensor source + * + * This class represents a moment tensor source in the specified dimension. + * + * @tparam DimensionTag The dimension tag (`dim2` or `dim3`) + */ +template class moment_tensor; + +/** + * @brief Force source + * + * This class represents a force source in the specified dimension. + * + * @tparam DimensionTag The dimension tag (`dim2` or `dim3`) + */ template class force; +/** + * @brief Cosserat force source + * + * This class represents a Cosserat force source in the specified dimension. + * + * @tparam DimensionTag The dimension tag (`dim2` or `dim3`) + */ template class cosserat_force; +/** + * @brief Adjoint source + * + * This class represents an adjoint source in the specified dimension. + * + * @tparam DimensionTag The dimension tag (`dim2` or `dim3`) + */ template class adjoint_source; +/** + * @brief External source + * + * This class represents an external source in the specified dimension. + * + * @tparam DimensionTag The dimension tag (`dim2` or `dim3`) + */ template class external; } // namespace specfem::sources -#include "source/source.hpp" -#include "source/source.tpp" -#include "source/tensor_source.hpp" -#include "source/vector_source.hpp" - // dim2 specializations #include "source/dim2/source.tpp" #include "source/dim2/tensor_source/moment_tensor_source.hpp" diff --git a/core/specfem/source/dim2/tensor_source/moment_tensor_source.hpp b/core/specfem/source/dim2/tensor_source/moment_tensor_source.hpp index 480417f62..0e2cb5f40 100644 --- a/core/specfem/source/dim2/tensor_source/moment_tensor_source.hpp +++ b/core/specfem/source/dim2/tensor_source/moment_tensor_source.hpp @@ -17,6 +17,40 @@ namespace sources { /** * @brief Moment-tensor source * + * This class implements a moment tensor source in 2D, which represents + * seismic sources like earthquakes through a symmetric stress tensor. + * The moment tensor components Mxx, Mzz, and Mxz define the source mechanism. + * + * @par Usage Example + * @code + * // Create a Ricker wavelet source time function + * auto stf = std::make_unique( + * 8.0, // dominant frequency (Hz) + * 0.01, // time factor + * 1.0, // amplitude + * 0.0, // time shift + * 1.0, // normalization factor + * false // do not reverse + * ); + * + * // Create a 2D moment tensor source at (5.0, 8.0) + * auto mt_source = + * specfem::sources::moment_tensor( 5.0, // + * x-coordinate 8.0, // z-coordinate 1.0, // Mxx - normal double couple in x + * direction 2.0, // Mzz - normal double couple in z direction 0.5, // Mxz - + * shear double couple in x-z plane std::move(stf), + * specfem::wavefield::simulation_field::forward + * ); + * + * // Set the medium type (moment tensors work with elastic media) + * mt_source.set_medium_tag(specfem::element::medium_tag::elastic_psv); + * + * // Get the source tensor (2x2 symmetric matrix for 2D) + * auto source_tensor = mt_source.get_source_tensor(); + * // source_tensor(0,0) = Mxx, source_tensor(0,1) = Mxz + * // source_tensor(1,0) = Mxz, source_tensor(1,1) = Mzz + * @endcode + * */ template <> class moment_tensor @@ -99,6 +133,57 @@ class moment_tensor /** * @brief Get the source tensor * + * Returns the 2D seismic moment tensor for this source: + * + * \f[ + * \mathbf{M}_{2D} = \begin{pmatrix} + * M_{xx} & M_{xz} \\ + * M_{xz} & M_{zz} + * \end{pmatrix} + * \f] + * + * Where the components represent: + * - \f$M_{xx}\f$: Normal stress component in x-direction + * - \f$M_{zz}\f$: Normal stress component in z-direction + * - \f$M_{xz}\f$: Shear stress component in x-z plane + * + * The tensor format depends on the medium type: + * + * **Elastic PSV** (2×2 matrix): + * \f[ + * \begin{pmatrix} + * M_{xx} & M_{xz} \\ + * M_{xz} & M_{zz} + * \end{pmatrix} + * \f] + * + * **Elastic PSV-T (Cosserat)** (3×2 matrix): + * \f[ + * \begin{pmatrix} + * M_{xx} & M_{xz} \\ + * M_{xz} & M_{zz} \\ + * 0.0 & 0.0 + * \end{pmatrix} + * \f] + * + * **Poroelastic** (4×2 matrix - duplicated for solid/fluid phases): + * \f[ + * \begin{pmatrix} + * M_{xx} & M_{xz} \\ + * M_{xz} & M_{zz} \\ + * M_{xx} & M_{xz} \\ + * M_{xz} & M_{zz} + * \end{pmatrix} + * \f] + * + * **Electromagnetic TE** (2×2 matrix - same as elastic PSV): + * \f[ + * \begin{pmatrix} + * M_{xx} & M_{xz} \\ + * M_{xz} & M_{zz} + * \end{pmatrix} + * \f] + * * @return Kokkos::View * Source tensor with dimensions [ncomponents][2] where each row contains * [Mxx, Mxz], [Mxz, Mzz] etc, depending on the medium type diff --git a/core/specfem/source/dim2/vector_source/adjoint_source.hpp b/core/specfem/source/dim2/vector_source/adjoint_source.hpp index 4e9e2b933..e2d1500ba 100644 --- a/core/specfem/source/dim2/vector_source/adjoint_source.hpp +++ b/core/specfem/source/dim2/vector_source/adjoint_source.hpp @@ -7,6 +7,46 @@ namespace specfem { namespace sources { +/** + * @brief Adjoint source + * + * This class implements an adjoint source in 2D, which is used in adjoint + * simulations for seismic inversion and sensitivity analysis. Adjoint sources + * are typically placed at receiver locations and represent data residuals. + * + * @par Usage Example + * @code + * // Create a Ricker wavelet source time function for the adjoint source + * auto stf = std::make_unique( + * 20.0, // dominant frequency (Hz) + * 0.01, // time factor + * 1.0, // amplitude + * 0.0, // time shift + * 1.0, // normalization factor + * false // do not reverse + * ); + * + * // Create a 2D adjoint source at receiver location (12.5, 8.3) + * auto adj_source = + * specfem::sources::adjoint_source( 12.5, // + * x-coordinate (receiver location) 8.3, // z-coordinate (receiver location) + * std::move(stf), + * "STA01", // station name + * "NETWORK" // network name + * ); + * + * // Set the medium type where the adjoint source is located + * adj_source.set_medium_tag(specfem::element::medium_tag::elastic_psv); + * + * // Get the force vector (unit vector components based on medium) + * auto force_vector = adj_source.get_force_vector(); + * + * // Adjoint sources always return adjoint wavefield type + * assert(adj_source.get_wavefield_type() == + * specfem::wavefield::simulation_field::adjoint); + * @endcode + * + */ template <> class adjoint_source : public vector_source { @@ -35,8 +75,25 @@ class adjoint_source /** * @brief Get the force vector * + * Returns a unit force vector for adjoint source computations: + * + * \f[ + * \mathbf{f}_{adjoint} = \begin{cases} + * [1.0] & \text{acoustic: unit pressure amplitude} \\ + * [1.0] & \text{elastic SH: unit force out-of-plane} \\ + * [1.0, 1.0] & \text{elastic PSV: unit forces in x,z directions} \\ + * [1.0, 1.0, 1.0, 1.0] & \text{poroelastic: solid/fluid phases} \\ + * [1.0, 1.0] & \text{electromagnetic TE} \\ + * [1.0, 1.0, 0.0] & \text{elastic PSV-T: no rotation component} + * \end{cases} + * \f] + * + * Where the unit components provide the basis for adjoint computations + * in full waveform inversion. The adjoint source acts as a time-reversed + * receiver that backpropagates data residuals through the medium. + * * @return Kokkos::View - * Force vector + * Unit force vector with size depending on medium type */ specfem::kokkos::HostView1d get_force_vector() const override; diff --git a/core/specfem/source/dim2/vector_source/cosserat_force_source.hpp b/core/specfem/source/dim2/vector_source/cosserat_force_source.hpp index 633e8bed4..fa8a4747b 100644 --- a/core/specfem/source/dim2/vector_source/cosserat_force_source.hpp +++ b/core/specfem/source/dim2/vector_source/cosserat_force_source.hpp @@ -14,7 +14,38 @@ namespace specfem { namespace sources { /** - * @brief Collocated force source + * @brief Cosserat force source + * + * This class implements a Cosserat force source in 2D, which is used for + * simulations in Cosserat elastic media. It combines both elastic and + * rotational force components with separate scaling factors. + * + * @par Usage Example + * @code + * // Create a Ricker wavelet source time function + * auto stf = std::make_unique( + * 15.0, // dominant frequency (Hz) + * 0.01, // time factor + * 1.0, // amplitude + * 0.0, // time shift + * 1.0, // normalization factor + * false // do not reverse + * ); + * + * // Create a 2D Cosserat force source at (3.2, 4.8) + * auto cosserat_source = + * specfem::sources::cosserat_force( 3.2, // + * x-coordinate 4.8, // z-coordinate 1.5, // f - elastic force scaling + * factor 0.8, // fc - rotational force scaling factor 30.0, // angle in + * degrees std::move(stf), specfem::wavefield::simulation_field::forward + * ); + * + * // Set the medium type (only works with Cosserat elastic media) + * cosserat_source.set_medium_tag(specfem::element::medium_tag::elastic_psv_t); + * + * // Get the force vector (includes elastic and rotational components) + * auto force_vector = cosserat_source.get_force_vector(); + * @endcode * */ template <> @@ -84,8 +115,28 @@ class cosserat_force /** * @brief Get the force vector * + * Returns the 2D Cosserat force vector combining elastic and rotational + * components: + * + * \f[ + * \mathbf{f}_{Cosserat} = \begin{pmatrix} + * f \sin(\theta) \\ + * -f \cos(\theta) \\ + * f_c + * \end{pmatrix} + * \f] + * + * Where: + * - \f$f \sin(\theta)\f$: Elastic force component in x-direction + * - \f$-f \cos(\theta)\f$: Elastic force component in z-direction + * - \f$f_c\f$: Rotational (Cosserat) force component (couple stress) + * - \f$\theta\f$ is the force angle + * + * This formulation is specific to Cosserat elastic media which include both + * translational and rotational degrees of freedom. + * * @return Kokkos::View - * Force vector + * Force vector with 3 components [fx, fz, fc] */ specfem::kokkos::HostView1d get_force_vector() const override; diff --git a/core/specfem/source/dim2/vector_source/external.hpp b/core/specfem/source/dim2/vector_source/external.hpp index 57d9931b7..ac392aa4d 100644 --- a/core/specfem/source/dim2/vector_source/external.hpp +++ b/core/specfem/source/dim2/vector_source/external.hpp @@ -7,6 +7,41 @@ namespace specfem { namespace sources { +/** + * @brief External source + * + * This class implements an external source in 2D, which is used for + * coupling with external data or boundary conditions. External sources + * provide a flexible interface for incorporating external forcing terms. + * + * @par Usage Example + * @code + * // Create a Ricker wavelet source time function + * auto stf = std::make_unique( + * 25.0, // dominant frequency (Hz) + * 0.01, // time factor + * 1.0, // amplitude + * 0.0, // time shift + * 1.0, // normalization factor + * false // do not reverse + * ); + * + * // Create a 2D external source at boundary location (0.0, 5.0) + * auto ext_source = specfem::sources::external( + * 0.0, // x-coordinate (at boundary) + * 5.0, // z-coordinate + * std::move(stf), + * specfem::wavefield::simulation_field::forward + * ); + * + * // Set the medium type where the external source is located + * ext_source.set_medium_tag(specfem::element::medium_tag::acoustic); + * + * // Get the force vector (unit vector components based on medium) + * auto force_vector = ext_source.get_force_vector(); + * @endcode + * + */ template <> class external : public vector_source { @@ -33,8 +68,25 @@ class external /** * @brief Get the force vector * + * Returns a unit force vector for external boundary sources: + * + * \f[ + * \mathbf{f}_{external} = \begin{cases} + * [1.0] & \text{acoustic: unit pressure amplitude} \\ + * [1.0] & \text{elastic SH: unit force out-of-plane} \\ + * [1.0, 1.0] & \text{elastic PSV: unit forces in x,z directions} \\ + * [1.0, 1.0, 1.0, 1.0] & \text{poroelastic: solid/fluid phases} \\ + * [1.0, 1.0] & \text{electromagnetic TE} \\ + * [1.0, 1.0, 1.0] & \text{elastic PSV-T: including rotation} + * \end{cases} + * \f] + * + * Where the unit components provide a normalized basis for external + * coupling or boundary condition enforcement. The actual amplitudes + * are scaled by the source time function during simulation. + * * @return Kokkos::View - * Force vector + * Unit force vector with size depending on medium type */ specfem::kokkos::HostView1d get_force_vector() const override; diff --git a/core/specfem/source/dim2/vector_source/force_source.cpp b/core/specfem/source/dim2/vector_source/force_source.cpp index 2d0d648f5..6d99a6a9f 100644 --- a/core/specfem/source/dim2/vector_source/force_source.cpp +++ b/core/specfem/source/dim2/vector_source/force_source.cpp @@ -46,22 +46,23 @@ specfem::sources::force::get_force_vector() // Elastic P-SV else if (medium_tag == specfem::element::medium_tag::elastic_psv) { force_vector = specfem::kokkos::HostView1d("force_vector", 2); + // angle measured clockwise vertical direction force_vector(0) = std::sin(angle_in_rad); - force_vector(1) = static_cast(-1.0) * std::cos(angle_in_rad); + force_vector(1) = std::cos(angle_in_rad); } // Poroelastic else if (medium_tag == specfem::element::medium_tag::poroelastic) { force_vector = specfem::kokkos::HostView1d("force_vector", 4); force_vector(0) = std::sin(angle_in_rad); - force_vector(1) = static_cast(-1.0) * std::cos(angle_in_rad); + force_vector(1) = std::cos(angle_in_rad); force_vector(2) = std::sin(angle_in_rad); - force_vector(3) = static_cast(-1.0) * std::cos(angle_in_rad); + force_vector(3) = std::cos(angle_in_rad); } // Elastic P-SV-T else if (medium_tag == specfem::element::medium_tag::elastic_psv_t) { force_vector = specfem::kokkos::HostView1d("force_vector", 3); force_vector(0) = std::sin(angle_in_rad); - force_vector(1) = static_cast(-1.0) * std::cos(angle_in_rad); + force_vector(1) = std::cos(angle_in_rad); force_vector(2) = static_cast(0.0); } else { KOKKOS_ABORT_WITH_LOCATION("Force source array computation not " diff --git a/core/specfem/source/dim2/vector_source/force_source.hpp b/core/specfem/source/dim2/vector_source/force_source.hpp index 7221c38ce..c0718e041 100644 --- a/core/specfem/source/dim2/vector_source/force_source.hpp +++ b/core/specfem/source/dim2/vector_source/force_source.hpp @@ -16,6 +16,37 @@ namespace sources { /** * @brief Collocated force source * + * This class implements a collocated force source in 2D that applies a + * directional force at a specific location in the simulation domain. + * + * @par Usage Example + * @code + * // Create a Ricker wavelet source time function + * auto stf = std::make_unique( + * 10, // dominant frequency (Hz) + * 0.01, // time factor + * 1.0, // amplitude + * 0.0, // time shift + * 1.0, // normalization factor + * false // do not reverse + * ); + * + * // Create a 2D force source at (2.5, 3.0) with 45-degree angle + * auto force_source = specfem::sources::force( + * 2.5, // x-coordinate + * 3.0, // z-coordinate + * 45.0, // angle in degrees + * std::move(stf), + * specfem::wavefield::simulation_field::forward + * ); + * + * // Set the medium type + * force_source.set_medium_tag(specfem::element::medium_tag::elastic_psv); + * + * // Get the force vector (depends on medium type) + * auto force_vector = force_source.get_force_vector(); + * @endcode + * */ template <> class force @@ -89,8 +120,26 @@ class force /** * @brief Get the force vector * + * Returns the 2D force vector for this directional force source: + * + * \f[ + * \mathbf{f}_{2D} = \begin{cases} + * [\sin(\theta), -\cos(\theta)] & \text{elastic PSV: x,z components} \\ + * [1.0] & \text{elastic SH: out-of-plane component} \\ + * [1.0] & \text{acoustic: pressure amplitude} \\ + * [\sin(\theta), -\cos(\theta), \sin(\theta), -\cos(\theta)] & + * \text{poroelastic} \\ + * [\sin(\theta), -\cos(\theta), 0.0] & \text{elastic PSV-T} + * \end{cases} + * \f] + * + * Where: + * - \f$f\f$ is the force magnitude (normalized to 1.0) + * - \f$\theta\f$ is the force angle in degrees from horizontal + * - Components depend on the medium and wave field type + * * @return Kokkos::View - * Force vector + * Force vector with size depending on medium type */ specfem::kokkos::HostView1d get_force_vector() const override; diff --git a/core/specfem/source/dim3/tensor_source/moment_tensor_source.hpp b/core/specfem/source/dim3/tensor_source/moment_tensor_source.hpp index bc36feea6..29a14e9bc 100644 --- a/core/specfem/source/dim3/tensor_source/moment_tensor_source.hpp +++ b/core/specfem/source/dim3/tensor_source/moment_tensor_source.hpp @@ -17,6 +17,43 @@ namespace sources { /** * @brief Moment-tensor source * + * This class implements a moment tensor source in 3D, which represents + * seismic sources like earthquakes through a symmetric 3x3 stress tensor. + * The six independent components (Mxx, Myy, Mzz, Mxy, Mxz, Myz) fully + * characterize the source mechanism. + * + * @par Usage Example + * @code + * // Create a Ricker wavelet source time function + * auto stf = std::make_unique( + * 12.0, // dominant frequency (Hz) + * 0.01, // time factor + * 1.0, // amplitude + * 0.0, // time shift + * 1.0, // normalization factor + * false // do not reverse + * ); + * + * // Create a 3D moment tensor source at (10.0, 15.0, 20.0) + * auto mt_source = + * specfem::sources::moment_tensor( 10.0, // + * x-coordinate 15.0, // y-coordinate 20.0, // z-coordinate 1.2, // Mxx - + * normal stress in x direction 0.8, // Myy - normal stress in y direction + * 1.5, // Mzz - normal stress in z direction + * 0.3, // Mxy - shear stress component + * 0.1, // Mxz - shear stress component + * 0.2, // Myz - shear stress component + * std::move(stf), + * specfem::wavefield::simulation_field::forward + * ); + * + * // Set the medium type (moment tensors work with elastic media) + * mt_source.set_medium_tag(specfem::element::medium_tag::elastic); + * + * // Get the source tensor (3x3 symmetric matrix for 3D) + * auto source_tensor = mt_source.get_source_tensor(); + * @endcode + * */ template <> class moment_tensor @@ -126,8 +163,25 @@ class moment_tensor /** * @brief Get the source tensor * + * Returns the full 3D seismic moment tensor for this source: + * + * \f[ + * \mathbf{M}_{3D} = \begin{pmatrix} + * M_{xx} & M_{xy} & M_{xz} \\ + * M_{xy} & M_{yy} & M_{yz} \\ + * M_{xz} & M_{yz} & M_{zz} + * \end{pmatrix} + * \f] + * + * Where the six independent components represent: + * - \f$M_{xx}, M_{yy}, M_{zz}\f$: Normal stress components (diagonal) + * - \f$M_{xy}, M_{xz}, M_{yz}\f$: Shear stress components (off-diagonal) + * + * The tensor format is a 3×3 symmetric matrix for elastic media, representing + * the complete seismic moment tensor used in earthquake source modeling. + * * @return Kokkos::View - * Source tensor with dimensions [ncomponents][2] where each row contains + * Source tensor with dimensions [ncomponents][3] where each row contains * [Mxx, Mxy, Mxz], [Mxy, Myy, Myz], [Mxz, Myz, Mzz] etc, depending on the * medium type */ diff --git a/core/specfem/source/dim3/vector_source/force_source.hpp b/core/specfem/source/dim3/vector_source/force_source.hpp index 84b1db6b5..ee44a42b7 100644 --- a/core/specfem/source/dim3/vector_source/force_source.hpp +++ b/core/specfem/source/dim3/vector_source/force_source.hpp @@ -16,6 +16,41 @@ namespace sources { /** * @brief Collocated force source * + * This class implements a collocated force source in 3D that applies forces + * in the x, y, and z directions at a specific location in the simulation + * domain. + * + * @par Usage Example + * @code + * // Create a Ricker wavelet source time function + * auto stf = std::make_unique( + * 15.0, // dominant frequency (Hz) + * 0.01, // time factor + * 1.0, // amplitude + * 0.0, // time shift + * 1.0, // normalization factor + * false // do not reverse + * ); + * + * // Create a 3D force source at (1.0, 2.0, 3.0) with force components + * auto force_source = specfem::sources::force( + * 1.0, // x-coordinate + * 2.0, // y-coordinate + * 3.0, // z-coordinate + * 0.7, // fx - force in x direction + * 0.0, // fy - force in y direction + * 0.7, // fz - force in z direction + * std::move(stf), + * specfem::wavefield::simulation_field::forward + * ); + * + * // Set the medium type + * force_source.set_medium_tag(specfem::element::medium_tag::elastic); + * + * // Get the force vector + * auto force_vector = force_source.get_force_vector(); + * @endcode + * */ template <> class force @@ -79,8 +114,27 @@ class force /** * @brief Get the force vector * + * Returns the 3D force vector for this source: + * + * \f[ + * \mathbf{f}_{3D} = \begin{cases} + * [f_x] & \text{acoustic: pressure amplitude} \\ + * \begin{pmatrix} f_x \\ f_y \\ f_z \end{pmatrix} & \text{elastic: force + * components} + * \end{cases} + * \f] + * + * Where: + * - \f$f_x, f_y, f_z\f$ are the user-specified force components + * - For acoustic media, only the \f$f_x\f$ component is used as pressure + * source + * - For elastic media, all three components define the force vector + * + * The force components are applied directly as body forces, representing + * point sources with user-specified directional amplitudes. + * * @return Kokkos::View - * Force vector + * Force vector with 3 components [fx, fy, fz] */ specfem::kokkos::HostView1d get_force_vector() const override; diff --git a/core/specfem/source/source.hpp b/core/specfem/source/source.hpp index 82dd8d7a5..4b6113ba9 100644 --- a/core/specfem/source/source.hpp +++ b/core/specfem/source/source.hpp @@ -14,6 +14,56 @@ namespace specfem::sources { +/** + * @brief Base class for all source types + * + * It is a container for source time functions, coordinates, and the medium + * that the source is located in. This class provides the fundamental interface + * common to all sources in SPECFEM++ simulations. + * + * @tparam DimensionTag The dimension specification (dim2 or dim3) + * + * @par Sources that inherit from this class: + * - @ref specfem::sources::vector_source + * - @ref specfem::sources::tensor_source + * + * @par Common Usage Pattern + * @code + * // All sources require a source time function + * auto stf = std::make_unique( + * 10.0, // dominant frequency (Hz) + * 0.01, // time factor + * 1.0, // amplitude + * 0.0, // time shift + * 1.0, // normalization factor + * false // do not reverse + * ); + * + * // Create any source (example with 2D force source) + * auto source = specfem::sources::force( + * 5.0, 10.0, // coordinates (x, z) + * 0.0, // angle + * std::move(stf), + * specfem::wavefield::simulation_field::forward + * ); + * + * // Common operations available for all sources: + * source.set_medium_tag(specfem::element::medium_tag::elastic_psv); + * + * // Access coordinates + * auto coords = source.get_global_coordinates(); + * + * // Access timing information + * type_real t0 = source.get_t0(); + * type_real tshift = source.get_tshift(); + * + * // Update timing + * source.update_tshift(1.5); + * + * // Check medium compatibility + * auto supported_media = source.get_supported_media(); + * @endcode + */ template class source { public: @@ -24,13 +74,16 @@ template class source { */ source() {}; + /** @name 2D Constructors + * @{ + */ + /** - * @brief Construct a new source object using the forcing function + * @brief Construct a new 2D source object using the forcing function * * @param x x-coordinate of source * @param z z-coordinate of source * @param forcing_function pointer to source time function - * @param wavefield_type type of wavefield */ template ::type @@ -41,30 +94,42 @@ template class source { forcing_function(std::move(forcing_function)){}; /** - * @brief Construct a new source object from a YAML node and time steps + * @brief Construct a new 2D source object from a YAML node and time steps * - * @param Node - * @param nsteps - * @param dt + * @param Node YAML node containing source configuration + * @param nsteps number of time steps + * @param dt time step size */ template ::type * = nullptr> source(YAML::Node &Node, const int nsteps, const type_real dt); + /** @} */ + + /** @name 3D Constructors + * @{ + */ + + /** + * @brief Construct a new 3D source object from a YAML node and time steps + * + * @param Node YAML node containing source configuration + * @param nsteps number of time steps + * @param dt time step size + */ template ::type * = nullptr> source(YAML::Node &Node, const int nsteps, const type_real dt); /** - * @brief Construct a new source object using the forcing function + * @brief Construct a new 3D source object using the forcing function * * @param x x-coordinate of source * @param y y-coordinate of source * @param z z-coordinate of source * @param forcing_function pointer to source time function - * @param wavefield_type type of wavefield */ template ::type @@ -74,6 +139,8 @@ template class source { : global_coordinates(x, y, z), forcing_function(std::move(forcing_function)){}; + /** @} */ + /** * @brief Get the value of t0 from the specfem::stf::stf object * diff --git a/core/specfem/source/tensor_source.hpp b/core/specfem/source/tensor_source.hpp index 7ce9bccdd..69318cfa7 100644 --- a/core/specfem/source/tensor_source.hpp +++ b/core/specfem/source/tensor_source.hpp @@ -8,6 +8,61 @@ namespace specfem { namespace sources { +/** + * @brief Class representing a tensor source + * + * The tensor source class is a base class for all tensor sources in the + * simulation. It provides the common interface and functionality for + * manipulating tensor sources. The main functionality being the return of a + * tensor that can be used to compute the GLL level source array, which is + * applied in the simulation. + * + * Tensor sources represent stress or moment tensor sources, typically used + * for earthquake simulations. They provide a symmetric tensor representation + * of the source mechanism. + * + * The main differences between 2D and 3D tensor sources are the dimensions and + * global and local coordinates for the point sources. + * + * @tparam DimensionTag Dimension of the tensor source (dim2 or dim3) + * + * @par Examples of tensor sources: + * - @ref specfem::sources::moment_tensor - Seismic moment tensor sources + * + * @par Tensor Source Usage Pattern + * @code + * // Example: Creating and using a tensor source (2D moment tensor) + * auto stf = std::make_unique( + * 8.0, 0.01, 1.0, 0.0, 1.0, false + * ); + * + * auto tensor_src = + * specfem::sources::moment_tensor( 12.5, 8.0, + * // coordinates (x, z) 1.5, // Mxx - normal stress in x direction 2.1, + * // Mzz - normal stress in z direction 0.7, // Mxz - shear stress + * component std::move(stf), specfem::wavefield::simulation_field::forward + * ); + * + * // Set the medium (tensor sources work with elastic media) + * tensor_src.set_medium_tag(specfem::element::medium_tag::elastic_psv); + * + * // Get the source tensor - dimensions depend on simulation: + * // - 2D: 2x2 symmetric matrix [[Mxx, Mxz], [Mxz, Mzz]] + * // - 3D: 3x3 symmetric matrix with 6 independent components + * auto source_tensor = tensor_src.get_source_tensor(); + * + * // All tensor sources return tensor_source type + * assert(tensor_src.get_source_type() == + * specfem::sources::source_type::tensor_source); + * + * // Access individual tensor components (for moment tensors) + * type_real mxx = tensor_src.get_Mxx(); + * type_real mzz = tensor_src.get_Mzz(); + * type_real mxz = tensor_src.get_Mxz(); + * @endcode + * + * @note This class inherits from @ref specfem::sources::source + */ template class tensor_source : public source { @@ -62,16 +117,49 @@ class tensor_source : public source { /** * @brief Get the source tensor * - * @return Kokkos::View - * Source tensor with dimensions [ncomponents][2] where each row contains - * [Mxx, Mxz], [Mxz, Mzz] etc, depending on the medium type + * Returns the source tensor \f$\mathbf{M}\f$ representing the stress or + * moment tensor applied by this tensor source. The tensor is symmetric and + * its dimensionality depends on the simulation dimension and medium type. + * + * @par Mathematical Definition + * The source tensor represents the symmetric stress/moment tensor: + * + * **2D Case:** + * \f[ + * \mathbf{M}_{2D} = \begin{pmatrix} + * M_{xx} & M_{xz} \\ + * M_{xz} & M_{zz} + * \end{pmatrix} + * \f] + * + * **3D Case:** + * \f[ + * \mathbf{M}_{3D} = \begin{pmatrix} + * M_{xx} & M_{xy} & M_{xz} \\ + * M_{xy} & M_{yy} & M_{yz} \\ + * M_{xz} & M_{yz} & M_{zz} + * \end{pmatrix} + * \f] + * + * The returned tensor format depends on the medium: + * - **Elastic PSV (2D)**: 2×2 matrix \f$[[M_{xx}, M_{xz}], [M_{xz}, + * M_{zz}]]\f$ + * - **Elastic PSV-T (2D)**: 3×2 matrix with additional rotational component + * - **Poroelastic (2D)**: 4×2 matrix (elastic tensor repeated for + * solid/fluid) + * - **Elastic (3D)**: 3×3 full moment tensor + * - **Electromagnetic**: Modified tensor for Maxwell equations + * + * where \f$M_{ij}\f$ are the independent components of the symmetric tensor, + * representing seismic moment, stress, or equivalent source mechanisms. * - * or in 3D + * @note The actual tensor values and their physical meaning depend on the + * specific source type implementation. See individual source classes for + * detailed mathematical definitions of their tensor components. * * @return Kokkos::View - * Source tensor with dimensions [ncomponents][3] where each row contains - * [Mxx, Mxy, Mxz], [Mxy, Myy, Myz], [Mxz, Myz, Mzz] etc, depending on the - * medium type + * Source tensor matrix with dimensions [ncomponents][ndim] where ncomponents + * depends on medium type and ndim is spatial dimension */ virtual specfem::kokkos::HostView2d get_source_tensor() const = 0; diff --git a/core/specfem/source/vector_source.hpp b/core/specfem/source/vector_source.hpp index 4b495306b..4aed7222b 100644 --- a/core/specfem/source/vector_source.hpp +++ b/core/specfem/source/vector_source.hpp @@ -6,6 +6,57 @@ namespace specfem { namespace sources { +/** + * @brief Class representing a vector source + * + * The vector source class is a base class for all vector sources in the + * simulation. It provides the common interface and functionality for + * manipulating vector sources. The main functionality being the return of a + * vector that can be used to compute the GLL level source array, which is + * applied in the simulation. + * + * Vector sources apply forces in specific directions and the dimensionality + * of the force vector depends on the medium type and wave field configuration. + * + * @tparam DimensionTag The dimension specification (dim2 or dim3) + * + * @par Examples of vector sources: + * - @ref specfem::sources::force - Directional force sources + * - @ref specfem::sources::external - External boundary sources + * - @ref specfem::sources::adjoint_source - Adjoint sources for inversion + * - @ref specfem::sources::cosserat_force - Cosserat elastic sources + * + * @par Vector Source Usage Pattern + * @code + * // Example: Creating and using a vector source (2D force) + * auto stf = std::make_unique( + * 15.0, 0.01, 1.0, 0.0, 1.0, false + * ); + * + * auto vector_src = specfem::sources::force( + * 3.5, 7.2, // coordinates (x, z) + * 30.0, // angle in degrees + * std::move(stf), + * specfem::wavefield::simulation_field::forward + * ); + * + * // Set the medium where the source is located + * vector_src.set_medium_tag(specfem::element::medium_tag::elastic_psv); + * + * // Get the force vector - size depends on medium: + * // - acoustic: 1 component (pressure) + * // - elastic_sh: 1 component (out-of-plane) + * // - elastic_psv: 2 components (in-plane x,z) + * // - elastic_psv_t: 3 components (x,z + rotation) + * auto force_vector = vector_src.get_force_vector(); + * + * // All vector sources return vector_source type + * assert(vector_src.get_source_type() == + * specfem::sources::source_type::vector_source); + * @endcode + * + * @note This class inherits from @ref specfem::sources::source + */ template class vector_source : public source { @@ -71,8 +122,35 @@ class vector_source : public source { /** * @brief Get the force vector * + * Returns the force vector \f$\mathbf{f}\f$ applied by this vector source. + * The dimensionality and components depend on the medium type and simulation + * dimension. + * + * @par Mathematical Definition + * The force vector represents the body force applied to the medium: + * \f[ + * \mathbf{f} = \begin{cases} + * [f_p] & \text{acoustic: pressure source} \\ + * [f_y] & \text{elastic SH (2D): out-of-plane force} \\ + * [f_x, f_z] & \text{elastic PSV (2D): in-plane forces} \\ + * [f_x, f_z, m_y] & \text{elastic PSV+T (2D): forces + rotational moment} \\ + * [f_x, f_y, f_z] & \text{elastic (3D): three force components} \\ + * [f_x, f_y, f_z, m_x, m_y, m_z] & \text{elastic Cosserat (3D): forces + + * moments} + * \end{cases} + * \f] + * + * where: + * - \f$f_i\f$ are force components in direction \f$i\f$ + * - \f$m_i\f$ are rotational moment components about axis \f$i\f$ + * - \f$f_p\f$ is the pressure source amplitude + * + * @note The actual force components and their physical meaning depend on the + * specific source type implementation. See individual source classes for + * detailed mathematical definitions of their force vectors. + * * @return Kokkos::View - * Force vector + * Force vector with size depending on medium type */ virtual specfem::kokkos::HostView1d get_force_vector() const = 0; }; diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index 04ee97d71..15cd2ccc0 100644 --- a/docs/Doxyfile.in +++ b/docs/Doxyfile.in @@ -2498,7 +2498,7 @@ DOT_WRAP_THRESHOLD = 17 # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -TEMPLATE_RELATIONS = NO +TEMPLATE_RELATIONS = YES # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to # YES then doxygen will generate a graph for each documented file showing the diff --git a/docs/conf.py b/docs/conf.py index 0702d2446..2872fd653 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -69,7 +69,6 @@ # Adding this to avoid the WARNING: duplicate label warning # autosectionlabel_prefix_document = True - supress_warnings = ["*duplicate*"] # Add any paths that contain templates here, relative to this directory. @@ -127,8 +126,8 @@ # -- Breathe configuration ------------------------------------------------- -breathe_projects = {"SPECFEM KOKKOS IMPLEMENTATION": "_build/doxygen/xml"} -breathe_default_project = "SPECFEM KOKKOS IMPLEMENTATION" +breathe_projects = {"specfem++": "_build/doxygen/xml"} +breathe_default_project = "specfem++" breathe_default_members = () breathe_doxygen_config_options = {"PREDEFINED": "KOKKOS_INLINE_FUNCTION="} breathe_show_define_initializer = True diff --git a/docs/sections/api/IO/Libraries/NPY/dataset.rst b/docs/sections/api/IO/Libraries/NPY/dataset.rst new file mode 100644 index 000000000..a831dcdeb --- /dev/null +++ b/docs/sections/api/IO/Libraries/NPY/dataset.rst @@ -0,0 +1,8 @@ + +.. _library_npy_dataset: + +Dataset +======= + +.. doxygenclass:: specfem::io::impl::NPY::Dataset + :members: diff --git a/docs/sections/api/IO/Libraries/NPY/file.rst b/docs/sections/api/IO/Libraries/NPY/file.rst new file mode 100644 index 000000000..84badc902 --- /dev/null +++ b/docs/sections/api/IO/Libraries/NPY/file.rst @@ -0,0 +1,17 @@ + +.. _library_npy_file: + +File +==== + +.. doxygenclass:: specfem::io::impl::NPY::File + :members: + +Implementation Details +---------------------- + +.. doxygenclass:: specfem::io::impl::NPY::File< specfem::io::write > + :members: + +.. doxygenclass:: specfem::io::impl::NPY::File< specfem::io::read > + :members: diff --git a/docs/sections/api/IO/Libraries/NPY/group.rst b/docs/sections/api/IO/Libraries/NPY/group.rst new file mode 100644 index 000000000..16b9530f2 --- /dev/null +++ b/docs/sections/api/IO/Libraries/NPY/group.rst @@ -0,0 +1,17 @@ + +.. _library_npy_group: + +Group +===== + +.. doxygenclass:: specfem::io::impl::NPY::Group + :members: + +Implementation Details +---------------------- + +.. doxygenclass:: specfem::io::impl::NPY::Group< specfem::io::write > + :members: + +.. doxygenclass:: specfem::io::impl::NPY::Group< specfem::io::read > + :members: diff --git a/docs/sections/api/IO/Libraries/NPY/index.rst b/docs/sections/api/IO/Libraries/NPY/index.rst new file mode 100644 index 000000000..34ee696ce --- /dev/null +++ b/docs/sections/api/IO/Libraries/NPY/index.rst @@ -0,0 +1,20 @@ + +.. _library_npy: + +NPY +==== + +SPECFEM++ NPY class provides a IO based on numpy array files. + +.. doxygenclass:: specfem::io::NPY + :members: + +Implementation Details +---------------------- + +.. toctree:: + :maxdepth: 1 + + file + group + dataset diff --git a/docs/sections/api/IO/Libraries/NPZ/dataset.rst b/docs/sections/api/IO/Libraries/NPZ/dataset.rst new file mode 100644 index 000000000..1c9ca301a --- /dev/null +++ b/docs/sections/api/IO/Libraries/NPZ/dataset.rst @@ -0,0 +1,8 @@ + +.. _library_npz_dataset: + +Dataset +======= + +.. doxygenclass:: specfem::io::impl::NPZ::Dataset + :members: diff --git a/docs/sections/api/IO/Libraries/NPZ/file.rst b/docs/sections/api/IO/Libraries/NPZ/file.rst new file mode 100644 index 000000000..4f5614407 --- /dev/null +++ b/docs/sections/api/IO/Libraries/NPZ/file.rst @@ -0,0 +1,17 @@ + +.. _library_npz_file: + +File +==== + +.. doxygenclass:: specfem::io::impl::NPZ::File + :members: + +Implementation Details +---------------------- + +.. doxygenclass:: specfem::io::impl::NPZ::File< specfem::io::write > + :members: + +.. doxygenclass:: specfem::io::impl::NPZ::File< specfem::io::read > + :members: diff --git a/docs/sections/api/IO/Libraries/NPZ/group.rst b/docs/sections/api/IO/Libraries/NPZ/group.rst new file mode 100644 index 000000000..f01dea7f4 --- /dev/null +++ b/docs/sections/api/IO/Libraries/NPZ/group.rst @@ -0,0 +1,17 @@ + +.. _library_npz_group: + +Group +===== + +.. doxygenclass:: specfem::io::impl::NPZ::Group + :members: + +Implementation Details +---------------------- + +.. doxygenclass:: specfem::io::impl::NPZ::Group< specfem::io::write > + :members: + +.. doxygenclass:: specfem::io::impl::NPZ::Group< specfem::io::read > + :members: diff --git a/docs/sections/api/IO/Libraries/NPZ/index.rst b/docs/sections/api/IO/Libraries/NPZ/index.rst new file mode 100644 index 000000000..28d809a4c --- /dev/null +++ b/docs/sections/api/IO/Libraries/NPZ/index.rst @@ -0,0 +1,20 @@ + +.. _library_npz: + +NPZ +==== + +SPECFEM++ NPZ class provides a IO based on numpy zip files. + +.. doxygenclass:: specfem::io::NPZ + :members: + +Implementation Details +---------------------- + +.. toctree:: + :maxdepth: 1 + + file + group + dataset diff --git a/docs/sections/api/IO/Libraries/index.rst b/docs/sections/api/IO/Libraries/index.rst index 65c4777cf..8302d72c3 100644 --- a/docs/sections/api/IO/Libraries/index.rst +++ b/docs/sections/api/IO/Libraries/index.rst @@ -31,8 +31,8 @@ The snippet below shows how to use these modules to write and read a Kokkos::Vie int main() { Kokkos::View data("data", 10); - write>(data); - const auto data_read = read>(); + write>(data); + const auto data_read = read>(); return 0; } @@ -42,3 +42,5 @@ The snippet below shows how to use these modules to write and read a Kokkos::Vie mesh/index ASCII/index HDF5/index + NPY/index + NPZ/index diff --git a/docs/sections/api/IO/index.rst b/docs/sections/api/IO/index.rst index 53b475b53..0900cc9f9 100644 --- a/docs/sections/api/IO/index.rst +++ b/docs/sections/api/IO/index.rst @@ -13,7 +13,7 @@ is yaml. In addition to these basic read functions, there are also the two reader and writer classes, :cpp:class:`specfem::io::wavefield_reader` and -:cpp:class:`specfem::io::wavefield_writer`, which support both HDF5 and ASCII I/O. +:cpp:class:`specfem::io::wavefield_writer`, which support Numpy Binary and Zip (NPY and NPZ, respectively), HDF5, ADIOS and ASCII I/O. And, to write seismograms, we can use :cpp:class:`specfem::io::seismogram_writer`. Seismogram I/O is only supported in ASCII format thus far. @@ -38,17 +38,16 @@ Read the 2D Mesh .. doxygenfunction:: specfem::io::read_2d_mesh -Read Sources ------------- +Read 2D Sources +--------------- -.. doxygenfunction:: specfem::io::read_sources(const std::string sources_file, const int nsteps, const type_real user_t0, const type_real dt, const specfem::simulation::type simulation_type) +.. doxygenfunction:: specfem::io::read_2d_sources(const std::string &sources_file, const int nsteps, const type_real user_t0, const type_real dt, const specfem::simulation::type simulation_type) -Read Receivers --------------- - -.. doxygenfunction:: specfem::io::read_receivers(const std::string stations_file, const type_real angle) +Read 2D Receivers +----------------- +.. doxygenfunction:: specfem::io::read_2d_receivers(const std::string &stations_file, const type_real angle) @@ -62,6 +61,19 @@ Read the 3D Mesh .. doxygenfunction:: specfem::io::read_3d_mesh +Read 3D Sources +--------------- + +.. doxygenfunction:: specfem::io::read_3d_sources(const std::string &sources_file, const int nsteps, const type_real user_t0, const type_real dt, const specfem::simulation::type simulation_type) + + +Read 3D Receivers +----------------- + +.. doxygenfunction:: specfem::io::read_3d_receivers(const std::string &stations_file) + + + Helper functions '''''''''''''''' diff --git a/docs/sections/api/assembly/index.rst b/docs/sections/api/assembly/index.rst deleted file mode 100644 index 61a2a8aad..000000000 --- a/docs/sections/api/assembly/index.rst +++ /dev/null @@ -1,35 +0,0 @@ - -.. _assembly_index: - -Finite Element Assembly ------------------------ - -.. doxygennamespace:: specfem::assembly - :desc-only: - -.. doxygenstruct:: specfem::assembly::assembly - :members: - -.. admonition:: Feature request - :class: hint - - We need to define data access functions for the following data containers: - - 1. Sources - 2. Receivers - 3. Coupled interfaces - - If you'd like to work on this, please see `issue tracker `_ for more details. - -.. toctree:: - :maxdepth: 1 - - mesh/mesh - jacobian_matrix/jacobian_matrix - properties/properties - boundary/boundary - fields/fields - coupled_interfaces/coupled_interfaces - sources/sources - receivers/receivers - kernels/kernels diff --git a/docs/sections/api/assembly/mesh/mesh.rst b/docs/sections/api/assembly/mesh/mesh.rst deleted file mode 100644 index 8cc6de445..000000000 --- a/docs/sections/api/assembly/mesh/mesh.rst +++ /dev/null @@ -1,14 +0,0 @@ - -.. _assembly_mesh: - -2D Mesh assembly -================ - -.. doxygenstruct:: specfem::assembly::mesh< specfem::dimension::type::dim2 > - :members: - -Data Access Functions -##################### - -.. doxygengroup:: QuadratureDataAccess - :content-only: diff --git a/docs/sections/api/assembly/receivers/receivers.rst b/docs/sections/api/assembly/receivers/receivers.rst deleted file mode 100644 index 1cc478009..000000000 --- a/docs/sections/api/assembly/receivers/receivers.rst +++ /dev/null @@ -1,15 +0,0 @@ - -.. _assembly_receivers: - -Receivers -========= - -.. doxygenstruct:: specfem::assembly::receivers - :members: - -Data Access Functions -^^^^^^^^^^^^^^^^^^^^^ - -.. note:: - - Data access functions (``load_on_device``, ``load_on_host``, etc.) are yet to be implemented for sources. diff --git a/docs/sections/api/assembly/sources/sources.rst b/docs/sections/api/assembly/sources/sources.rst deleted file mode 100644 index 830ecea96..000000000 --- a/docs/sections/api/assembly/sources/sources.rst +++ /dev/null @@ -1,21 +0,0 @@ - -.. _assembly_sources: - -Sources -======= - -.. doxygenstruct:: specfem::assembly::sources - :members: - -Source Medium Container -^^^^^^^^^^^^^^^^^^^^^^^ - -.. doxygenstruct:: specfem::assembly::impl::source_medium - :members: - -Data Access Functions -^^^^^^^^^^^^^^^^^^^^^ - -.. note:: - - Data access functions (``load_on_device``, ``load_on_host``, etc.) are yet to be implemented for sources. diff --git a/docs/sections/api/index.rst b/docs/sections/api/index.rst index 6a65e102e..0708741bd 100644 --- a/docs/sections/api/index.rst +++ b/docs/sections/api/index.rst @@ -17,9 +17,11 @@ New structure :maxdepth: 2 :glob: + specfem/assembly/index + specfem/chunk_element/index specfem/point/index specfem/receivers/index - specfem/chunk_element/index + specfem/sources/index Old structure @@ -33,9 +35,7 @@ Old structure quadrature/index material/index mesh/index - sources/index datatypes/index - assembly/index execution/index IO/index operators/index diff --git a/docs/sections/api/sources/force_source.rst b/docs/sections/api/sources/force_source.rst deleted file mode 100644 index 04faae284..000000000 --- a/docs/sections/api/sources/force_source.rst +++ /dev/null @@ -1,10 +0,0 @@ - -Force Source -================= - -Force source implementation - -.. doxygenclass:: specfem::sources::force - :members: - :undoc-members: - :private-members: diff --git a/docs/sections/api/sources/index.rst b/docs/sections/api/sources/index.rst deleted file mode 100644 index 460b2da0f..000000000 --- a/docs/sections/api/sources/index.rst +++ /dev/null @@ -1,21 +0,0 @@ - -.. _sources_api: - -Sources API -================= - -Sources module provides methods and classes used to read, store and process data for various sources. - -.. doxygenclass:: specfem::sources::source - :members: - :undoc-members: - :private-members: - -Types of sources ----------------- - -.. toctree:: - :maxdepth: 1 - - force_source - moment_tensor_source diff --git a/docs/sections/api/sources/moment_tensor_source.rst b/docs/sections/api/sources/moment_tensor_source.rst deleted file mode 100644 index 305de20f4..000000000 --- a/docs/sections/api/sources/moment_tensor_source.rst +++ /dev/null @@ -1,10 +0,0 @@ - -Moment-Tensor Source -==================== - -Moment-Tensor implementation - -.. doxygenclass:: specfem::sources::moment_tensor - :members: - :undoc-members: - :private-members: diff --git a/docs/sections/api/assembly/boundary/boundary.rst b/docs/sections/api/specfem/assembly/boundary/boundary.rst similarity index 56% rename from docs/sections/api/assembly/boundary/boundary.rst rename to docs/sections/api/specfem/assembly/boundary/boundary.rst index 839cb32c5..1a6815e9b 100644 --- a/docs/sections/api/assembly/boundary/boundary.rst +++ b/docs/sections/api/specfem/assembly/boundary/boundary.rst @@ -1,10 +1,10 @@ .. _assembly_boundary: -Boundary Conditions -=================== +``specfem::assembly::boundaries`` +================================= -.. doxygenstruct:: specfem::assembly::boundaries +.. doxygenclass:: specfem::assembly::boundaries :members: Data Access Functions diff --git a/docs/sections/api/assembly/coupled_interfaces/coupled_interfaces.rst b/docs/sections/api/specfem/assembly/coupled_interfaces/coupled_interfaces.rst similarity index 82% rename from docs/sections/api/assembly/coupled_interfaces/coupled_interfaces.rst rename to docs/sections/api/specfem/assembly/coupled_interfaces/coupled_interfaces.rst index c5a394a78..889ab2eac 100644 --- a/docs/sections/api/assembly/coupled_interfaces/coupled_interfaces.rst +++ b/docs/sections/api/specfem/assembly/coupled_interfaces/coupled_interfaces.rst @@ -1,8 +1,8 @@ .. _assembly_coupled_interfaces: -Coupled Interfaces -================== +``specfem::assembly::coupled_interfaces`` +========================================= .. doxygenstruct:: specfem::assembly::coupled_interfaces :members: diff --git a/docs/sections/api/assembly/fields/fields.rst b/docs/sections/api/specfem/assembly/fields/fields.rst similarity index 70% rename from docs/sections/api/assembly/fields/fields.rst rename to docs/sections/api/specfem/assembly/fields/fields.rst index 2438ec9a8..9b9a833d0 100644 --- a/docs/sections/api/assembly/fields/fields.rst +++ b/docs/sections/api/specfem/assembly/fields/fields.rst @@ -1,20 +1,22 @@ .. _assembly_fields: -Fields -====== +``specfem::assembly::fields`` +============================= .. doxygenstruct:: specfem::assembly::fields :members: + .. _assembly_simulation_field: -Simulation Field -^^^^^^^^^^^^^^^^ +``specfem::assembly::fields`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. doxygenstruct:: specfem::assembly::simulation_field :members: + Data Access Functions ^^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/sections/api/specfem/assembly/index.rst b/docs/sections/api/specfem/assembly/index.rst new file mode 100644 index 000000000..2cc0a8246 --- /dev/null +++ b/docs/sections/api/specfem/assembly/index.rst @@ -0,0 +1,30 @@ + +.. _assembly_index: + +``specfem::assembly`` +===================== + + +.. doxygennamespace:: specfem::assembly + :desc-only: + + +``specfem::assembly::assembly`` +------------------------------- + +.. toctree:: + :maxdepth: 1 + + boundary/boundary + coupled_interfaces/coupled_interfaces + fields/fields + jacobian_matrix/jacobian_matrix + kernels/kernels + mesh/index + properties/properties + receivers/index + sources/index + + +.. doxygenclass:: specfem::assembly::assembly + :members: diff --git a/docs/sections/api/assembly/jacobian_matrix/jacobian_matrix.rst b/docs/sections/api/specfem/assembly/jacobian_matrix/jacobian_matrix.rst similarity index 73% rename from docs/sections/api/assembly/jacobian_matrix/jacobian_matrix.rst rename to docs/sections/api/specfem/assembly/jacobian_matrix/jacobian_matrix.rst index 20b152b0d..012a58fa3 100644 --- a/docs/sections/api/assembly/jacobian_matrix/jacobian_matrix.rst +++ b/docs/sections/api/specfem/assembly/jacobian_matrix/jacobian_matrix.rst @@ -1,8 +1,8 @@ .. _assembly_jacobian_matrix: -Jacobian Matrix -=============== +``specfem::assembly::jacobian_matrix`` +====================================== .. doxygenstruct:: specfem::assembly::jacobian_matrix :members: diff --git a/docs/sections/api/assembly/kernels/kernels.rst b/docs/sections/api/specfem/assembly/kernels/kernels.rst similarity index 72% rename from docs/sections/api/assembly/kernels/kernels.rst rename to docs/sections/api/specfem/assembly/kernels/kernels.rst index 00411c314..4bfd98d99 100644 --- a/docs/sections/api/assembly/kernels/kernels.rst +++ b/docs/sections/api/specfem/assembly/kernels/kernels.rst @@ -1,8 +1,8 @@ .. _assembly_kernels: -Misfit Kernels (Frechet Derivatives) -===================================== +``specfem::assembly::kernels`` +============================== .. doxygenstruct:: specfem::assembly::kernels :members: diff --git a/docs/sections/api/specfem/assembly/mesh/common/control_nodes.rst b/docs/sections/api/specfem/assembly/mesh/common/control_nodes.rst new file mode 100644 index 000000000..50a2002be --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/common/control_nodes.rst @@ -0,0 +1,14 @@ +.. _assembly_mesh_control_nodes_common: + +``specfem::assembly::mesh_impl::control_nodes`` Template +========================================================= + +Base template for control node information across dimensions. + +.. doxygenstruct:: specfem::assembly::mesh_impl::control_nodes + :members: + +This template provides control node coordinates and mapping for spectral elements: + +- 2D Implementation: :ref:`assembly_mesh_2d_control_nodes` +- 3D Implementation: :ref:`assembly_mesh_3d_control_nodes` diff --git a/docs/sections/api/specfem/assembly/mesh/common/mesh.rst b/docs/sections/api/specfem/assembly/mesh/common/mesh.rst new file mode 100644 index 000000000..7cf670685 --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/common/mesh.rst @@ -0,0 +1,15 @@ + +.. _assembly_mesh: + +``specfem::assembly::mesh`` Template +===================================== + +Base template for assembled mesh representations across dimensions. + +.. doxygenstruct:: specfem::assembly::mesh + :members: + +The mesh template provides the foundation for dimension-specific implementations: + +- 2D Implementation: :ref:`assembly_mesh_2d` +- 3D Implementation: :ref:`assembly_mesh_3d` diff --git a/docs/sections/api/specfem/assembly/mesh/common/points.rst b/docs/sections/api/specfem/assembly/mesh/common/points.rst new file mode 100644 index 000000000..362dc44bb --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/common/points.rst @@ -0,0 +1,14 @@ +.. _assembly_mesh_points: + +``specfem::assembly::mesh_impl::points`` Template +================================================== + +Base template for spectral element assembly point information across dimensions. + +.. doxygenstruct:: specfem::assembly::mesh_impl::points + :members: + +This template provides coordinate and mapping information for spectral elements: + +- 2D Implementation: :ref:`assembly_mesh_2d_points` +- 3D Implementation: :ref:`assembly_mesh_3d_points` diff --git a/docs/sections/api/specfem/assembly/mesh/common/quadrature.rst b/docs/sections/api/specfem/assembly/mesh/common/quadrature.rst new file mode 100644 index 000000000..0d9e458fc --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/common/quadrature.rst @@ -0,0 +1,7 @@ +.. _assembly_mesh_quadrature: + +``specfem::assembly::mesh_impl::quadrature`` Template +====================================================== + +.. doxygenstruct:: specfem::assembly::mesh_impl::quadrature + :members: diff --git a/docs/sections/api/specfem/assembly/mesh/common/shape_functions.rst b/docs/sections/api/specfem/assembly/mesh/common/shape_functions.rst new file mode 100644 index 000000000..b21a929cc --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/common/shape_functions.rst @@ -0,0 +1,14 @@ +.. _assembly_mesh_shape_functions_common: + +``specfem::assembly::mesh_impl::shape_functions`` Template +=========================================================== + +Base template for shape function calculations across dimensions. + +.. doxygenstruct:: specfem::assembly::mesh_impl::shape_functions + :members: + +This template provides shape function computation capabilities for spectral elements: + +- 2D Implementation: :ref:`assembly_mesh_2d_shape_functions` +- 3D Implementation: :ref:`assembly_mesh_3d_shape_functions` diff --git a/docs/sections/api/specfem/assembly/mesh/dim2/impl/control_nodes.rst b/docs/sections/api/specfem/assembly/mesh/dim2/impl/control_nodes.rst new file mode 100644 index 000000000..149a1c063 --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/dim2/impl/control_nodes.rst @@ -0,0 +1,7 @@ +.. _assembly_mesh_2d_control_nodes: + +2D ``specfem::assembly::mesh_impl::control_nodes`` +================================================== + +.. doxygenstruct:: specfem::assembly::mesh_impl::control_nodes< specfem::dimension::type::dim2 > + :members: diff --git a/docs/sections/api/specfem/assembly/mesh/dim2/impl/mesh_to_compute_mapping.rst b/docs/sections/api/specfem/assembly/mesh/dim2/impl/mesh_to_compute_mapping.rst new file mode 100644 index 000000000..858601585 --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/dim2/impl/mesh_to_compute_mapping.rst @@ -0,0 +1,7 @@ +.. _assembly_mesh_2d_mesh_to_compute_mapping: + +2D ``specfem::assembly::mesh_impl::mesh_to_compute_mapping`` +============================================================ + +.. doxygenstruct:: specfem::assembly::mesh_impl::mesh_to_compute_mapping< specfem::dimension::type::dim2 > + :members: diff --git a/docs/sections/api/specfem/assembly/mesh/dim2/impl/points.rst b/docs/sections/api/specfem/assembly/mesh/dim2/impl/points.rst new file mode 100644 index 000000000..66e57e9ba --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/dim2/impl/points.rst @@ -0,0 +1,7 @@ +.. _assembly_mesh_2d_points: + +2D ``specfem::assembly::mesh_impl::points`` +=========================================== + +.. doxygenstruct:: specfem::assembly::mesh_impl::points< specfem::dimension::type::dim2 > + :members: diff --git a/docs/sections/api/specfem/assembly/mesh/dim2/impl/shape_functions.rst b/docs/sections/api/specfem/assembly/mesh/dim2/impl/shape_functions.rst new file mode 100644 index 000000000..ef6a82b4d --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/dim2/impl/shape_functions.rst @@ -0,0 +1,7 @@ +.. _assembly_mesh_2d_shape_functions: + +2D ``specfem::assembly::mesh_impl::shape_functions`` +==================================================== + +.. doxygenstruct:: specfem::assembly::mesh_impl::shape_functions< specfem::dimension::type::dim2 > + :members: diff --git a/docs/sections/api/specfem/assembly/mesh/dim2/impl/utilities.rst b/docs/sections/api/specfem/assembly/mesh/dim2/impl/utilities.rst new file mode 100644 index 000000000..f0fdcde43 --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/dim2/impl/utilities.rst @@ -0,0 +1,33 @@ +.. _assembly_mesh_2d_utilities: + +2D Utilities +============ + +Point Structure +--------------- + +.. doxygenstruct:: specfem::assembly::mesh_impl::dim2::point + :members: + +Bounding Box Structure +---------------------- + +.. doxygenstruct:: specfem::assembly::mesh_impl::dim2::bounding_box + :members: + +Utility Functions +----------------- + +.. doxygenfunction:: specfem::assembly::mesh_impl::dim2::compute_spatial_tolerance + +.. doxygenfunction:: specfem::assembly::mesh_impl::dim2::flatten_coordinates + +.. doxygenfunction:: specfem::assembly::mesh_impl::dim2::sort_points_spatially + +.. doxygenfunction:: specfem::assembly::mesh_impl::dim2::assign_global_numbering + +.. doxygenfunction:: specfem::assembly::mesh_impl::dim2::reorder_to_original_layout + +.. doxygenfunction:: specfem::assembly::mesh_impl::dim2::compute_bounding_box + +.. doxygenfunction:: specfem::assembly::mesh_impl::dim2::create_coordinate_arrays diff --git a/docs/sections/api/specfem/assembly/mesh/dim2/index.rst b/docs/sections/api/specfem/assembly/mesh/dim2/index.rst new file mode 100644 index 000000000..238f311bb --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/dim2/index.rst @@ -0,0 +1,31 @@ + +.. _assembly_mesh_2d: + +2D ``specfem::assembly::mesh`` +============================== + +.. doxygenstruct:: specfem::assembly::mesh< specfem::dimension::type::dim2 > + :members: + + +Implementation Components +------------------------- + +The 2D assembly mesh inherits from several implementation structures that provide +specific functionality: + +.. toctree:: + :maxdepth: 1 + + impl/control_nodes + impl/mesh_to_compute_mapping + impl/points + impl/shape_functions + impl/utilities + + +Data Access Functions +--------------------- + +.. doxygengroup:: QuadratureDataAccess + :content-only: diff --git a/docs/sections/api/specfem/assembly/mesh/dim3/impl/control_nodes.rst b/docs/sections/api/specfem/assembly/mesh/dim3/impl/control_nodes.rst new file mode 100644 index 000000000..ed959db30 --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/dim3/impl/control_nodes.rst @@ -0,0 +1,7 @@ +.. _assembly_mesh_3d_control_nodes: + +3D ``specfem::assembly::mesh_impl::control_nodes`` +================================================== + +.. doxygenstruct:: specfem::assembly::mesh_impl::control_nodes< specfem::dimension::type::dim3 > + :members: diff --git a/docs/sections/api/specfem/assembly/mesh/dim3/impl/points.rst b/docs/sections/api/specfem/assembly/mesh/dim3/impl/points.rst new file mode 100644 index 000000000..83e53d25a --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/dim3/impl/points.rst @@ -0,0 +1,7 @@ +.. _assembly_mesh_3d_points: + +3D ``specfem::assembly::mesh_impl::points`` +=========================================== + +.. doxygenstruct:: specfem::assembly::mesh_impl::points< specfem::dimension::type::dim3 > + :members: diff --git a/docs/sections/api/specfem/assembly/mesh/dim3/impl/shape_functions.rst b/docs/sections/api/specfem/assembly/mesh/dim3/impl/shape_functions.rst new file mode 100644 index 000000000..b9f53cee1 --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/dim3/impl/shape_functions.rst @@ -0,0 +1,7 @@ +.. _assembly_mesh_3d_shape_functions: + +3D ``specfem::assembly::mesh_impl::shape_functions`` +==================================================== + +.. doxygenstruct:: specfem::assembly::mesh_impl::shape_functions< specfem::dimension::type::dim3 > + :members: diff --git a/docs/sections/api/specfem/assembly/mesh/dim3/index.rst b/docs/sections/api/specfem/assembly/mesh/dim3/index.rst new file mode 100644 index 000000000..594a1e60e --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/dim3/index.rst @@ -0,0 +1,22 @@ + +.. _assembly_mesh_3d: + +3D ``specfem::assembly::mesh`` +============================== + + +.. doxygenstruct:: specfem::assembly::mesh< specfem::dimension::type::dim3 > + :members: + +Implementation Components +------------------------- + +The 3D assembly mesh inherits from several implementation structures that provide +specific functionality: + +.. toctree:: + :maxdepth: 1 + + impl/control_nodes + impl/points + impl/shape_functions diff --git a/docs/sections/api/specfem/assembly/mesh/index.rst b/docs/sections/api/specfem/assembly/mesh/index.rst new file mode 100644 index 000000000..6216c719a --- /dev/null +++ b/docs/sections/api/specfem/assembly/mesh/index.rst @@ -0,0 +1,29 @@ +.. _assembly_mesh_index: + +``specfem::assembly::mesh`` +=========================== + +The assembly mesh provides a high-level interface for spectral element mesh operations, +combining coordinate information, quadrature data, control nodes, shape functions, and +computational mappings into cohesive structures optimized for finite element assembly. + +Common Templates +---------------- + +.. toctree:: + :maxdepth: 1 + + common/mesh + common/points + common/control_nodes + common/quadrature + common/shape_functions + +Dimension-Specific Implementations +---------------------------------- + +.. toctree:: + :maxdepth: 1 + + dim2/index + dim3/index diff --git a/docs/sections/api/assembly/properties/properties.rst b/docs/sections/api/specfem/assembly/properties/properties.rst similarity index 74% rename from docs/sections/api/assembly/properties/properties.rst rename to docs/sections/api/specfem/assembly/properties/properties.rst index ed84f1c11..447804a07 100644 --- a/docs/sections/api/assembly/properties/properties.rst +++ b/docs/sections/api/specfem/assembly/properties/properties.rst @@ -1,8 +1,8 @@ .. _assembly_properties: -Material Properties -=================== +``specfem::assembly::properties`` +================================= .. doxygenstruct:: specfem::assembly::properties :members: diff --git a/docs/sections/api/specfem/assembly/receivers/common/receiver_iterator.rst b/docs/sections/api/specfem/assembly/receivers/common/receiver_iterator.rst new file mode 100644 index 000000000..d04561459 --- /dev/null +++ b/docs/sections/api/specfem/assembly/receivers/common/receiver_iterator.rst @@ -0,0 +1,33 @@ +.. _assembly_receivers_iterator: + +Receiver Iterator Classes +========================= + +Station Iterator +---------------- + +.. doxygenclass:: specfem::assembly::receivers_impl::StationIterator + :members: + +Station Info +------------ + +.. doxygenstruct:: specfem::assembly::receivers_impl::StationInfo + :members: + +Seismogram Type Iterator +------------------------ + +.. doxygenclass:: specfem::assembly::receivers_impl::SeismogramTypeIterator + :members: + +Seismogram Iterator Template +---------------------------- + +.. doxygenclass:: specfem::assembly::receivers_impl::SeismogramIterator + :members: + +These classes provide iterator-based access to receiver station metadata and seismogram +data. The StationIterator manages station names and network information, while the +SeismogramIterator handles time-series data access with dimension-specific specializations +for coordinate transformations and component handling. diff --git a/docs/sections/api/specfem/assembly/receivers/common/receivers.rst b/docs/sections/api/specfem/assembly/receivers/common/receivers.rst new file mode 100644 index 000000000..ef2b07adf --- /dev/null +++ b/docs/sections/api/specfem/assembly/receivers/common/receivers.rst @@ -0,0 +1,19 @@ +.. _assembly_receivers_common: + +``specfem::assembly::receivers`` (Template) +============================================ + +.. doxygenstruct:: specfem::assembly::receivers + :members: + +The main template class for assembly-level receiver management in spectral element +simulations. This template provides a unified interface for managing seismic receivers +across different spatial dimensions, with specializations for 2D and 3D implementations. + +Key capabilities: + +* Lagrange interpolation for accurate field sampling at receiver locations +* Efficient Kokkos-based data structures for host/device computations +* Support for multiple seismogram types (displacement, velocity, acceleration) +* Coordinate transformations for proper seismogram orientation +* Integration with spectral element mesh structures diff --git a/docs/sections/api/specfem/assembly/receivers/dim2/index.rst b/docs/sections/api/specfem/assembly/receivers/dim2/index.rst new file mode 100644 index 000000000..e00ce84bb --- /dev/null +++ b/docs/sections/api/specfem/assembly/receivers/dim2/index.rst @@ -0,0 +1,26 @@ +.. _assembly_receivers_dim2: + +2D Receiver Specialization +=========================== + +2D receivers specialization for ``specfem::assembly::receivers``. + +This specialization handles seismic receivers in 2D spectral element simulations with +features specific to two-dimensional problems: + +* Support for multiple medium types (elastic_psv, elastic_sh, acoustic, poroelastic) +* Angle-based coordinate rotation using sine/cosine transformations +* 2-component seismogram recording (horizontal and vertical components) +* Efficient memory layout optimized for 2D computations + +Class Documentation +------------------- + +.. doxygenstruct:: specfem::assembly::receivers< specfem::dimension::type::dim2 > + :members: + +Data Access Functions +--------------------- + +.. doxygengroup:: ComputeReceiversDataAccess2D + :members: diff --git a/docs/sections/api/specfem/assembly/receivers/dim3/index.rst b/docs/sections/api/specfem/assembly/receivers/dim3/index.rst new file mode 100644 index 000000000..2a7cd46ac --- /dev/null +++ b/docs/sections/api/specfem/assembly/receivers/dim3/index.rst @@ -0,0 +1,26 @@ +.. _assembly_receivers_dim3: + +3D Receiver Specialization +=========================== + +3D receivers specialization for ``specfem::assembly::receivers``. + +This specialization handles seismic receivers in 3D spectral element simulations with +features specific to three-dimensional problems: + +* Currently supports elastic medium type +* Full 3x3 rotation matrix transformations for arbitrary receiver orientations +* 3-component seismogram recording (X, Y, Z or North, East, Up components) +* Advanced rotation capabilities for complex receiver geometries + +Class Documentation +------------------- + +.. doxygenstruct:: specfem::assembly::receivers< specfem::dimension::type::dim3 > + :members: + +Data Access Functions +--------------------- + +.. doxygengroup:: ComputeReceiversDataAccess3D + :members: diff --git a/docs/sections/api/specfem/assembly/receivers/index.rst b/docs/sections/api/specfem/assembly/receivers/index.rst new file mode 100644 index 000000000..850139306 --- /dev/null +++ b/docs/sections/api/specfem/assembly/receivers/index.rst @@ -0,0 +1,27 @@ +.. _assembly_receivers_index: + +``specfem::assembly::receivers`` +================================ + +The assembly receivers module manages seismic receiver information within assembled +finite element meshes for spectral element simulations. Receivers handle seismogram +recording with various output types and coordinate transformations for proper +seismogram orientation based on receiver geometry. + +Common Templates +---------------- + +.. toctree:: + :maxdepth: 1 + + common/receivers + common/receiver_iterator + +Dimension-Specific Implementations +---------------------------------- + +.. toctree:: + :maxdepth: 1 + + dim2/index + dim3/index diff --git a/docs/sections/api/specfem/assembly/sources/common/locate_sources.rst b/docs/sections/api/specfem/assembly/sources/common/locate_sources.rst new file mode 100644 index 000000000..4388661c2 --- /dev/null +++ b/docs/sections/api/specfem/assembly/sources/common/locate_sources.rst @@ -0,0 +1,6 @@ +.. _assembly_sources_locate_sources: + +Source Location Utilities +========================== + +.. doxygenfunction:: specfem::assembly::sources_impl::locate_sources diff --git a/docs/sections/api/specfem/assembly/sources/common/source_medium.rst b/docs/sections/api/specfem/assembly/sources/common/source_medium.rst new file mode 100644 index 000000000..770e89368 --- /dev/null +++ b/docs/sections/api/specfem/assembly/sources/common/source_medium.rst @@ -0,0 +1,9 @@ +.. _assembly_sources_source_medium: + +``specfem::assembly::sources_impl::source_medium`` +================================================== + + +.. doxygenstruct:: specfem::assembly::sources_impl::source_medium + :members: + :no-link: diff --git a/docs/sections/api/specfem/assembly/sources/common/sources.rst b/docs/sections/api/specfem/assembly/sources/common/sources.rst new file mode 100644 index 000000000..a0e48b62c --- /dev/null +++ b/docs/sections/api/specfem/assembly/sources/common/sources.rst @@ -0,0 +1,7 @@ +.. _assembly_sources: + +``specfem::assembly::sources`` Base Template +============================================= + +.. doxygenstruct:: specfem::assembly::sources + :members: diff --git a/docs/sections/api/specfem/assembly/sources/dim2/index.rst b/docs/sections/api/specfem/assembly/sources/dim2/index.rst new file mode 100644 index 000000000..b19f45917 --- /dev/null +++ b/docs/sections/api/specfem/assembly/sources/dim2/index.rst @@ -0,0 +1,16 @@ +.. _assembly_sources_2d: + +2D ``specfem::assembly::sources`` +================================== + +.. doxygenstruct:: specfem::assembly::sources< specfem::dimension::type::dim2 > + :members: + +The 2D sources specialization supports multiple medium types including elastic (PSV and SH), +acoustic, and poroelastic media, with comprehensive support for different property and boundary conditions. + +Data Access Functions +--------------------- + +.. doxygengroup:: SourceDataAccess2D + :content-only: diff --git a/docs/sections/api/specfem/assembly/sources/dim3/index.rst b/docs/sections/api/specfem/assembly/sources/dim3/index.rst new file mode 100644 index 000000000..13297939d --- /dev/null +++ b/docs/sections/api/specfem/assembly/sources/dim3/index.rst @@ -0,0 +1,16 @@ +.. _assembly_sources_3d: + +3D ``specfem::assembly::sources`` +================================== + +.. doxygenstruct:: specfem::assembly::sources< specfem::dimension::type::dim3 > + :members: + +The 3D sources specialization currently supports elastic media with isotropic properties +and no boundary conditions. Additional medium types may be added in future versions. + +Data Access Functions +--------------------- + +.. doxygengroup:: SourceDataAccess3D + :content-only: diff --git a/docs/sections/api/specfem/assembly/sources/index.rst b/docs/sections/api/specfem/assembly/sources/index.rst new file mode 100644 index 000000000..e340461a4 --- /dev/null +++ b/docs/sections/api/specfem/assembly/sources/index.rst @@ -0,0 +1,27 @@ +.. _assembly_sources_index: + +``specfem::assembly::sources`` +============================== + +The assembly sources module manages source information within assembled finite element +meshes for spectral element simulations. Sources are organized by medium type and +support time-dependent computations with efficient device/host memory management. + +Common Templates +---------------- + +.. toctree:: + :maxdepth: 1 + + common/sources + common/source_medium + common/locate_sources + +Dimension-Specific Implementations +---------------------------------- + +.. toctree:: + :maxdepth: 1 + + dim2/index + dim3/index diff --git a/docs/sections/api/specfem/chunk_element/stress_integrand/index.rst b/docs/sections/api/specfem/chunk_element/stress_integrand/index.rst index 7ed28ede8..c825ae0c8 100644 --- a/docs/sections/api/specfem/chunk_element/stress_integrand/index.rst +++ b/docs/sections/api/specfem/chunk_element/stress_integrand/index.rst @@ -4,5 +4,5 @@ Stress Integrand ================ -.. doxygenclass:: specfem::chunk_element::stress_integrand +.. doxygenstruct:: specfem::chunk_element::stress_integrand :members: diff --git a/docs/sections/api/specfem/receivers/index.rst b/docs/sections/api/specfem/receivers/index.rst index 7f3476486..0080c3e20 100644 --- a/docs/sections/api/specfem/receivers/index.rst +++ b/docs/sections/api/specfem/receivers/index.rst @@ -1,12 +1,35 @@ .. _receivers_api: -Receiver API -================= +``specfem::receivers`` +====================== -The ``receiver`` class provides methods to read, store and process seismogram station data. +.. doxygennamespace:: specfem::receivers + :desc-only: + + +``specfem::receivers::receiver`` +++++++++++++++++++++++++++++++++ .. doxygenclass:: specfem::receivers::receiver :members: :undoc-members: :private-members: + + +2D Specialization +----------------- + +.. doxygenclass:: specfem::receivers::receiver< specfem::dimension::type::dim2 > + :members: + :undoc-members: + :private-members: + + +3D Specialization +----------------- + +.. doxygenclass:: specfem::receivers::receiver< specfem::dimension::type::dim3 > + :members: + :undoc-members: + :private-members: diff --git a/docs/sections/api/specfem/sources/index.rst b/docs/sections/api/specfem/sources/index.rst new file mode 100644 index 000000000..808b49206 --- /dev/null +++ b/docs/sections/api/specfem/sources/index.rst @@ -0,0 +1,24 @@ + +.. _sources_api: + +``specfem::sources`` +==================== + + +.. doxygennamespace:: specfem::sources + :desc-only: + + +``specfem::sources::source`` +---------------------------- + +.. doxygenclass:: specfem::sources::source + :members: + :private-members: + + +.. toctree:: + :maxdepth: 1 + + vector_sources/index + tensor_sources/index diff --git a/docs/sections/api/specfem/sources/tensor_sources/dim2/moment_tensor.rst b/docs/sections/api/specfem/sources/tensor_sources/dim2/moment_tensor.rst new file mode 100644 index 000000000..bb6970c4b --- /dev/null +++ b/docs/sections/api/specfem/sources/tensor_sources/dim2/moment_tensor.rst @@ -0,0 +1,8 @@ + +2D ``specfem::sources::moment_tensor`` implementation +===================================================== + +Moment-Tensor implementation + +.. doxygenclass:: specfem::sources::moment_tensor< specfem::dimension::type::dim2 > + :members: diff --git a/docs/sections/api/specfem/sources/tensor_sources/dim3/moment_tensor.rst b/docs/sections/api/specfem/sources/tensor_sources/dim3/moment_tensor.rst new file mode 100644 index 000000000..f860cc3d3 --- /dev/null +++ b/docs/sections/api/specfem/sources/tensor_sources/dim3/moment_tensor.rst @@ -0,0 +1,8 @@ + +3D ``specfem::sources::moment_tensor`` implementation +===================================================== + +Moment-Tensor implementation + +.. doxygenclass:: specfem::sources::moment_tensor< specfem::dimension::type::dim3 > + :members: diff --git a/docs/sections/api/specfem/sources/tensor_sources/index.rst b/docs/sections/api/specfem/sources/tensor_sources/index.rst new file mode 100644 index 000000000..459cac7f8 --- /dev/null +++ b/docs/sections/api/specfem/sources/tensor_sources/index.rst @@ -0,0 +1,11 @@ +``specfem::sources::tensor_source`` +=================================== + +.. doxygenclass:: specfem::sources::tensor_source + :members: + + +.. toctree:: + :maxdepth: 1 + + moment_tensor diff --git a/docs/sections/api/specfem/sources/tensor_sources/moment_tensor.rst b/docs/sections/api/specfem/sources/tensor_sources/moment_tensor.rst new file mode 100644 index 000000000..5e5e2215a --- /dev/null +++ b/docs/sections/api/specfem/sources/tensor_sources/moment_tensor.rst @@ -0,0 +1,15 @@ +``specfem::sources::moment_tensor`` +----------------------------------- + +.. doxygenclass:: specfem::sources::moment_tensor + :members: + + +Dimension specialized ``specfem::sources::moment_tensor`` implementations ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. toctree:: + :maxdepth: 1 + + dim2/moment_tensor + dim3/moment_tensor diff --git a/docs/sections/api/specfem/sources/vector_sources/adjoint_source.rst b/docs/sections/api/specfem/sources/vector_sources/adjoint_source.rst new file mode 100644 index 000000000..818ff7bbd --- /dev/null +++ b/docs/sections/api/specfem/sources/vector_sources/adjoint_source.rst @@ -0,0 +1,14 @@ +``specfem::sources::adjoint_source`` +------------------------------------ + +.. doxygenclass:: specfem::sources::adjoint_source + :members: + + +Dimension specialized ``specfem::sources::adjoint_source`` implementations ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. toctree:: + :maxdepth: 1 + + dim2/adjoint_source diff --git a/docs/sections/api/specfem/sources/vector_sources/cosserat_force.rst b/docs/sections/api/specfem/sources/vector_sources/cosserat_force.rst new file mode 100644 index 000000000..875b6ff25 --- /dev/null +++ b/docs/sections/api/specfem/sources/vector_sources/cosserat_force.rst @@ -0,0 +1,14 @@ +``specfem::sources::cosserat_force`` +------------------------------------ + +.. doxygenclass:: specfem::sources::cosserat_force + :members: + + +Dimension specialized ``specfem::sources::cosserat_force`` implementations ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. toctree:: + :maxdepth: 1 + + dim2/cosserat_force diff --git a/docs/sections/api/specfem/sources/vector_sources/dim2/adjoint_source.rst b/docs/sections/api/specfem/sources/vector_sources/dim2/adjoint_source.rst new file mode 100644 index 000000000..ca09693a5 --- /dev/null +++ b/docs/sections/api/specfem/sources/vector_sources/dim2/adjoint_source.rst @@ -0,0 +1,7 @@ +2D ``specfem::sources::adjoint_source`` +======================================= + +Adjoint source implementation for 2D simulations + +.. doxygenclass:: specfem::sources::adjoint_source< specfem::dimension::type::dim2 > + :members: diff --git a/docs/sections/api/specfem/sources/vector_sources/dim2/cosserat_force.rst b/docs/sections/api/specfem/sources/vector_sources/dim2/cosserat_force.rst new file mode 100644 index 000000000..58ac68b01 --- /dev/null +++ b/docs/sections/api/specfem/sources/vector_sources/dim2/cosserat_force.rst @@ -0,0 +1,7 @@ +2D ``specfem::sources::cosserat_force`` +======================================= + +Cosserat force source implementation for 2D simulations + +.. doxygenclass:: specfem::sources::cosserat_force< specfem::dimension::type::dim2 > + :members: diff --git a/docs/sections/api/specfem/sources/vector_sources/dim2/external.rst b/docs/sections/api/specfem/sources/vector_sources/dim2/external.rst new file mode 100644 index 000000000..2267f38f9 --- /dev/null +++ b/docs/sections/api/specfem/sources/vector_sources/dim2/external.rst @@ -0,0 +1,7 @@ +2D ``specfem::sources::external`` +================================== + +External source implementation for 2D simulations + +.. doxygenclass:: specfem::sources::external< specfem::dimension::type::dim2 > + :members: diff --git a/docs/sections/api/specfem/sources/vector_sources/dim2/force.rst b/docs/sections/api/specfem/sources/vector_sources/dim2/force.rst new file mode 100644 index 000000000..640d192c8 --- /dev/null +++ b/docs/sections/api/specfem/sources/vector_sources/dim2/force.rst @@ -0,0 +1,6 @@ + +2D ``specfem::sources::force_source`` implementation +==================================================== + +.. doxygenclass:: specfem::sources::force< specfem::dimension::type::dim2 > + :members: diff --git a/docs/sections/api/specfem/sources/vector_sources/dim3/force.rst b/docs/sections/api/specfem/sources/vector_sources/dim3/force.rst new file mode 100644 index 000000000..18595722e --- /dev/null +++ b/docs/sections/api/specfem/sources/vector_sources/dim3/force.rst @@ -0,0 +1,6 @@ + +3D ``specfem::sources::force_source`` implementation +==================================================== + +.. doxygenclass:: specfem::sources::force< specfem::dimension::type::dim3 > + :members: diff --git a/docs/sections/api/specfem/sources/vector_sources/external.rst b/docs/sections/api/specfem/sources/vector_sources/external.rst new file mode 100644 index 000000000..3035fc304 --- /dev/null +++ b/docs/sections/api/specfem/sources/vector_sources/external.rst @@ -0,0 +1,14 @@ +``specfem::sources::external`` +------------------------------- + +.. doxygenclass:: specfem::sources::external + :members: + + +Dimension specialized ``specfem::sources::external`` implementations +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. toctree:: + :maxdepth: 1 + + dim2/external diff --git a/docs/sections/api/specfem/sources/vector_sources/force.rst b/docs/sections/api/specfem/sources/vector_sources/force.rst new file mode 100644 index 000000000..299766c04 --- /dev/null +++ b/docs/sections/api/specfem/sources/vector_sources/force.rst @@ -0,0 +1,15 @@ +``specfem::sources::force`` +--------------------------- + +.. doxygenclass:: specfem::sources::force + :members: + + +Dimension specialized ``specfem::sources::force`` implementations ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. toctree:: + :maxdepth: 1 + + dim2/force + dim3/force diff --git a/docs/sections/api/specfem/sources/vector_sources/index.rst b/docs/sections/api/specfem/sources/vector_sources/index.rst new file mode 100644 index 000000000..596817843 --- /dev/null +++ b/docs/sections/api/specfem/sources/vector_sources/index.rst @@ -0,0 +1,14 @@ +``specfem::sources::vector_source`` +=================================== + +.. doxygenclass:: specfem::sources::vector_source + :members: + + +.. toctree:: + :maxdepth: 1 + + force + adjoint_source + cosserat_force + external diff --git a/docs/sections/cookbooks/dim2/kernels-example-tromp-2005/adjoint_config.yaml b/docs/sections/cookbooks/dim2/kernels-example-tromp-2005/adjoint_config.yaml index 8f0036cc3..cc47186b8 100644 --- a/docs/sections/cookbooks/dim2/kernels-example-tromp-2005/adjoint_config.yaml +++ b/docs/sections/cookbooks/dim2/kernels-example-tromp-2005/adjoint_config.yaml @@ -28,12 +28,12 @@ parameters: combined: reader: wavefield: - format: HDF5 + format: NPY directory: OUTPUT_FILES writer: kernels: - format: ASCII + format: NPY directory: OUTPUT_FILES/kernels receivers: diff --git a/docs/sections/cookbooks/dim2/kernels-example-tromp-2005/forward_config.yaml b/docs/sections/cookbooks/dim2/kernels-example-tromp-2005/forward_config.yaml index 1e4142af4..78896f68b 100644 --- a/docs/sections/cookbooks/dim2/kernels-example-tromp-2005/forward_config.yaml +++ b/docs/sections/cookbooks/dim2/kernels-example-tromp-2005/forward_config.yaml @@ -28,11 +28,11 @@ parameters: forward: writer: wavefield: - format: HDF5 + format: NPY directory: OUTPUT_FILES seismogram: - format: ascii # output seismograms in HDF5 format + format: ascii # output seismograms in ASCII format directory: OUTPUT_FILES/seismograms receivers: diff --git a/docs/sections/cookbooks/dim2/kernels-example-tromp-2005/plot.py b/docs/sections/cookbooks/dim2/kernels-example-tromp-2005/plot.py index 9b07b684a..a1be94a06 100644 --- a/docs/sections/cookbooks/dim2/kernels-example-tromp-2005/plot.py +++ b/docs/sections/cookbooks/dim2/kernels-example-tromp-2005/plot.py @@ -4,15 +4,16 @@ # Load the kernels -def load_data(directory): - X = np.loadtxt(directory + "/ElasticIsotropic/X.txt") - Z = np.loadtxt(directory + "/ElasticIsotropic/Z.txt") - rho = np.loadtxt(directory + "/ElasticIsotropic/rho.txt") - kappa = np.loadtxt(directory + "/ElasticIsotropic/kappa.txt") - mu = np.loadtxt(directory + "/ElasticIsotropic/mu.txt") - rhop = np.loadtxt(directory + "/ElasticIsotropic/rhop.txt") - alpha = np.loadtxt(directory + "/ElasticIsotropic/alpha.txt") - beta = np.loadtxt(directory + "/ElasticIsotropic/beta.txt") +def load_data(kernel_file): + X = np.load(kernel_file + "/elastic_psv_isotropic/X.npy") + Z = np.load(kernel_file + "/elastic_psv_isotropic/Z.npy") + + rho = np.load(kernel_file + "/elastic_psv_isotropic/rho.npy") + mu = np.load(kernel_file + "/elastic_psv_isotropic/mu.npy") + kappa = np.load(kernel_file + "/elastic_psv_isotropic/kappa.npy") + rhop = np.load(kernel_file + "/elastic_psv_isotropic/rhop.npy") + alpha = np.load(kernel_file + "/elastic_psv_isotropic/alpha.npy") + beta = np.load(kernel_file + "/elastic_psv_isotropic/beta.npy") return X, Z, rho, kappa, mu, rhop, alpha, beta @@ -99,4 +100,5 @@ def plot_kernels(input_directory, output): return -plot_kernels("OUTPUT_FILES/kernels/Kernels/", "kernels.png") +if __name__ == "__main__": + plot_kernels("OUTPUT_FILES/Kernels", "Kernels_out.png") diff --git a/docs/sections/developer_documentation/SPECFEM_architecture/assembly.rst b/docs/sections/developer_documentation/SPECFEM_architecture/assembly.rst index 9833a8069..853fa5746 100644 --- a/docs/sections/developer_documentation/SPECFEM_architecture/assembly.rst +++ b/docs/sections/developer_documentation/SPECFEM_architecture/assembly.rst @@ -37,7 +37,7 @@ Anatomically the view contains 2 elements: Adding new data to ``assembly`` namespace ----------------------------------------- +----------------------------------------- Idea behind ``assembly`` namespace is to provide a data layer to access simulation data during or at the end of simulation. Thus it makes sense to extend the namespace with new data when implemeting new features. A few things to keep in mind while adding new data to ``assembly`` namespace: diff --git a/docs/sections/developer_documentation/tutorials/tutorial2/Chapter4/index.rst b/docs/sections/developer_documentation/tutorials/tutorial2/Chapter4/index.rst index a59e6234a..51c153e00 100644 --- a/docs/sections/developer_documentation/tutorials/tutorial2/Chapter4/index.rst +++ b/docs/sections/developer_documentation/tutorials/tutorial2/Chapter4/index.rst @@ -4,7 +4,7 @@ Chapter 4: Instantiating the writer and reader ============================================== -Now that we have implemented the writer and reader classes, let's instantiate them in the main function with the HDF5 library. +Now that we have implemented the writer and reader classes, let's instantiate them in the main function with the Numpy library. .. code:: cpp @@ -14,10 +14,10 @@ Now that we have implemented the writer and reader classes, let's instantiate th const auto& forward = fields.forward; const auto& buffer = fields.buffer; - writer> writer("output", forward); + writer> writer("output", forward); writer.write(); - reader> reader("output", buffer); + reader> reader("output", buffer); reader.read(); // Deep copy the buffer into the backward field diff --git a/docs/sections/getting_started/index.rst b/docs/sections/getting_started/index.rst index bc9d59b9c..dee00c737 100644 --- a/docs/sections/getting_started/index.rst +++ b/docs/sections/getting_started/index.rst @@ -102,6 +102,14 @@ Optional export LD_LIBRARY_PATH=/path/to/hdf5/lib[64]:$LD_LIBRARY_PATH +* **ZLIB** can be used for reading and writing data in npz (zipped numpy arrays )format. Specify custom + ``zlib`` builds using ``-D ZLIB_ROOT=/path/to/zlib`` and add the libary path to + the ``LD_LIBRARY_PATH`` environment variable: + + .. code-block:: bash + + export LD_LIBRARY_PATH=/path/to/zlib/lib[64]:$LD_LIBRARY_PATH + * **VTK** can be used visualization of the wavefield in 2D. Specify a custom ``vtk`` build using ``-D VTK_DIR=/path/to/vtk`` and add the libary path to the ``LD_LIBRARY_PATH`` environment variable: diff --git a/examples/dim2/fluid-solid-interface/specfem_config.yaml b/examples/dim2/fluid-solid-interface/specfem_config.yaml index 2ef3d2d13..de09c1b75 100644 --- a/examples/dim2/fluid-solid-interface/specfem_config.yaml +++ b/examples/dim2/fluid-solid-interface/specfem_config.yaml @@ -38,10 +38,11 @@ parameters: # Uncomment the following lines to enable display output if VTK is installed # display: - # format: on_screen + # format: PNG + # directory: "OUTPUT_FILES/display" # field: displacement # simulation-field: forward - # time-interval: 10 + # time-interval: 100 receivers: stations: "OUTPUT_FILES/STATIONS" diff --git a/fortran/meshfem2d/meshfem2D.F90 b/fortran/meshfem2d/meshfem2D.F90 index 97430b548..e7d59a699 100644 --- a/fortran/meshfem2d/meshfem2D.F90 +++ b/fortran/meshfem2d/meshfem2D.F90 @@ -640,6 +640,7 @@ program meshfem2D call save_gnuplot_file(NGNOD,nx_elem_internal,nz_elem_internal,grid_point_x,grid_point_z) call compute_adjacency_graph() + call read_mesh_nonconforming_adjacencies_file() ! partitioning ! user output diff --git a/fortran/meshfem2d/read_external_mesh_files.F90 b/fortran/meshfem2d/read_external_mesh_files.F90 index b7dea7501..7decf382c 100644 --- a/fortran/meshfem2d/read_external_mesh_files.F90 +++ b/fortran/meshfem2d/read_external_mesh_files.F90 @@ -756,3 +756,59 @@ subroutine read_external_tangential_curve_file(filename) endif end subroutine read_external_tangential_curve_file + +! +!--------------------------------------------------------------------------------------- +! + + subroutine read_external_nonconforming_adjacencies_file(filename) + +! reads in nonconforming adjacencies from file + use constants, only: MAX_STRING_LEN, IIN, IMAIN, myrank + ! assume these are already initialized + use part_unstruct_par, only: num_adjacent, adjacency_type, adjacency_id, adjacent_elements + + implicit none + + character(len=MAX_STRING_LEN),intent(in) :: filename + integer :: ier, num_adjacencies_in_file, iadj, ispec1, ispec2, adjtype_read, adjid_read, cur_adj; + + ! ----- start: user out + + if (myrank == 0) then + write(IMAIN,*) ' Reading additional nonconforming adjacency information from external mesh file: ',trim(filename) + call flush_IMAIN() + endif + + ! reads in specified external file + open(unit=IIN,file=trim(filename),status='old',action='read',iostat=ier) + if (ier /= 0) then + print *,'Error opening file: ',trim(filename) + call stop_the_code('Error read nonconforming adjacencies file') + endif + + read(IIN,*) num_adjacencies_in_file + do iadj = 1, num_adjacencies_in_file + read(IIN, *) ispec1, ispec2, adjtype_read, adjid_read + + ! from_ispec to_ispec, adjacency type, adjacency id + + ispec1 = ispec1 - 1 + ispec2 = ispec2 - 1 + cur_adj = num_adjacent(ispec1) + + ! append adjacency to list + adjacent_elements(ispec1, cur_adj) = ispec2; + adjacency_type(ispec1, cur_adj) = adjtype_read; + adjacency_id(ispec1, cur_adj) = adjid_read; + num_adjacent(ispec1) = cur_adj + 1 + end do + + ! user output + if (myrank == 0) then + write(IMAIN,*) ' Total number of appended adjacent elements: ', num_adjacencies_in_file + write(IMAIN,*) + call flush_IMAIN() + endif + + end subroutine read_external_nonconforming_adjacencies_file diff --git a/fortran/meshfem2d/read_mesh_files.F90 b/fortran/meshfem2d/read_mesh_files.F90 index bb8092b1c..54fc32bea 100644 --- a/fortran/meshfem2d/read_mesh_files.F90 +++ b/fortran/meshfem2d/read_mesh_files.F90 @@ -338,3 +338,49 @@ subroutine read_mesh_nodes_coords_from_interfaces() endif end subroutine read_mesh_nodes_coords_from_interfaces + +! +!--------------------------------------------------------------------------------------- +! + +subroutine read_mesh_nonconforming_adjacencies_file() + +! reads in adjacency graph + + use constants, only: IMAIN,myrank + ! assume these are already initialized + use part_unstruct_par, only: elmnts, num_adjacent, adjacency_type, adjacency_id, adjacent_elements + use shared_parameters, only: nonconforming_adjacencies_file, read_external_mesh, should_read_nonconforming_adjacencies_file + + + implicit none + + integer :: ielem + + ! ----- start: + if (.not. should_read_nonconforming_adjacencies_file) then + write(IMAIN,*) 'No "nonconforming_adjacencies_file" set. Skipping...' + call flush_IMAIN() + return + endif + + if (myrank == 0) then + write(IMAIN,*) 'Appending adjacent elements:' + call flush_IMAIN() + endif + + ! reads in file + if (read_external_mesh) then + ! reads in specified external file + call read_external_nonconforming_adjacencies_file(nonconforming_adjacencies_file) + else + ! safety stop + call stop_the_code('Error read_external_mesh must be set to .true. to use external nonconforming_adjacencies_file') + endif + +end subroutine read_mesh_nonconforming_adjacencies_file + +! +!--------------------------------------------------------------------------------------- +! + ! initializes diff --git a/fortran/meshfem2d/read_parameter_file.F90 b/fortran/meshfem2d/read_parameter_file.F90 index b6837f7b1..07495321f 100644 --- a/fortran/meshfem2d/read_parameter_file.F90 +++ b/fortran/meshfem2d/read_parameter_file.F90 @@ -145,6 +145,7 @@ subroutine read_parameter_file(imesher,BROADCAST_AFTER_READ) call bcast_all_string(acoustic_forcing_surface_file) call bcast_all_string(absorbing_cpml_file) call bcast_all_string(tangential_detection_curve_file) + call bcast_all_string(nonconforming_adjacencies_file) else call bcast_all_string(interfaces_filename) call bcast_all_singledp(xmin_param) @@ -194,6 +195,8 @@ subroutine read_parameter_file_init() acoustic_forcing_surface_file = '' absorbing_cpml_file = '' tangential_detection_curve_file = '' + nonconforming_adjacencies_file = '' + should_read_nonconforming_adjacencies_file = .false. ! internal meshing interfaces_filename = '' @@ -460,6 +463,13 @@ subroutine read_parameter_file_only() write(*,*) endif + call read_value_string_p(nonconforming_adjacencies_file, 'nonconforming_adjacencies_file') + if (err_occurred() /= 0) then + should_read_nonconforming_adjacencies_file = .false. + else + should_read_nonconforming_adjacencies_file = .true. + endif + else !----------------- diff --git a/fortran/meshfem2d/shared_par.f90 b/fortran/meshfem2d/shared_par.f90 index 2c00f419c..664845107 100644 --- a/fortran/meshfem2d/shared_par.f90 +++ b/fortran/meshfem2d/shared_par.f90 @@ -280,6 +280,8 @@ module shared_input_parameters character(len=MAX_STRING_LEN) :: axial_elements_file character(len=MAX_STRING_LEN) :: absorbing_cpml_file character(len=MAX_STRING_LEN) :: tangential_detection_curve_file + character(len=MAX_STRING_LEN) :: nonconforming_adjacencies_file + logical :: should_read_nonconforming_adjacencies_file !#----------------------------------------------------------------------------- !# diff --git a/include/algorithms/locate_point.hpp b/include/algorithms/locate_point.hpp index cb7b0dab0..782ba6ea0 100644 --- a/include/algorithms/locate_point.hpp +++ b/include/algorithms/locate_point.hpp @@ -41,7 +41,9 @@ specfem::point::global_coordinates locate_point( /** * @brief Given an edge (ispec, constraint), finds the best fit local coordinate - * on that edge to the given global coordinates. + * on that edge to the given global coordinates. Coordinates will be clamped to + * [-1,1], even if a point outside that range is a better fit. In such a case, + * the second return value will be false. * * @param coordinates - global coordinates to match to * @param mesh - assembly::mesh struct @@ -56,6 +58,22 @@ std::pair locate_point_on_edge( &coordinates, const specfem::assembly::mesh &mesh, const int &ispec, const specfem::mesh_entity::type &constraint); +/** + * @brief Given an edge (ispec, constraint) and the coordinate along it, finds + * the global coordinates. + * + * @param coordinate - local coordinate along edge + * @param mesh - assembly::mesh struct + * @param ispec - element index whose local coordinates to find + * @param constraint - edge to compute for + * @return specfem::point::global_coordinates - + * the global coordinates of the point. + */ +specfem::point::global_coordinates +locate_point_on_edge( + const type_real &coordinate, + const specfem::assembly::mesh &mesh, + const int &ispec, const specfem::mesh_entity::type &constraint); } // namespace algorithms } // namespace specfem diff --git a/include/boundary_conditions/boundary_conditions.hpp b/include/boundary_conditions/boundary_conditions.hpp index cb6034655..b34c22b3d 100644 --- a/include/boundary_conditions/boundary_conditions.hpp +++ b/include/boundary_conditions/boundary_conditions.hpp @@ -12,6 +12,39 @@ namespace specfem { namespace boundary_conditions { + +template = 0> +KOKKOS_FORCEINLINE_FUNCTION void +apply_boundary_conditions(const PointBoundaryType &boundary, + PointAccelerationType &acceleration) { + + static_assert(specfem::data_access::is_point::value && + specfem::data_access::is_boundary::value, + "PointBoundaryType must be a PointBoundaryType"); + + static_assert( + specfem::data_access::is_point::value && + specfem::data_access::is_acceleration::value, + "PointAccelerationType must be a PointAccelerationType"); + + using boundary_tag_type = + std::integral_constant; + + impl_apply_boundary_conditions( + std::integral_constant(), + boundary, acceleration); + + return; +} + template KOKKOS_FORCEINLINE_FUNCTION void apply_boundary_conditions( diff --git a/include/boundary_conditions/dirichlet/dirichlet.hpp b/include/boundary_conditions/dirichlet/dirichlet.hpp index 8c570ae5d..c03da5ab5 100644 --- a/include/boundary_conditions/dirichlet/dirichlet.hpp +++ b/include/boundary_conditions/dirichlet/dirichlet.hpp @@ -84,5 +84,56 @@ KOKKOS_FORCEINLINE_FUNCTION void impl_compute_mass_matrix_terms( return; }; +template < + typename PointBoundaryType, typename PointAccelerationType, + typename std::enable_if_t = 0> +KOKKOS_INLINE_FUNCTION void +impl_apply_boundary_conditions(const acoustic_free_surface_type &, + const PointBoundaryType &boundary, + PointAccelerationType &acceleration) { + + static_assert(PointBoundaryType::boundary_tag == + specfem::element::boundary_tag::acoustic_free_surface, + "Boundary tag must be acoustic_free_surface"); + + constexpr int components = PointAccelerationType::components; + constexpr auto tag = PointBoundaryType::boundary_tag; + + if (boundary.tag != tag) + return; + + for (int icomp = 0; icomp < components; ++icomp) + acceleration(icomp) = 0.0; + + return; +} + +template < + typename PointBoundaryType, typename PointAccelerationType, + typename std::enable_if_t = 0> +KOKKOS_INLINE_FUNCTION void +impl_apply_boundary_conditions(const acoustic_free_surface_type &, + const PointBoundaryType &boundary, + PointAccelerationType &acceleration) { + static_assert(PointBoundaryType::boundary_tag == + specfem::element::boundary_tag::acoustic_free_surface, + "Boundary tag must be acoustic_free_surface"); + + constexpr int components = PointAccelerationType::components; + constexpr auto tag = PointBoundaryType::boundary_tag; + + using mask_type = typename PointAccelerationType::simd::mask_type; + using simd_type = typename PointAccelerationType::simd::datatype; + for (std::size_t icomp = 0; icomp < components; ++icomp) { + simd_type result([&](std::size_t lane) { + return (boundary.tag[lane] == tag) ? 0.0 : acceleration(icomp)[lane]; + }); + + acceleration(icomp) = result; + } + + return; +} + } // namespace boundary_conditions } // namespace specfem diff --git a/include/boundary_conditions/none/none.hpp b/include/boundary_conditions/none/none.hpp index 93c403d7e..02e692b4c 100644 --- a/include/boundary_conditions/none/none.hpp +++ b/include/boundary_conditions/none/none.hpp @@ -38,5 +38,18 @@ KOKKOS_INLINE_FUNCTION void impl_compute_mass_matrix_terms( return; } +template +KOKKOS_INLINE_FUNCTION void +impl_apply_boundary_conditions(const none_type &, const PointBoundaryType &, + PointAccelerationType &) { + + static_assert(PointBoundaryType::boundary_tag == + specfem::element::boundary_tag::none, + "Boundary tag must be none"); + + // Do nothing + return; +} + } // namespace boundary_conditions } // namespace specfem diff --git a/include/coupled_interface/coupled_interface.hpp b/include/coupled_interface/coupled_interface.hpp deleted file mode 100644 index 6faa718e3..000000000 --- a/include/coupled_interface/coupled_interface.hpp +++ /dev/null @@ -1,113 +0,0 @@ -#pragma once - -#include "enumerations/dimension.hpp" -#include "enumerations/medium.hpp" -#include "specfem/assembly.hpp" - -namespace specfem { -namespace coupled_interface { - -namespace impl { - -template -class coupled_interface; - -template -class coupled_interface { -public: - using CoupledPointFieldType = specfem::point::displacement< - DimensionTag, specfem::element::medium_tag::elastic_psv, false>; - - using SelfPointFieldType = specfem::point::acceleration< - DimensionTag, specfem::element::medium_tag::acoustic, false>; -}; - -template -class coupled_interface { -public: - using CoupledPointFieldType = specfem::point::acceleration< - DimensionTag, specfem::element::medium_tag::acoustic, false>; - using SelfPointFieldType = specfem::point::acceleration< - DimensionTag, specfem::element::medium_tag::elastic_psv, false>; -}; - -} // namespace impl - -/** - * @brief Compute kernels to compute the coupling terms between two domains. - * - * @tparam WavefieldType Wavefield type on which the coupling is computed. - * @tparam DimensionTag Dimension of the element on which the coupling is - * computed. - * @tparam SelfMedium Medium type of the primary domain. - * @tparam CoupledMedium Medium type of the coupled domain. - */ -template -class coupled_interface { -private: - using CoupledPointFieldType = typename impl::coupled_interface< - DimensionTag, SelfMedium, - CoupledMedium>::CoupledPointFieldType; ///< Point field type of the - ///< coupled domain. - - using SelfPointFieldType = typename impl::coupled_interface< - DimensionTag, SelfMedium, - CoupledMedium>::SelfPointFieldType; ///< Point field type of the primary - ///< domain. - -public: - constexpr static auto self_medium = - SelfMedium; ///< Medium of the primary domain. - constexpr static auto coupled_medium = - CoupledMedium; ///< Medium of the coupled domain. - constexpr static auto dimension_tag = - DimensionTag; ///< Dimension of the element. - constexpr static auto wavefield = WavefieldType; ///< Wavefield type. - - static_assert(SelfMedium != CoupledMedium, - "Error: self_medium cannot be equal to coupled_medium"); - - static_assert(((SelfMedium == specfem::element::medium_tag::acoustic && - CoupledMedium == specfem::element::medium_tag::elastic_psv) || - (SelfMedium == specfem::element::medium_tag::elastic_psv && - CoupledMedium == specfem::element::medium_tag::acoustic)), - "Only acoustic-elastic coupling is supported at the moment."); - - /** - * @name Constructor - */ - ///@{ - /** - * @brief Construct a new coupled interface object. - * - * @param assembly Assembly object containing the mesh information. - */ - coupled_interface( - const specfem::assembly::assembly - &assembly); - ///@} - - /** - * @name Compute coupling - */ - void compute_coupling(); - -private: - int nedges; ///< Number of edges in the interface. - int npoints; ///< Number of quadrature points in the interface. - specfem::assembly::interface_container - interface_data; ///< Struct containing the coupling information. - specfem::assembly::simulation_field - field; ///< Wavefield - ///< object. -}; -} // namespace coupled_interface -} // namespace specfem diff --git a/include/coupled_interface/coupled_interface.tpp b/include/coupled_interface/coupled_interface.tpp deleted file mode 100644 index 1022a5dac..000000000 --- a/include/coupled_interface/coupled_interface.tpp +++ /dev/null @@ -1,87 +0,0 @@ -#pragma once - -#include "impl/compute_coupling.hpp" -#include "parallel_configuration/edge_config.hpp" -#include "policies/edge.hpp" -#include - -template -specfem::coupled_interface::coupled_interface:: - coupled_interface(const specfem::assembly::assembly &assembly) { - - const auto coupled_interfaces = assembly.coupled_interfaces; - const auto interface_container = - coupled_interfaces.get_interface_container(); - const auto field = assembly.fields.get_simulation_field(); - - this->nedges = interface_container.num_interfaces; - this->npoints = interface_container.num_points; - this->interface_data = interface_container; - this->field = field; -} - -template -void specfem::coupled_interface::coupled_interface< - WavefieldType, DimensionTag, SelfMedium, - CoupledMedium>::compute_coupling() { - - if (this->nedges == 0) - return; - - using ParallelConfig = specfem::parallel_config::default_edge_config< - DimensionTag, Kokkos::DefaultExecutionSpace>; - - using EdgePolicyType = specfem::policy::element_edge; - - const auto edge_factor = this->interface_data.get_edge_factor(); - const auto edge_normal = this->interface_data.get_edge_normal(); - - const auto [self_index_mapping, coupled_index_mapping] = - this->interface_data.get_index_mapping(); - - const auto [self_edge_type, coupled_edge_type] = - this->interface_data.get_edge_type(); - - EdgePolicyType edge_policy(self_index_mapping, coupled_index_mapping, - self_edge_type, coupled_edge_type, this->npoints); - - Kokkos::parallel_for( - "specfem::coupled_interfaces::compute_coupling", - static_cast(edge_policy), - KOKKOS_CLASS_LAMBDA(const typename EdgePolicyType::member_type &team_member) { - const auto iterator = - edge_policy.league_iterator(team_member.league_rank()); - - Kokkos::parallel_for( - Kokkos::TeamThreadRange(team_member, iterator.edge_size()), - [=](const int ipoint) { - const auto index = iterator(ipoint); - const auto self_index = index.self_index; - const auto coupled_index = index.coupled_index; - const int iedge = index.iedge; - - const auto factor = edge_factor(iedge, ipoint); - const specfem::datatype::VectorPointViewType - normal(edge_normal(0, iedge, ipoint), - edge_normal(1, iedge, ipoint)); - - CoupledPointFieldType coupled_field; - specfem::assembly::load_on_device(coupled_index, this->field, - coupled_field); - - SelfPointFieldType acceleration; - specfem::coupled_interface::impl::compute_coupling( - factor, normal, coupled_field, acceleration); - - specfem::assembly::atomic_add_on_device(self_index, this->field, - acceleration); - }); - }); -} diff --git a/include/coupled_interface/impl/compute_coupling.hpp b/include/coupled_interface/impl/compute_coupling.hpp deleted file mode 100644 index e8a8baae6..000000000 --- a/include/coupled_interface/impl/compute_coupling.hpp +++ /dev/null @@ -1,91 +0,0 @@ -#pragma once - -#include "enumerations/medium.hpp" -#include "specfem/data_access.hpp" -#include -#include - -namespace specfem { -namespace coupled_interface { -namespace impl { - -using elastic_type = - std::integral_constant; - -using acoustic_type = - std::integral_constant; - -template -KOKKOS_INLINE_FUNCTION void -impl_compute_coupling(const acoustic_type &, const elastic_type &, - const type_real &factor, const NormalViewType &normal, - const CoupledFieldType &coupled_field, - SelfFieldType &self_field) { - - self_field(0) = - factor * (normal(0) * coupled_field(0) + normal(1) * coupled_field(1)); -} - -template -KOKKOS_INLINE_FUNCTION void -impl_compute_coupling(const elastic_type &, const acoustic_type &, - const type_real &factor, const NormalViewType &normal, - const CoupledFieldType &coupled_field, - SelfFieldType &self_field) { - self_field(0) = factor * normal(0) * coupled_field(0); - self_field(1) = factor * normal(1) * coupled_field(0); -} - -/** - * @brief Compute the coupling between two fields at a GLL point. - * - * @tparam SelfFieldType Type of the field on which the coupling is computed. - * @tparam CoupledFieldType Type of the field coupled to the primary field. - * @tparam NormalViewType Type of the normal vector. - * @param factor Factor to multiply the coupling term at the GLL point. - * @param normal Normal vector to the interface at the GLL point - * @param coupled_field Field coupled to the primary field. - * @param self_field Primary field. - */ -template -KOKKOS_INLINE_FUNCTION void -compute_coupling(const type_real &factor, const NormalViewType &normal, - const CoupledFieldType &coupled_field, - SelfFieldType &self_field) { - - constexpr auto self_medium = SelfFieldType::medium_tag; - constexpr auto coupled_medium = CoupledFieldType::medium_tag; - - using self_type = - std::integral_constant; - using coupled_type = - std::integral_constant; - - static_assert(self_medium != coupled_medium, - "Error: self_medium cannot be equal to coupled_medium"); - - static_assert(NormalViewType::components == 2, - "NormalViewType must have dimension 2"); - - static_assert(specfem::data_access::is_point::value && - specfem::data_access::is_field::value, - "SelfFieldType must be a point field"); - - static_assert(specfem::data_access::is_point::value && - specfem::data_access::is_field::value, - "CoupledFieldType must be a point field"); - - impl_compute_coupling(self_type(), coupled_type(), factor, normal, - coupled_field, self_field); - - return; -} - -} // namespace impl -} // namespace coupled_interface -} // namespace specfem diff --git a/include/enumerations/config_strings.hpp b/include/enumerations/config_strings.hpp index 30a4aa11f..5962cbcdf 100644 --- a/include/enumerations/config_strings.hpp +++ b/include/enumerations/config_strings.hpp @@ -5,6 +5,8 @@ ((hdf5, h5)) \ ((adios2, bp)) \ ((ascii, txt)) \ + ((npy, numpy)) \ + ((npz, numpy_zip)) \ ((psv, p_sv, p-sv)) \ ((sh)) \ ((te)) \ diff --git a/include/enumerations/connections.hpp b/include/enumerations/connections.hpp index 39e15bf5f..e712234d9 100644 --- a/include/enumerations/connections.hpp +++ b/include/enumerations/connections.hpp @@ -16,9 +16,22 @@ namespace specfem::connections { */ enum class type : int { /// @brief Strongly conforming connection where nodes match exactly - strongly_conforming = 1 + strongly_conforming = 1, + /// @brief Weakly conforming connection where nodes match, but the shape + /// function can be discontinuous. (example: coupling across different media, + /// kinematic faults). + weakly_conforming = 2, + /// @brief Nonconforming connections have no matching nodes, but are + /// geometrically (spatially) adjacent + nonconforming = 3 }; +/** + * @brief Recovers a human-readable string for a given connection + * + */ +const std::string to_string(const specfem::connections::type &conn); + /** * @class connection_mapping * @brief Provides mapping utilities between mesh entities (edges, corners) and @@ -132,6 +145,21 @@ class connection_mapping { std::tuple coordinates_at_corner(const specfem::mesh_entity::type &corner) const; + /** + * @brief Helper function to determine if orientation mapping requires + * coordinate flipping + * + * @param from Source mesh entity orientation + * @param to Target mesh entity orientation + * @return bool True if coordinates should be flipped during mapping + * + * This function implements the logic for determining when coordinate + * mappings between edges require flipping to maintain proper orientation. + * The flipping rules ensure consistent connectivity across mesh elements. + */ + bool flip_orientation(const specfem::mesh_entity::type &from, + const specfem::mesh_entity::type &to) const; + private: /// @brief Number of grid points in the x-direction int ngllx; diff --git a/include/enumerations/coupled_interface.hpp b/include/enumerations/coupled_interface.hpp new file mode 100644 index 000000000..b8486f4ba --- /dev/null +++ b/include/enumerations/coupled_interface.hpp @@ -0,0 +1,267 @@ +/** + * @file coupled_interface.hpp + * @brief Defines interface types and attributes for coupling between different + * physical media + * + * This file provides the fundamental infrastructure for multi-physics coupling + * in SPECFEM++, enabling simulation of wave propagation across interfaces + * between different medium types such as elastic-acoustic boundaries. The + * coupling system supports weakly conforming interfaces where different + * physical equations are solved on either side of the boundary. + * + * @author SPECFEM++ Development Team + * @date 2025 + * @copyright Princeton University + */ + +#pragma once + +#include "enumerations/dimension.hpp" +#include "enumerations/medium.hpp" + +/** + * @brief Forward declarations for point field types + * + * These forward declarations allow the interface system to reference field + * types without requiring full inclusion of the field headers, reducing + * compilation dependencies and enabling circular reference resolution. + */ +// Forward declaration for point +namespace specfem::point { + +/** + * @brief Acceleration field template for various medium types and dimensions + * @tparam DimensionTag Spatial dimension (2D or 3D) + * @tparam MediumTag Physical medium type (elastic, acoustic, etc.) + * @tparam UseSIMD Whether to use SIMD optimizations + */ +template +struct acceleration; + +/** + * @brief Displacement field template for various medium types and dimensions + * @tparam DimensionTag Spatial dimension (2D or 3D) + * @tparam MediumTag Physical medium type (elastic, acoustic, etc.) + * @tparam UseSIMD Whether to use SIMD optimizations + */ +template +struct displacement; + +} // namespace specfem::point + +/** + * @namespace specfem::interface + * @brief Interface coupling system for multi-physics simulations + * + * This namespace contains the core infrastructure for coupling different + * physical media in SPECFEM++. It provides type-safe mechanisms to define + * interfaces between different medium types (elastic, acoustic, etc.) and + * automatically determine the appropriate field types and coupling operations + * for each interface configuration. + * + * The coupling system is designed around the concept of "self" and "coupled" + * fields, where each interface has a primary medium (self) that receives + * contributions from a secondary medium (coupled) across the interface + * boundary. + */ +namespace specfem::interface { + +/** + * @enum interface_tag + * @brief Enumeration of supported interface coupling types + * + * These tags define the direction and type of coupling between different + * physical media. Each tag specifies which medium is the "self" field + * (receiving the coupling) and which is the "coupled" field (providing the + * coupling source). + * + * @note The coupling is directional - elastic_acoustic means coupling from + * elastic to acoustic medium, while acoustic_elastic means the reverse + * direction. + */ +enum class interface_tag { + elastic_acoustic, ///< Elastic to acoustic interface - elastic field couples + ///< to acoustic + acoustic_elastic ///< Acoustic to elastic interface - acoustic field couples + ///< to elastic +}; + +/** + * @brief Interface attributes template for type-safe field determination + * @tparam DimensionTag Spatial dimension of the simulation (2D or 3D) + * @tparam InterfaceTag Type of interface coupling (elastic_acoustic, + * acoustic_elastic) + * + * This template class provides compile-time determination of the appropriate + * field types and medium tags for a given interface configuration. It ensures + * type safety and consistency across the coupling system by automatically + * selecting the correct field types based on the interface specification. + */ +template +class attributes; + +/** + * @brief Attributes specialization for 2D elastic-to-acoustic coupling + * + * This specialization defines the field types and medium tags for coupling from + * elastic media to acoustic media in 2D simulations. In this configuration: + * - Self medium: elastic_psv (receives coupling contributions) + * - Coupled medium: acoustic (provides coupling source) + * - Self field: elastic acceleration (vector field) + * - Coupled field: acoustic acceleration (scalar field) + * + * The coupling typically involves projecting acoustic pressure accelerations + * onto the elastic medium through the interface normal vector. + */ +template <> +class attributes { +public: + /** + * @brief Get the medium tag for the self field (receiving coupling) + * @return Medium tag for elastic PSV medium + */ + static constexpr specfem::element::medium_tag self_medium() { + return specfem::element::medium_tag::elastic_psv; + } + + /** + * @brief Get the medium tag for the coupled field (providing coupling) + * @return Medium tag for acoustic medium + */ + static constexpr specfem::element::medium_tag coupled_medium() { + return specfem::element::medium_tag::acoustic; + } + + /** + * @brief Self field type templates for different connection types + * @tparam ConnectionTag Type of mesh connectivity (weakly_conforming, etc.) + */ + template struct self_field; + + /** + * @brief Coupled field type templates for different connection types + * @tparam ConnectionTag Type of mesh connectivity (weakly_conforming, etc.) + */ + template struct coupled_field; + + /** + * @brief Type alias for self field based on connection type + * @tparam ConnectionTag Type of mesh connectivity + */ + template + using self_field_t = typename self_field::type; + + /** + * @brief Type alias for coupled field based on connection type + * @tparam ConnectionTag Type of mesh connectivity + */ + template + using coupled_field_t = typename coupled_field::type; +}; + +template <> +struct attributes:: + self_field { + using type = + specfem::point::acceleration; +}; + +template <> +struct attributes:: + coupled_field { + using type = + specfem::point::acceleration; +}; + +/** + * @brief Attributes specialization for 2D acoustic-to-elastic coupling + * + * This specialization defines the field types and medium tags for coupling from + * acoustic media to elastic media in 2D simulations. In this configuration: + * - Self medium: acoustic (receives coupling contributions) + * - Coupled medium: elastic_psv (provides coupling source) + * - Self field: acoustic acceleration (scalar field) + * - Coupled field: elastic displacement (vector field) + * + * The coupling typically involves projecting elastic displacement vectors + * onto the acoustic medium through the interface normal vector, converting + * vector quantities to scalar pressure contributions. + */ +template <> +class attributes { +public: + /** + * @brief Get the medium tag for the self field (receiving coupling) + * @return Medium tag for acoustic medium + */ + static constexpr specfem::element::medium_tag self_medium() { + return specfem::element::medium_tag::acoustic; + } + + /** + * @brief Get the medium tag for the coupled field (providing coupling) + * @return Medium tag for elastic PSV medium + */ + static constexpr specfem::element::medium_tag coupled_medium() { + return specfem::element::medium_tag::elastic_psv; + } + + /** + * @brief Self field type templates for different connection types + * @tparam ConnectionTag Type of mesh connectivity (weakly_conforming, etc.) + */ + template struct self_field; + + /** + * @brief Coupled field type templates for different connection types + * @tparam ConnectionTag Type of mesh connectivity (weakly_conforming, etc.) + */ + template struct coupled_field; + + /** + * @brief Type alias for self field based on connection type + * @tparam ConnectionTag Type of mesh connectivity + */ + template + using self_field_t = typename self_field::type; + + /** + * @brief Type alias for coupled field based on connection type + * @tparam ConnectionTag Type of mesh connectivity + */ + template + using coupled_field_t = typename coupled_field::type; +}; + +template <> +struct attributes:: + self_field { + using type = + specfem::point::acceleration; +}; + +template <> +struct attributes:: + coupled_field { + using type = + specfem::point::displacement; +}; + +} // namespace specfem::interface diff --git a/include/enumerations/enum_tags.hpp b/include/enumerations/enum_tags.hpp new file mode 100644 index 000000000..2de93ddba --- /dev/null +++ b/include/enumerations/enum_tags.hpp @@ -0,0 +1,8 @@ +#pragma once + +#define _ENUM_ID_DIMENSION_TAG 0 +#define _ENUM_ID_MEDIUM_TAG 1 +#define _ENUM_ID_PROPERTY_TAG 2 +#define _ENUM_ID_BOUNDARY_TAG 3 +#define _ENUM_ID_CONNECTION_TAG 4 +#define _ENUM_ID_INTERFACE_TAG 5 diff --git a/include/enumerations/interface.hpp b/include/enumerations/interface.hpp index 0071ad8f2..fa1ec97e8 100644 --- a/include/enumerations/interface.hpp +++ b/include/enumerations/interface.hpp @@ -6,6 +6,7 @@ #include "medium.hpp" // #include "properties.hpp" #include "connections.hpp" +#include "coupled_interface.hpp" #include "mesh_entities.hpp" #include "simulation.hpp" #include "specfem_enums.hpp" diff --git a/include/enumerations/interface_definitions.hpp b/include/enumerations/interface_definitions.hpp new file mode 100644 index 000000000..e83b65314 --- /dev/null +++ b/include/enumerations/interface_definitions.hpp @@ -0,0 +1,78 @@ +#pragma once + +#include "enum_tags.hpp" +#include "macros_impl/array.hpp" +#include "macros_impl/utils.hpp" + +#define CONNECTION_TAG_STRONGLY_CONFORMING \ + (0, specfem::connections::type::strongly_conforming, strongly_conforming, \ + _ENUM_ID_CONNECTION_TAG) + +#define CONNECTION_TAG_WEAKLY_CONFORMING \ + (1, specfem::connections::type::weakly_conforming, weakly_conforming, \ + _ENUM_ID_CONNECTION_TAG) + +#define INTERFACE_TAG_ELASTIC_ACOUSTIC \ + (0, specfem::interface::interface_tag::elastic_acoustic, elastic_acoustic, \ + _ENUM_ID_INTERFACE_TAG) +#define INTERFACE_TAG_ACOUSTIC_ELASTIC \ + (1, specfem::interface::interface_tag::acoustic_elastic, acoustic_elastic, \ + _ENUM_ID_INTERFACE_TAG) + +#define _MAKE_INTERFACE_TUPLE(r, product) BOOST_PP_SEQ_TO_TUPLE(product) + +#define _GENERATE_INTERFACE(seqs) \ + (BOOST_PP_SEQ_FOR_EACH_PRODUCT(_MAKE_INTERFACE_TUPLE, seqs)) + +#define INTERFACE_TAG(...) \ + BOOST_PP_SEQ_TRANSFORM(_TRANSFORM_TAGS, INTERFACE_TAG_, \ + BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)) + +#define CONNECTION_TAG(...) \ + BOOST_PP_SEQ_TRANSFORM(_TRANSFORM_TAGS, CONNECTION_TAG_, \ + BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)) + +/** + * @brief Tag getters. The macros are intended to be used only in @ref DECLARE + * and @ref INSTANTIATE. + */ +#define _CONNECTION_TAG_ BOOST_PP_SEQ_TO_LIST((1)) +#define _INTERFACE_TAG_ BOOST_PP_SEQ_TO_LIST((2)) + +#define INTERFACE_SYSTEMS \ + ((DIMENSION_TAG_DIM2, CONNECTION_TAG_WEAKLY_CONFORMING, \ + INTERFACE_TAG_ELASTIC_ACOUSTIC))((DIMENSION_TAG_DIM2, \ + CONNECTION_TAG_WEAKLY_CONFORMING, \ + INTERFACE_TAG_ACOUSTIC_ELASTIC)) + +#define EDGES \ + ((DIMENSION_TAG_DIM2, CONNECTION_TAG_WEAKLY_CONFORMING, \ + INTERFACE_TAG_ELASTIC_ACOUSTIC, BOUNDARY_TAG_NONE))( \ + (DIMENSION_TAG_DIM2, CONNECTION_TAG_WEAKLY_CONFORMING, \ + INTERFACE_TAG_ELASTIC_ACOUSTIC, BOUNDARY_TAG_STACEY))( \ + (DIMENSION_TAG_DIM2, CONNECTION_TAG_WEAKLY_CONFORMING, \ + INTERFACE_TAG_ACOUSTIC_ELASTIC, BOUNDARY_TAG_NONE))( \ + (DIMENSION_TAG_DIM2, CONNECTION_TAG_WEAKLY_CONFORMING, \ + INTERFACE_TAG_ACOUSTIC_ELASTIC, BOUNDARY_TAG_STACEY))( \ + (DIMENSION_TAG_DIM2, CONNECTION_TAG_WEAKLY_CONFORMING, \ + INTERFACE_TAG_ACOUSTIC_ELASTIC, BOUNDARY_TAG_ACOUSTIC_FREE_SURFACE))( \ + (DIMENSION_TAG_DIM2, CONNECTION_TAG_WEAKLY_CONFORMING, \ + INTERFACE_TAG_ACOUSTIC_ELASTIC, \ + BOUNDARY_TAG_COMPOSITE_STACEY_DIRICHLET)) + +namespace specfem::interface { + +template constexpr auto edges(); + +template <> constexpr auto edges() { + constexpr int total_edges = BOOST_PP_SEQ_SIZE(EDGES); + constexpr std::array< + std::tuple, + total_edges> + edges{ _MAKE_CONSTEXPR_ARRAY(EDGES) }; + return edges; +} + +} // namespace specfem::interface diff --git a/include/enumerations/macros_impl/utils.hpp b/include/enumerations/macros_impl/utils.hpp index dc95e3fce..4b1dbf76c 100644 --- a/include/enumerations/macros_impl/utils.hpp +++ b/include/enumerations/macros_impl/utils.hpp @@ -11,6 +11,8 @@ #define _GET_NAME(elem) BOOST_PP_TUPLE_ELEM(2, elem) +#define _GET_ENUM_ID(elem) BOOST_PP_TUPLE_ELEM(3, elem) + #define _EMPTY_MACRO(...) #define _EMPTY_SEQ(...) () @@ -33,7 +35,7 @@ #define _SEQ_FOR_TAGS_3 MATERIAL_SYSTEMS -#define _SEQ_FOR_TAGS_4 ELEMENT_TYPES +#define _SEQ_FOR_TAGS_4 ELEMENT_TYPES EDGES /** * @brief Declare a variable or instantiante a template based on the type @@ -155,8 +157,8 @@ // clang-format off #define _WRITE_TAGS_1(data) _WRITE_TAG(_dimension_tag_, data, 0) -#define _WRITE_TAGS_2(data) _WRITE_TAGS_1(data) _WRITE_TAG(_medium_tag_, data, 1) -#define _WRITE_TAGS_3(data) _WRITE_TAGS_2(data) _WRITE_TAG(_property_tag_, data, 2) +#define _WRITE_TAGS_2(data) _WRITE_TAGS_1(data) _WRITE_TAG(_medium_tag_, data, 1) _WRITE_TAG(_connection_tag_, data, 1) +#define _WRITE_TAGS_3(data) _WRITE_TAGS_2(data) _WRITE_TAG(_property_tag_, data, 2) _WRITE_TAG(_interface_tag_, data, 2) #define _WRITE_TAGS_4(data) _WRITE_TAGS_3(data) _WRITE_TAG(_boundary_tag_, data, 3) // clang-format on @@ -194,6 +196,11 @@ BOOST_PP_IF(BOOST_VMD_IS_SEQ(BOOST_PP_SEQ_HEAD(code)), \ _WRITE_DECLARE_AND_BLOCK, _WRITE_BLOCK)(data, (), code) +#define _CHECK_ENUM(enum1, enum2) \ + BOOST_PP_IF( \ + BOOST_PP_EQUAL(_GET_ENUM_ID(enum1), _GET_ENUM_ID(enum2)), \ + BOOST_PP_IF(BOOST_PP_EQUAL(_GET_ID(enum1), _GET_ID(enum2)), 1, 0), 0) + /** * @brief Compare each item in the sequence for a sequence pair of length 2, 3 * and 4. @@ -201,26 +208,24 @@ #define _IN_TUPLE_2(s, elem, tuple) \ BOOST_PP_IF( \ BOOST_PP_EQUAL(BOOST_PP_TUPLE_SIZE(tuple), 2), \ - BOOST_PP_IF( \ - BOOST_PP_EQUAL(_GET_ID(BOOST_PP_TUPLE_ELEM(0, tuple)), \ - _GET_ID(BOOST_PP_TUPLE_ELEM(0, elem))), \ - BOOST_PP_IF(BOOST_PP_EQUAL(_GET_ID(BOOST_PP_TUPLE_ELEM(1, tuple)), \ - _GET_ID(BOOST_PP_TUPLE_ELEM(1, elem))), \ - 1, 0), \ - 0), \ + BOOST_PP_IF(_CHECK_ENUM(BOOST_PP_TUPLE_ELEM(0, tuple), \ + BOOST_PP_TUPLE_ELEM(0, elem)), \ + BOOST_PP_IF(_CHECK_ENUM(BOOST_PP_TUPLE_ELEM(1, tuple), \ + BOOST_PP_TUPLE_ELEM(1, elem)), \ + 1, 0), \ + 0), \ 0) #define _IN_TUPLE_3(s, elem, tuple) \ BOOST_PP_IF( \ BOOST_PP_EQUAL(BOOST_PP_TUPLE_SIZE(tuple), 3), \ BOOST_PP_IF( \ - BOOST_PP_EQUAL(_GET_ID(BOOST_PP_TUPLE_ELEM(0, tuple)), \ - _GET_ID(BOOST_PP_TUPLE_ELEM(0, elem))), \ - BOOST_PP_IF(BOOST_PP_EQUAL(_GET_ID(BOOST_PP_TUPLE_ELEM(1, tuple)), \ - _GET_ID(BOOST_PP_TUPLE_ELEM(1, elem))), \ - BOOST_PP_IF(BOOST_PP_EQUAL( \ - _GET_ID(BOOST_PP_TUPLE_ELEM(2, tuple)), \ - _GET_ID(BOOST_PP_TUPLE_ELEM(2, elem))), \ + _CHECK_ENUM(BOOST_PP_TUPLE_ELEM(0, tuple), \ + BOOST_PP_TUPLE_ELEM(0, elem)), \ + BOOST_PP_IF(_CHECK_ENUM(BOOST_PP_TUPLE_ELEM(1, tuple), \ + BOOST_PP_TUPLE_ELEM(1, elem)), \ + BOOST_PP_IF(_CHECK_ENUM(BOOST_PP_TUPLE_ELEM(2, tuple), \ + BOOST_PP_TUPLE_ELEM(2, elem)), \ 1, 0), \ 0), \ 0), \ @@ -230,18 +235,17 @@ BOOST_PP_IF( \ BOOST_PP_EQUAL(BOOST_PP_TUPLE_SIZE(tuple), 4), \ BOOST_PP_IF( \ - BOOST_PP_EQUAL(_GET_ID(BOOST_PP_TUPLE_ELEM(0, tuple)), \ - _GET_ID(BOOST_PP_TUPLE_ELEM(0, elem))), \ + _CHECK_ENUM(BOOST_PP_TUPLE_ELEM(0, tuple), \ + BOOST_PP_TUPLE_ELEM(0, elem)), \ BOOST_PP_IF( \ - BOOST_PP_EQUAL(_GET_ID(BOOST_PP_TUPLE_ELEM(1, tuple)), \ - _GET_ID(BOOST_PP_TUPLE_ELEM(1, elem))), \ + _CHECK_ENUM(BOOST_PP_TUPLE_ELEM(1, tuple), \ + BOOST_PP_TUPLE_ELEM(1, elem)), \ BOOST_PP_IF( \ - BOOST_PP_EQUAL(_GET_ID(BOOST_PP_TUPLE_ELEM(2, tuple)), \ - _GET_ID(BOOST_PP_TUPLE_ELEM(2, elem))), \ - BOOST_PP_IF( \ - BOOST_PP_EQUAL(_GET_ID(BOOST_PP_TUPLE_ELEM(3, tuple)), \ - _GET_ID(BOOST_PP_TUPLE_ELEM(3, elem))), \ - 1, 0), \ + _CHECK_ENUM(BOOST_PP_TUPLE_ELEM(2, tuple), \ + BOOST_PP_TUPLE_ELEM(2, elem)), \ + BOOST_PP_IF(_CHECK_ENUM(BOOST_PP_TUPLE_ELEM(3, tuple), \ + BOOST_PP_TUPLE_ELEM(3, elem)), \ + 1, 0), \ 0), \ 0), \ 0), \ @@ -264,4 +268,5 @@ #define _FOR_ONE_TAG_SEQ(s, code, elem) \ BOOST_PP_IF( \ _IN_SEQUENCE(BOOST_PP_SEQ_SIZE(elem), BOOST_PP_SEQ_TO_TUPLE(elem)), \ - _CHECK_DECLARE, _EMPTY_MACRO)(BOOST_PP_SEQ_TO_TUPLE(elem), code) + _CHECK_DECLARE, _EMPTY_MACRO) \ + (BOOST_PP_SEQ_TO_TUPLE(elem), code) diff --git a/include/enumerations/material_definitions.hpp b/include/enumerations/material_definitions.hpp index 0ba7f55a2..15567ddc3 100644 --- a/include/enumerations/material_definitions.hpp +++ b/include/enumerations/material_definitions.hpp @@ -1,5 +1,6 @@ #pragma once +#include "enum_tags.hpp" #include "macros_impl/array.hpp" #include "macros_impl/utils.hpp" @@ -10,38 +11,50 @@ * */ /// @{ -#define DIMENSION_TAG_DIM2 (0, specfem::dimension::type::dim2, dim2) -#define DIMENSION_TAG_DIM3 (1, specfem::dimension::type::dim3, dim3) +#define DIMENSION_TAG_DIM2 \ + (0, specfem::dimension::type::dim2, dim2, _ENUM_ID_DIMENSION_TAG) +#define DIMENSION_TAG_DIM3 \ + (1, specfem::dimension::type::dim3, dim3, _ENUM_ID_DIMENSION_TAG) #define MEDIUM_TAG_ELASTIC_PSV \ - (0, specfem::element::medium_tag::elastic_psv, elastic_psv) + (0, specfem::element::medium_tag::elastic_psv, elastic_psv, \ + _ENUM_ID_MEDIUM_TAG) #define MEDIUM_TAG_ELASTIC_SH \ - (1, specfem::element::medium_tag::elastic_sh, elastic_sh) + (1, specfem::element::medium_tag::elastic_sh, elastic_sh, _ENUM_ID_MEDIUM_TAG) #define MEDIUM_TAG_ELASTIC_PSV_T \ - (2, specfem::element::medium_tag::elastic_psv_t, elastic_psv_t) + (2, specfem::element::medium_tag::elastic_psv_t, elastic_psv_t, \ + _ENUM_ID_MEDIUM_TAG) #define MEDIUM_TAG_ACOUSTIC \ - (3, specfem::element::medium_tag::acoustic, acoustic) + (3, specfem::element::medium_tag::acoustic, acoustic, _ENUM_ID_MEDIUM_TAG) #define MEDIUM_TAG_POROELASTIC \ - (4, specfem::element::medium_tag::poroelastic, poroelastic) + (4, specfem::element::medium_tag::poroelastic, poroelastic, \ + _ENUM_ID_MEDIUM_TAG) #define MEDIUM_TAG_ELECTROMAGNETIC_TE \ - (5, specfem::element::medium_tag::electromagnetic_te, electromagnetic_te) -#define MEDIUM_TAG_ELASTIC (6, specfem::element::medium_tag::elastic, elastic) + (5, specfem::element::medium_tag::electromagnetic_te, electromagnetic_te, \ + _ENUM_ID_MEDIUM_TAG) +#define MEDIUM_TAG_ELASTIC \ + (6, specfem::element::medium_tag::elastic, elastic, _ENUM_ID_MEDIUM_TAG) #define PROPERTY_TAG_ISOTROPIC \ - (0, specfem::element::property_tag::isotropic, isotropic) + (0, specfem::element::property_tag::isotropic, isotropic, \ + _ENUM_ID_PROPERTY_TAG) #define PROPERTY_TAG_ANISOTROPIC \ - (1, specfem::element::property_tag::anisotropic, anisotropic) + (1, specfem::element::property_tag::anisotropic, anisotropic, \ + _ENUM_ID_PROPERTY_TAG) #define PROPERTY_TAG_ISOTROPIC_COSSERAT \ - (2, specfem::element::property_tag::isotropic_cosserat, isotropic_cosserat) + (2, specfem::element::property_tag::isotropic_cosserat, isotropic_cosserat, \ + _ENUM_ID_PROPERTY_TAG) -#define BOUNDARY_TAG_NONE (0, specfem::element::boundary_tag::none, none) -#define BOUNDARY_TAG_STACEY (1, specfem::element::boundary_tag::stacey, stacey) +#define BOUNDARY_TAG_NONE \ + (0, specfem::element::boundary_tag::none, none, _ENUM_ID_BOUNDARY_TAG) +#define BOUNDARY_TAG_STACEY \ + (1, specfem::element::boundary_tag::stacey, stacey, _ENUM_ID_BOUNDARY_TAG) #define BOUNDARY_TAG_ACOUSTIC_FREE_SURFACE \ (2, specfem::element::boundary_tag::acoustic_free_surface, \ - acoustic_free_surface) + acoustic_free_surface, _ENUM_ID_BOUNDARY_TAG) #define BOUNDARY_TAG_COMPOSITE_STACEY_DIRICHLET \ (3, specfem::element::boundary_tag::composite_stacey_dirichlet, \ - composite_stacey_dirichlet) + composite_stacey_dirichlet, _ENUM_ID_BOUNDARY_TAG) /** * @brief Macro to generate a list of medium types @@ -306,3 +319,5 @@ template <> constexpr auto element_types() { } // namespace element } // namespace specfem + +#include "interface_definitions.hpp" diff --git a/include/enumerations/mesh_entities.hpp b/include/enumerations/mesh_entities.hpp index a558ecbe4..45e3eac0c 100644 --- a/include/enumerations/mesh_entities.hpp +++ b/include/enumerations/mesh_entities.hpp @@ -1,9 +1,11 @@ #pragma once #include "dimension.hpp" +#include #include #include #include +#include /** * @namespace specfem::mesh_entity @@ -45,6 +47,12 @@ enum class type : int { top_left = 8 ///< Top-left corner of the element }; +/** + * @brief Recovers a human-readable string for a given mesh entity. + * + */ +const std::string to_string(const specfem::mesh_entity::type &entity); + /** * @brief List of all edge types in a quadrilateral element * @@ -126,6 +134,20 @@ std::list edges_of_corner(const type &corner); */ std::list corners_of_edge(const type &edge); +struct edge { + specfem::mesh_entity::type edge_type; + int ispec; + bool reverse_orientation; + + KOKKOS_INLINE_FUNCTION + edge(const int ispec, const specfem::mesh_entity::type edge_type, + const bool reverse_orientation = false) + : edge_type(edge_type), ispec(ispec), + reverse_orientation(reverse_orientation) {} + + KOKKOS_INLINE_FUNCTION + edge() = default; +}; /** * @brief Mesh element structure for a specific dimension * diff --git a/include/execution/chunked_domain_iterator.hpp b/include/execution/chunked_domain_iterator.hpp index 5d289b56e..34c9180f5 100644 --- a/include/execution/chunked_domain_iterator.hpp +++ b/include/execution/chunked_domain_iterator.hpp @@ -469,6 +469,15 @@ class ChunkedDomainIterator : public TeamPolicy { ///< specfem::execution::for_each_level using execution_space = typename base_type::execution_space; ///< Execution space type. + using base_index_type = specfem::point::index< + ParallelConfig::dimension, + ParallelConfig::simd::using_simd>; ///< Index type + ///< to be used + ///< when calling + ///< @ref + ///< specfem::execution::for_all + ///< with this + ///< iterator. /** * @brief Construct a new Chunked Domain Iterator object diff --git a/include/execution/chunked_edge_iterator.hpp b/include/execution/chunked_edge_iterator.hpp new file mode 100644 index 000000000..e63249fce --- /dev/null +++ b/include/execution/chunked_edge_iterator.hpp @@ -0,0 +1,532 @@ +/** + * @file chunked_edge_iterator.hpp + * @brief Chunked edge iterator implementation for efficient parallel processing + * of mesh edges + * + * This file provides iterators for processing mesh edges in chunks, enabling + * efficient parallel execution on GPU and CPU architectures. The chunked + * approach improves memory locality and load balancing in spectral element + * computations. + * + * @section Usage + * @code{.cpp} + * // Example: Process edges with chunked iterator + * #include "execution/chunked_edge_iterator.hpp" + * #include "execution/for_all.hpp" + * + * using ParallelConfig = specfem::parallel_config::default_chunk_edge_config< + * specfem::dimension::type::dim2, Kokkos::DefaultExecutionSpace>; + * + * // Create views for storage and edges + * constexpr int num_points = 5; + * Kokkos::View + * storage("storage", num_edges); Kokkos::View edges("edges", num_edges); + * + * // Initialize edges + * Kokkos::parallel_for("init_edges", num_edges, KOKKOS_LAMBDA(int i) { + * edges(i) = specfem::mesh_entity::edge(i, + * specfem::mesh_entity::type::top); + * }); + * + * // Create chunked iterator and process edges + * specfem::execution::ChunkedEdgeIterator iterator(ParallelConfig(), edges, + * num_points); specfem::execution::for_all("process_edges", iterator, + * KOKKOS_LAMBDA(const auto& index) { + * // Access edge point data + * int ispec = index.ispec; // Element index + * int ipoint = index.ipoint; // Point index along edge + * + * // Perform computation on edge point + * Kokkos::atomic_add(&storage(ispec, ipoint), 1); + * }); + * @endcode + */ + +#pragma once + +#include "chunked_edge_iterator.hpp" +#include "macros.hpp" +#include "policy.hpp" +#include "specfem/point.hpp" +#include "void_iterator.hpp" +#include +#include +#include + +namespace specfem::chunk_edge { +// Forward declaration for EdgeIndex +template +class Index; +} // namespace specfem::chunk_edge + +namespace specfem::execution { + +// clang-format off +/** + * @brief Index type representing a single point on a mesh edge + * + * This class encapsulates the coordinates and properties of a single + * Gauss-Lobatto-Legendre (GLL) point located on a mesh edge. It provides access + * to both the local element coordinates and the position along the edge. + * + * @tparam DimensionTag Spatial dimension (2D or 3D) + * @tparam KokkosIndexType Type of the underlying Kokkos policy index + * @tparam ExecutionSpace Kokkos execution space for parallel operations + * + * @section Usage + * @code{.cpp} + * // Typically used within chunked edge iterator lambdas + * specfem::execution::for_all("process_edges", iterator, + * KOKKOS_LAMBDA(const EdgePointIndex& index) { + * int element_id = index.ispec; // Element containing this edge point + * int z_coord = index.iz; // Local z-coordinate within element + * int x_coord = index.ix; // Local x-coordinate within element + * int point_pos = index.ipoint; // Position along edge (0 to num_points-1) + * + * // Process the edge point... + * }); + * @endcode + */ +// clang-format on +template +class EdgePointIndex { +public: + using index_type = specfem::point::edge_index; + using iterator_type = + VoidIterator; ///< Iterator type used to iterate over + ///< GLL points within this index. + ///< @c VoidIterator is used when the + ///< index refers to a single GLL point. + + /** + * @brief Get the policy index that defined this point index. + * + * @return const KokkosIndexType The policy index that defined this point + * index. + */ + KOKKOS_INLINE_FUNCTION + constexpr const KokkosIndexType get_policy_index() const { + return this->kokkos_index; + } + + /** + * @brief Get a reference to this index + * + * @return const index_type& Reference to this EdgePointIndex + */ + KOKKOS_INLINE_FUNCTION + constexpr const index_type &get_index() const { return this->index; } + + /** + * @brief Constructor for EdgePointIndex + * + * @param index Local element coordinates of the edge point + * @param ipoint Position of point along the edge (0 to num_points-1) + * @param kokkos_index Underlying Kokkos policy index + */ + KOKKOS_INLINE_FUNCTION + EdgePointIndex(const specfem::point::index &index, + const int ipoint, const KokkosIndexType &kokkos_index) + : index(index.ispec, kokkos_index, ipoint, index.iz, index.ix), + kokkos_index(kokkos_index) {} + + /** + * @brief Get iterator for this single point + * + * @return const iterator_type VoidIterator since this represents a single + * point + */ + KOKKOS_INLINE_FUNCTION + constexpr const iterator_type get_iterator() const { return iterator_type{}; } + +private: + index_type index; ///< Local element coordinates of the edge point + + KokkosIndexType kokkos_index; ///< Kokkos index type +}; + +/** + * @brief Team-level iterator for processing edge points within a chunk + * + * This iterator operates at the team level, distributing edge points among team + * members for parallel processing. It computes local element coordinates for + * each edge point based on the edge type and orientation. + * + * @tparam DimensionTag Spatial dimension (2D or 3D) + * @tparam ViewType Kokkos view type containing mesh edges + * @tparam TeamMemberType Kokkos team member type + * + * @section EdgeMapping + * Edge points are mapped to element coordinates based on edge type: + * - bottom: (iz=0, ix=ipoint) + * - top: (iz=num_points-1, ix=num_points-1-ipoint) + * - left: (iz=ipoint, ix=0) + * - right: (iz=num_points-1-ipoint, ix=num_points-1) + * + * @section Usage + * @code{.cpp} + * // Used internally by ChunkedEdgeIterator, not typically instantiated + * directly + * // Access through the chunked iterator's operator() + * @endcode + */ +template +class ChunkEdgeIterator : public TeamThreadRangePolicy { +private: + using base_type = TeamThreadRangePolicy; + +public: + using base_policy_type = typename base_type::base_policy_type; + using policy_index_type = typename base_type::policy_index_type; + using index_type = EdgePointIndex; + using execution_space = typename base_type::execution_space; + + /** + * @brief Convert linear index to edge point index + * + * Maps a linear index to specific edge and point coordinates, handling + * edge orientation and element mapping. + * + * @param i Linear index within the thread range + * @return index_type EdgePointIndex for the specified linear index + */ + KOKKOS_INLINE_FUNCTION + const index_type operator()(const policy_index_type &i) const { + const int iedge = i % nedges; + const int ipoint = i / nedges; + const int ispec = edges(iedge).ispec; + const specfem::mesh_entity::type edge_type = edges(iedge).edge_type; + const auto index = + (edges(iedge).reverse_orientation) + ? ChunkEdgeIterator::compute_index(ispec, num_points - 1 - ipoint, + num_points, edge_type) + : ChunkEdgeIterator::compute_index(ispec, ipoint, num_points, + edge_type); + + return index_type{ index, ipoint, iedge }; + } + + /** + * @brief Constructor for team-level edge iterator + * + * @param team_member Kokkos team member for parallel execution + * @param edges View of mesh edges to process + * @param npoints Number of GLL points per edge + */ + KOKKOS_INLINE_FUNCTION + ChunkEdgeIterator(const TeamMemberType &team_member, const ViewType &edges, + const int npoints) + : num_points(npoints), nedges(edges.extent(0)), + base_type(team_member, edges.extent(0) * npoints), edges(edges) {} + +private: + ViewType edges; ///< View of mesh edges to iterate over + std::size_t num_points; ///< Number of GLL points per edge + int nedges; ///< Total number of edges in this chunk + + /** + * @brief Compute element coordinates for an edge point + * + * Maps edge point position to local element coordinates based on edge type. + * Handles different edge orientations (bottom, top, left, right). + * + * @param ispec Element index + * @param ipoint Point position along edge + * @param num_points Total points per edge + * @param edge Edge type (bottom, top, left, right) + * @return specfem::point::index Local element coordinates + */ + KOKKOS_INLINE_FUNCTION + static specfem::point::index + compute_index(const int ispec, const int ipoint, const int num_points, + const specfem::mesh_entity::type edge) { + switch (edge) { + case specfem::mesh_entity::type::bottom: + return { ispec, 0, ipoint }; + break; + case specfem::mesh_entity::type::top: + return { ispec, num_points - 1, ipoint }; + break; + case specfem::mesh_entity::type::left: + return { ispec, ipoint, 0 }; + break; + case specfem::mesh_entity::type::right: + return { ispec, ipoint, num_points - 1 }; + break; + default: + DEVICE_ASSERT(false, "Invalid edge type"); + return { 0, 0, 0 }; + } + } +}; + +/** + * @brief Chunk-level index for managing edge processing within a team + * + * This class serves as an intermediate index type that manages a chunk of edges + * assigned to a Kokkos team. It provides access to both the chunk-specific + * index and the team-level iterator for processing edge points within the + * chunk. + * + * @tparam DimensionTag Spatial dimension (2D or 3D) + * @tparam ViewType Kokkos view type containing the chunk of mesh edges + * @tparam KokkosIndexType Type of the underlying Kokkos policy index (team + * member) + * + * @section Architecture + * ChunkEdgeIndex acts as a bridge between: + * - High-level ChunkedEdgeIterator (manages teams and chunks) + * - Team-level ChunkEdgeIterator (processes edges within a chunk) + * - Low-level EdgePointIndex (represents individual edge points) + * + * @section Usage + * @code{.cpp} + * // Typically used internally within the chunked iterator hierarchy + * // Not directly instantiated by user code + * + * // Example of accessing chunk index in nested iteration: + * specfem::execution::for_all("process_chunks", chunked_iterator, + * KOKKOS_LAMBDA(const auto& chunk_index) { + * // chunk_index is of type ChunkEdgeIndex + * auto team_iterator = chunk_index.get_iterator(); + * auto policy_idx = chunk_index.get_policy_index(); + * + * // Use team_iterator for further nested iteration + * // within this chunk of edges + * }); + * @endcode + * + * @section Responsibilities + * - Maintains reference to the chunk's edge subset view + * - Stores the Kokkos team member for parallel execution + * - Provides access to team-level iterator for edge processing + * - Bridges between chunk-level and point-level operations + */ +template +class ChunkEdgeIndex { +private: + using index_type = + specfem::chunk_edge::Index; + +public: + using iterator_type = + ChunkEdgeIterator; + + /** + * @brief Get the Kokkos policy index (team member) for this chunk + * + * @return const KokkosIndexType& Reference to the Kokkos team member + * that is responsible for processing this chunk + */ + KOKKOS_INLINE_FUNCTION + constexpr const KokkosIndexType &get_policy_index() const { + return this->kokkos_index; + } + + /** + * @brief Get the chunk-specific index + * + * @return const index_type& Reference to the chunk index containing + * metadata about this specific chunk of edges + */ + KOKKOS_INLINE_FUNCTION + const index_type &get_index() const { return { *this }; } + + /** + * @brief Get the team-level iterator for processing edges in this chunk + * + * @return const iterator_type& Reference to the ChunkEdgeIterator that + * can be used to iterate over individual edge points within this + * chunk + */ + KOKKOS_INLINE_FUNCTION + const iterator_type &get_iterator() const { return this->iterator; } + + /** + * @brief Constructor for ChunkEdgeIndex + * + * @param edges View of mesh edges for this specific chunk (subset of total + * edges) + * @param num_points Number of GLL points per edge + * @param kokkos_index Kokkos team member responsible for this chunk + */ + KOKKOS_INLINE_FUNCTION + ChunkEdgeIndex(const ViewType &edges, const int num_points, + const KokkosIndexType &kokkos_index) + : kokkos_index(kokkos_index), iterator(kokkos_index, edges, num_points) {} + +private: + KokkosIndexType kokkos_index; ///< Kokkos team member for this chunk + iterator_type iterator; ///< Team-level iterator for edge processing within + ///< chunk +}; + +/** + * @brief High-level chunked edge iterator for efficient parallel edge + * processing + * + * This is the main iterator class for processing mesh edges in chunks. It + * divides the edge set into chunks of configurable size and processes each + * chunk in parallel using Kokkos teams. This approach improves memory locality + * and load balancing. + * + * @tparam ParallelConfig Configuration class defining execution parameters and + * chunk size + * @tparam ViewType Kokkos view type containing mesh edges + * + * @section Performance + * The chunked approach provides several benefits: + * - Improved memory locality by processing related edges together + * - Better load balancing across teams + * - Reduced memory pressure from large edge sets + * - Configurable chunk sizes for different architectures + * + * @section Usage + * @code{.cpp} + * #include "execution/chunked_edge_iterator.hpp" + * #include "execution/for_all.hpp" + * + * // Define parallel configuration + * using ParallelConfig = specfem::parallel_config::default_chunk_edge_config< + * specfem::dimension::type::dim2, Kokkos::DefaultExecutionSpace>; + * + * // Create edge view and initialize + * constexpr int num_edges = 10000; + * constexpr int num_points = 5; + * Kokkos::View edges("edges", num_edges); + * + * // Initialize edges with proper element indices and types + * Kokkos::parallel_for("init_edges", num_edges, KOKKOS_LAMBDA(int i) { + * edges(i) = specfem::mesh_entity::edge(i, + * specfem::mesh_entity::type::top); + * }); + * + * // Create storage for computation results + * Kokkos::View storage("storage", num_edges); + * + * // Create and use chunked iterator + * specfem::execution::ChunkedEdgeIterator iterator(ParallelConfig(), edges, + * num_points); + * + * specfem::execution::for_all("process_edges", iterator, + * KOKKOS_LAMBDA(const auto& index) { + * // Each thread processes one edge point + * int element_id = index.ispec; + * int point_id = index.ipoint; + * + * // Perform computation on edge point + * Kokkos::atomic_add(&storage(element_id, point_id), 1); + * }); + * + * Kokkos::fence(); + * @endcode + * + * @section ChunkSize + * The chunk size is determined by ParallelConfig::chunk_size. Typical values: + * - GPU: 32 edges per chunk + * - CPU: 1 edge per chunk + */ +template +class ChunkedEdgeIterator : public TeamPolicy { +private: + using base_type = TeamPolicy; + constexpr static auto simd_size = 1; + constexpr static auto using_simd = false; + constexpr static auto chunk_size = ParallelConfig::chunk_size; ///< Chunk size + +public: + using base_policy_type = + typename base_type::base_policy_type; ///< Base policy type. Evaluates to + ///< @c Kokkos::TeamPolicy` + using policy_index_type = typename base_type:: + policy_index_type; ///< Policy index type. + ///< Evaluates to + ///< @c Kokkos::TeamPolicy::member_type + using index_type = + ChunkEdgeIndex(), + std::declval >())), + policy_index_type>; ///< Underlying index type. This index + ///< will be passed to the closure when + ///< calling @ref + ///< specfem::execution::for_each_level + using execution_space = + typename base_type::execution_space; ///< Execution space type. + using base_index_type = specfem::point::edge_index< + ParallelConfig::dimension>; ///< Index type to be used when calling + ///< @ref specfem::execution::for_all + ///< with this iterator. + + /** + * @brief Constructor with explicit edge view and point count + * + * @param edges View of mesh edges to process + * @param num_points Number of GLL points per edge + */ + ChunkedEdgeIterator(const ViewType edges, int num_points) + : edges(edges), num_points(num_points), + base_type(((edges.extent(0) / chunk_size) + + ((edges.extent(0) % chunk_size) != 0)), + Kokkos::AUTO, Kokkos::AUTO) {} + + /** + * @brief Constructor with parallel configuration + * + * @param config Parallel configuration (unused but required for interface + * compatibility) + * @param edges View of mesh edges to process + * @param num_points Number of GLL points per edge + */ + ChunkedEdgeIterator(const ParallelConfig, const ViewType edges, + int num_points) + : ChunkedEdgeIterator(edges, num_points) {} + + /** + * @brief Team operator for chunk processing + * + * Creates a chunk-specific index for the given team. Each team processes + * a contiguous chunk of edges, improving memory locality. + * + * @param team Kokkos team member + * @return index_type Chunk index for this team + */ + KOKKOS_INLINE_FUNCTION + const index_type operator()(const policy_index_type &team) const { + const auto league_id = team.league_rank(); + const int start = league_id * chunk_size; + const int end = (start + chunk_size < edges.extent(0)) ? start + chunk_size + : edges.extent(0); + return index_type{ Kokkos::subview(edges, Kokkos::make_pair(start, end)), + num_points, team }; + } + + /** + * @brief Set scratch memory size for teams + * + * Forwards scratch memory configuration to the underlying team policy. + * + * @tparam Args Variadic template for scratch size arguments + * @param args Arguments to forward to team policy + * @return ChunkedEdgeIterator& Reference to this iterator for chaining + */ + template + inline ChunkedEdgeIterator &set_scratch_size(Args &&...args) { + base_type::set_scratch_size(std::forward(args)...); + return *this; + } + +private: + ViewType edges; ///< View of indices of edges within this iterator. + int num_points; ///< Number of GLL points on each edge +}; + +} // namespace specfem::execution + +#include "specfem/chunk_edge/index.hpp" diff --git a/include/execution/chunked_intersection_iterator.hpp b/include/execution/chunked_intersection_iterator.hpp new file mode 100644 index 000000000..233f5ce41 --- /dev/null +++ b/include/execution/chunked_intersection_iterator.hpp @@ -0,0 +1,635 @@ +/** + * @file chunked_intersection_iterator.hpp + * @brief Chunked intersection iterator for processing edge-edge intersections + * + * This file provides iterators for processing intersections between mesh edges, + * enabling efficient parallel computation of coupled boundary conditions and + * interface operations in spectral element methods. + * + * @section Usage + * @code{.cpp} + * // Example: Process edge intersections with chunked iterator + * #include "execution/chunked_intersection_iterator.hpp" + * #include "execution/for_all.hpp" + * + * using ParallelConfig = specfem::parallel_config::default_chunk_edge_config< + * specfem::dimension::type::dim2, Kokkos::DefaultExecutionSpace>; + * + * // Create views for edge intersections + * constexpr int num_intersections = 1000; + * constexpr int num_points = 5; + * + * Kokkos::View self_edges("self_edges", + * num_intersections); Kokkos::View + * coupled_edges("coupled_edges", num_intersections); + * Kokkos::View self_storage("self_storage", + * num_intersections); Kokkos::View + * coupled_storage("coupled_storage", num_intersections); + * + * // Initialize intersection edges + * Kokkos::parallel_for("init_intersections", num_intersections, + * KOKKOS_LAMBDA(int i) { self_edges(i) = specfem::mesh_entity::edge(i, + * specfem::mesh_entity::type::top); coupled_edges(i) = + * specfem::mesh_entity::edge(num_intersections-i-1, + * specfem::mesh_entity::type::bottom); + * }); + * + * // Create chunked intersection iterator and process + * specfem::execution::ChunkedIntersectionIterator iterator( + * ParallelConfig(), self_edges, coupled_edges, num_points); + * + * specfem::execution::for_all("process_intersections", iterator, + * KOKKOS_LAMBDA(const auto& index) { + * // Access coupled edge data + * auto self_idx = index.self_index; + * auto coupled_idx = index.coupled_index; + * int point = index.ipoint; + * + * // Process intersection point + * Kokkos::atomic_add(&self_storage(self_idx.ispec, point), 1); + * Kokkos::atomic_add(&coupled_storage(coupled_idx.ispec, point), 1); + * }); + * @endcode + */ + +#pragma once + +#include "chunked_edge_iterator.hpp" +#include "macros.hpp" +#include "policy.hpp" +#include "specfem/point.hpp" +#include "void_iterator.hpp" +#include +#include +#include + +namespace specfem::execution { + +/** + * @brief Index type representing a point on an edge-edge intersection interface + * + * This class encapsulates the coordinates and properties of a single point + * located at the intersection of two mesh edges. It provides access to both the + * self and coupled edge coordinates, enabling efficient processing of interface + * conditions. + * + * @tparam DimensionTag Spatial dimension (2D or 3D) + * @tparam KokkosIndexType Type of the underlying Kokkos policy index + * @tparam ExecutionSpace Kokkos execution space for parallel operations + * + * @section Usage + * @code{.cpp} + * // Typically used within chunked intersection iterator lambdas + * specfem::execution::for_all("process_intersections", iterator, + * KOKKOS_LAMBDA(const InterfacePointIndex& + * index) { + * // Access interface point data + * auto interface_idx = index.get_index(); + * auto self_point = interface_idx.self_index; // Self edge + * coordinates auto coupled_point = interface_idx.coupled_index; // Coupled edge + * coordinates int point_pos = index.ipoint; // Position along + * interface + * + * // Process coupled boundary condition... + * }); + * @endcode + */ +template +class InterfacePointIndex { +public: + using index_type = specfem::point::interface_index; + using iterator_type = + VoidIterator; ///< Iterator type used to iterate over + ///< GLL points within this index. + ///< @c VoidIterator is used when the + ///< index refers to a single GLL point. + + /** + * @brief Get the policy index that defined this point index. + * + * @return const KokkosIndexType The policy index that defined this point + * index. + */ + KOKKOS_INLINE_FUNCTION + constexpr const KokkosIndexType get_policy_index() const { + return this->kokkos_index; + } + + /** + * @brief Get the interface index containing self and coupled coordinates + * + * @return const index_type& Reference to the interface index + */ + KOKKOS_INLINE_FUNCTION + constexpr const index_type &get_index() const { + return this->index; ///< Returns the local coordinates of the GLL point on + ///< the interface + } + + /** + * @brief Constructor for InterfacePointIndex + * + * @param self_index Local element coordinates of the self edge point + * @param coupled_index Local element coordinates of the coupled edge point + * @param ipoint Position of point along the interface (0 to num_points-1) + * @param kokkos_index Underlying Kokkos policy index + */ + KOKKOS_INLINE_FUNCTION + InterfacePointIndex( + const specfem::point::edge_index &self_index, + const specfem::point::edge_index &coupled_index, + const KokkosIndexType &kokkos_index) + : index(self_index, coupled_index), kokkos_index(kokkos_index) {} + + /** + * @brief Get iterator for this single interface point + * + * @return const iterator_type VoidIterator since this represents a single + * point + */ + KOKKOS_INLINE_FUNCTION + constexpr const iterator_type get_iterator() const { return iterator_type{}; } + +public: + int ipoint; ///< Position along interface edge (0 to num_points-1) + +private: + index_type index; ///< Index of the GLL point on the interface + KokkosIndexType kokkos_index; ///< Kokkos index type +}; + +/** + * @brief Team-level iterator for processing intersection points within a chunk + * + * This iterator operates at the team level, processing intersection points + * between two sets of edges (self and coupled). It combines two + * ChunkEdgeIterators to provide synchronized access to corresponding points on + * intersecting edges. + * + * @tparam DimensionTag Spatial dimension (2D or 3D) + * @tparam ViewType Kokkos view type containing mesh edges + * @tparam TeamMemberType Kokkos team member type + * + * @section IntersectionMapping + * Each intersection point corresponds to: + * - A point on the self edge (computed by self_iterator) + * - A corresponding point on the coupled edge (computed by coupled_iterator) + * - Both points share the same ipoint index along their respective edges + * + * @section Usage + * @code{.cpp} + * // Used internally by ChunkedIntersectionIterator + * // Creates interface points from self and coupled edge iterators + * @endcode + */ +template +class ChunkedEdgeIntersectionIterator + : public TeamThreadRangePolicy { +private: + using base_type = TeamThreadRangePolicy; + +public: + using base_policy_type = + typename base_type::base_policy_type; ///< Base policy type. Evaluates to + ///< @c Kokkos::TeamThreadRange + using policy_index_type = + typename base_type::policy_index_type; ///< Policy index type. Must be + ///< convertible to integral type. + using index_type = InterfacePointIndex; + using execution_space = + typename base_type::execution_space; ///< Execution space type. + + /** + * @brief Convert linear index to interface point index + * + * Maps a linear index to interface point coordinates by computing + * corresponding self and coupled edge points. + * + * @param i Linear index within the thread range + * @return index_type InterfacePointIndex for the specified linear index + */ + KOKKOS_INLINE_FUNCTION + const index_type operator()(const policy_index_type &i) const { + const auto self_index = self_iterator(i); + const auto coupled_index = coupled_iterator(i); + + return index_type{ self_index.get_index(), coupled_index.get_index(), + self_index.get_policy_index() }; + } + + /** + * @brief Constructor for team-level intersection iterator + * + * @param team_member Kokkos team member for parallel execution + * @param self_edges View of self mesh edges + * @param coupled_edges View of coupled mesh edges + * @param num_points Number of GLL points per edge + */ + KOKKOS_INLINE_FUNCTION + ChunkedEdgeIntersectionIterator(const TeamMemberType &team_member, + const ViewType &self_edges, + const ViewType &coupled_edges, + const int num_points) + : base_type(team_member, self_edges.extent(0) * num_points), + self_iterator(team_member, self_edges, num_points), + coupled_iterator(team_member, coupled_edges, num_points) {} + + /** + * @brief Get the self edge iterator + * + * @return const ChunkEdgeIterator& Reference to self edge iterator + */ + KOKKOS_INLINE_FUNCTION + const ChunkEdgeIterator & + get_self_iterator() const { + return self_iterator; + } + + /** + * @brief Get the coupled edge iterator + * + * @return const ChunkEdgeIterator& Reference to coupled edge iterator + */ + KOKKOS_INLINE_FUNCTION + const ChunkEdgeIterator & + get_coupled_iterator() const { + return coupled_iterator; + } + +private: + ChunkEdgeIterator + self_iterator; ///< Iterator for self edges + ChunkEdgeIterator + coupled_iterator; ///< Iterator for coupled edges +}; + +/** + * @brief Chunk-level index for managing edge intersection processing within a + * team + * + * This class serves as an intermediate index type that manages a chunk of edge + * intersections assigned to a Kokkos team. It provides access to both self and + * coupled edge chunks, their respective iterators, and the team-level + * intersection iterator for processing interface points within the chunk. + * + * @tparam DimensionTag Spatial dimension (2D or 3D) + * @tparam ViewType Kokkos view type containing the chunk of mesh edges + * @tparam KokkosIndexType Type of the underlying Kokkos policy index (team + * member) + * + * @section Architecture + * ChunkEdgeIntersectionIndex acts as a bridge in the intersection iterator + * hierarchy: + * - High-level ChunkedIntersectionIterator (manages teams and intersection + * chunks) + * - Chunk-level ChunkEdgeIntersectionIndex (manages intersection chunk within a + * team) + * - Team-level ChunkedEdgeIntersectionIterator (processes intersection points + * within chunk) + * - Low-level InterfacePointIndex (represents individual interface points) + * + * @section DualEdgeManagement + * Unlike ChunkEdgeIndex which manages a single edge set, this class manages: + * - Self edges: Primary edge set (e.g., from domain A) + * - Coupled edges: Secondary edge set (e.g., from domain B) + * - Synchronized processing: Ensures corresponding points are processed + * together + * + * @section Usage + * @code{.cpp} + * // Typically used internally within the chunked intersection iterator + * hierarchy + * // Not directly instantiated by user code + * + * // Example of accessing intersection chunk index in nested iteration: + * specfem::execution::for_all("process_intersection_chunks", chunked_iterator, + * KOKKOS_LAMBDA(const auto& chunk_index) { + * // chunk_index is of type ChunkEdgeIntersectionIndex + * auto intersection_iterator = chunk_index.get_iterator(); + * auto self_chunk = chunk_index.get_self_index(); + * auto coupled_chunk = chunk_index.get_coupled_index(); + * auto team_member = chunk_index.get_policy_index(); + * + * // Use intersection_iterator for processing interface points + * // within this chunk of intersections + * }); + * @endcode + * + * @section Applications + * Common use cases for intersection chunk processing: + * - Fluid-structure interaction at interfaces + * - Acoustic-elastic coupling computations + * - Domain decomposition boundary handling + * - Multi-physics interface operations + * - Periodic boundary condition enforcement + */ +template +class ChunkEdgeIntersectionIndex { +private: + using index_type = ChunkEdgeIntersectionIndex; + +public: + using iterator_type = + ChunkedEdgeIntersectionIterator; + + /** + * @brief Get the Kokkos policy index (team member) for this intersection + * chunk + * + * @return const KokkosIndexType& Reference to the Kokkos team member + * that is responsible for processing this intersection chunk + */ + KOKKOS_INLINE_FUNCTION + constexpr const KokkosIndexType &get_policy_index() const { + return this->kokkos_index; + } + + /** + * @brief Get a reference to this intersection chunk index + * + * @return const index_type& Reference to this ChunkEdgeIntersectionIndex + */ + KOKKOS_INLINE_FUNCTION + const index_type &get_index() const { return *this; } + + /** + * @brief Get the team-level iterator for processing intersection points in + * this chunk + * + * @return const iterator_type& Reference to the + * ChunkedEdgeIntersectionIterator that can be used to iterate over individual + * interface points within this chunk + */ + KOKKOS_INLINE_FUNCTION + const iterator_type &get_iterator() const { return this->iterator; } + + /** + * @brief Constructor for ChunkEdgeIntersectionIndex + * + * Creates a chunk-level intersection index managing both self and coupled + * edge sets. Also initializes individual chunk indices for self and coupled + * edges. + * + * @param self_edges View of self mesh edges for this specific chunk + * @param coupled_edges View of coupled mesh edges for this specific chunk + * @param num_points Number of GLL points per edge + * @param kokkos_index Kokkos team member responsible for this intersection + * chunk + */ + KOKKOS_INLINE_FUNCTION + ChunkEdgeIntersectionIndex(const ViewType &self_edges, + const ViewType &coupled_edges, + const int num_points, + const KokkosIndexType &kokkos_index) + : kokkos_index(kokkos_index), + iterator(kokkos_index, self_edges, coupled_edges, num_points), + self_index(self_edges, num_points, kokkos_index), + coupled_index(coupled_edges, num_points, kokkos_index) {} + + /** + * @brief Get the chunk index for self edges + * + * Provides access to the self edge chunk for independent processing + * or when asymmetric operations are needed on the interface. + * + * @return const ChunkEdgeIndex& Reference to the self edge chunk index + */ + KOKKOS_INLINE_FUNCTION + const ChunkEdgeIndex & + get_self_index() const { + return self_index; + } + + /** + * @brief Get the chunk index for coupled edges + * + * Provides access to the coupled edge chunk for independent processing + * or when asymmetric operations are needed on the interface. + * + * @return const ChunkEdgeIndex& Reference to the coupled edge chunk index + */ + KOKKOS_INLINE_FUNCTION + const ChunkEdgeIndex & + get_coupled_index() const { + return coupled_index; + } + +private: + KokkosIndexType kokkos_index; ///< Kokkos team member for this intersection + ///< chunk + iterator_type iterator; ///< Team-level intersection iterator for processing + ///< interface points + ChunkEdgeIndex + self_index; ///< Chunk index for self edges + ChunkEdgeIndex + coupled_index; ///< Chunk index for coupled edges +}; + +/** + * @brief High-level chunked intersection iterator for efficient parallel + * processing of edge intersections + * + * This is the main iterator class for processing intersections between mesh + * edges in chunks. It manages two sets of edges (self and coupled) and + * processes their intersections in parallel using Kokkos teams. This approach + * is essential for coupled boundary conditions, interface operations, and + * multi-domain computations in spectral element methods. + * + * @tparam ParallelConfig Configuration class defining execution parameters and + * chunk size + * @tparam ViewType Kokkos view type containing mesh edges + * + * @section Applications + * The chunked intersection iterator is commonly used for: + * - Fluid-structure interaction boundaries + * - Acoustic-elastic interface coupling + * - Domain decomposition interface handling + * - Periodic boundary condition enforcement + * - Multi-physics coupling operations + * + * @section Performance + * The chunked approach provides benefits for intersection processing: + * - Improved memory locality for coupled edge data + * - Better load balancing across teams + * - Reduced synchronization overhead + * - Configurable chunk sizes for different architectures + * + * @section Usage + * @code{.cpp} + * #include "execution/chunked_intersection_iterator.hpp" + * #include "execution/for_all.hpp" + * + * // Define parallel configuration + * using ParallelConfig = specfem::parallel_config::default_chunk_edge_config< + * specfem::dimension::type::dim2, Kokkos::DefaultExecutionSpace>; + * + * // Create edge views for intersection + * constexpr int num_intersections = 5000; + * constexpr int num_points = 5; + * + * Kokkos::View self_edges("self_edges", + * num_intersections); Kokkos::View + * coupled_edges("coupled_edges", num_intersections); + * + * // Initialize intersection pairs + * Kokkos::parallel_for("init_intersections", num_intersections, + * KOKKOS_LAMBDA(int i) { + * // Self edges from domain A + * self_edges(i) = specfem::mesh_entity::edge(i, + * specfem::mesh_entity::type::top); + * + * // Coupled edges from domain B (often with different orientation) + * coupled_edges(i) = specfem::mesh_entity::edge( + * num_intersections - i - 1, specfem::mesh_entity::type::bottom); + * }); + * + * // Create storage for coupled calculations + * Kokkos::View self_field("self_field", + * num_intersections); Kokkos::View + * coupled_field("coupled_field", num_intersections); + * Kokkos::View interface_flux("interface_flux", + * num_intersections); + * + * // Create and use chunked intersection iterator + * specfem::execution::ChunkedIntersectionIterator iterator( + * ParallelConfig(), self_edges, coupled_edges, num_points); + * + * specfem::execution::for_all("compute_interface_coupling", iterator, + * KOKKOS_LAMBDA(const auto& index) { + * // Access interface point data + * auto interface_idx = index.get_index(); + * auto self_point = interface_idx.self_index; + * auto coupled_point = interface_idx.coupled_index; + * int point = index.ipoint; + * + * // Compute interface coupling (e.g., acoustic-elastic) + * double self_value = self_field(self_point.ispec, point); + * double coupled_value = coupled_field(coupled_point.ispec, point); + * + * // Apply coupling operator (simplified example) + * double flux = 0.5 * (self_value + coupled_value); + * interface_flux(self_point.ispec, point) = flux; + * }); + * + * Kokkos::fence(); + * @endcode + * + * @section ChunkSize + * The chunk size affects performance for intersection processing: + * - GPU: 128-512 intersections per chunk (memory bandwidth limited) + * - CPU: 32-128 intersections per chunk (cache hierarchy optimized) + * - Consider memory access patterns of coupled data structures + */ +template +class ChunkedIntersectionIterator : public TeamPolicy { +private: + using base_type = TeamPolicy; ///< Base policy type + constexpr static auto simd_size = 1; + constexpr static auto chunk_size = ParallelConfig::chunk_size; ///< Chunk size +public: + using base_policy_type = + typename base_type::base_policy_type; ///< Base policy type. Evaluates to + ///< @c Kokkos::TeamPolicy` + using policy_index_type = typename base_type:: + policy_index_type; ///< Policy index type. + ///< Evaluates to + ///< @c Kokkos::TeamPolicy::member_type + using index_type = + ChunkEdgeIntersectionIndex(), + std::declval >())), + policy_index_type>; + + using execution_space = + typename base_type::execution_space; ///< Execution space type. + using base_index_type = specfem::point::interface_index< + ParallelConfig::dimension>; ///< Index type to be used when calling @c + ///< specfem::execution::for_all with this + ///< iterator. + + /** + * @brief Constructor with explicit edge views and point count + * + * @param self_edges View of self mesh edges (first side of intersection) + * @param coupled_edges View of coupled mesh edges (second side of + * intersection) + * @param num_points Number of GLL points per edge + */ + ChunkedIntersectionIterator(const ViewType self_edges, + const ViewType coupled_edges, + const int num_points) + : self_edges(self_edges), coupled_edges(coupled_edges), + num_points(num_points), + base_type(((self_edges.extent(0) / chunk_size) + + ((self_edges.extent(0) % chunk_size) != 0)), + Kokkos::AUTO, Kokkos::AUTO) {} + + /** + * @brief Constructor with parallel configuration + * + * @param config Parallel configuration (unused but required for interface + * compatibility) + * @param self_edges View of self mesh edges (first side of intersection) + * @param coupled_edges View of coupled mesh edges (second side of + * intersection) + * @param num_points Number of GLL points per edge + */ + ChunkedIntersectionIterator(const ParallelConfig, const ViewType self_edges, + const ViewType coupled_edges, + const int num_points) + : ChunkedIntersectionIterator(self_edges, coupled_edges, num_points) {} + + /** + * @brief Team operator for intersection chunk processing + * + * Creates a chunk-specific intersection index for the given team. Each team + * processes a contiguous chunk of intersection pairs, improving memory + * locality for coupled computations. + * + * @param team Kokkos team member + * @return index_type Chunk intersection index for this team + */ + KOKKOS_INLINE_FUNCTION + const index_type operator()(const policy_index_type &team) const { + const auto league_id = team.league_rank(); + const int start = league_id * chunk_size; + const int end = ((start + chunk_size) > self_edges.extent(0)) + ? self_edges.extent(0) + : (start + chunk_size); + const auto my_self_edges = + Kokkos::subview(self_edges, Kokkos::make_pair(start, end)); + const auto my_coupled_edges = + Kokkos::subview(coupled_edges, Kokkos::make_pair(start, end)); + return index_type(my_self_edges, my_coupled_edges, num_points, team); + } + + /** + * @brief Set scratch memory size for teams + * + * Forwards scratch memory configuration to the underlying team policy. + * Useful for teams that need temporary storage for intersection computations. + * + * @tparam Args Variadic template for scratch size arguments + * @param args Arguments to forward to team policy + * @return ChunkedIntersectionIterator& Reference to this iterator for + * chaining + */ + template + inline ChunkedIntersectionIterator &set_scratch_size(Args &&...args) { + base_type::set_scratch_size(std::forward(args)...); + return *this; + } + +private: + ViewType self_edges; ///< View of self edges (first side of intersections) + ViewType coupled_edges; ///< View of coupled edges (second side of + ///< intersections) + int num_points; ///< Number of GLL points per edge +}; + +} // namespace specfem::execution diff --git a/include/io/ADIOS2/impl/dataset.hpp b/include/io/ADIOS2/impl/dataset.hpp index e9305258c..cf7e5be39 100644 --- a/include/io/ADIOS2/impl/dataset.hpp +++ b/include/io/ADIOS2/impl/dataset.hpp @@ -50,12 +50,7 @@ class Dataset : public DatasetBase { public: // static_assert(ViewType::is_contiguous, "ViewType must be contiguous"); -#if KOKKOS_VERSION < 40100 - constexpr static int rank = ViewType::rank; - ; ///< Rank of the View -#else constexpr static int rank = ViewType::rank(); ///< Rank of the View -#endif using value_type = typename ViewType::non_const_value_type; ///< Underlying type of the View using native_type = diff --git a/include/io/ASCII/impl/dataset.hpp b/include/io/ASCII/impl/dataset.hpp index c127b5180..1ff89e8fe 100644 --- a/include/io/ASCII/impl/dataset.hpp +++ b/include/io/ASCII/impl/dataset.hpp @@ -24,12 +24,7 @@ class Dataset : public DatasetBase { public: // static_assert(ViewType::is_contiguous, "ViewType must be contiguous"); -#if KOKKOS_VERSION < 40100 - constexpr static int rank = ViewType::rank; - ; ///< Rank of the View -#else constexpr static int rank = ViewType::rank(); ///< Rank of the View -#endif using value_type = typename ViewType::non_const_value_type; ///< Underlying type diff --git a/include/io/HDF5/impl/dataset.hpp b/include/io/HDF5/impl/dataset.hpp index 3ea172d10..6b1a9f599 100644 --- a/include/io/HDF5/impl/dataset.hpp +++ b/include/io/HDF5/impl/dataset.hpp @@ -1,5 +1,4 @@ -#ifndef SPECFEM_IO_HDF5_IMPL_DATASET_HPP -#define SPECFEM_IO_HDF5_IMPL_DATASET_HPP +#pragma once #ifndef NO_HDF5 #include "H5Cpp.h" @@ -50,12 +49,8 @@ class Dataset : public DatasetBase { public: // static_assert(ViewType::is_contiguous, "ViewType must be contiguous"); -#if KOKKOS_VERSION < 40100 - constexpr static int rank = ViewType::rank; - ; ///< Rank of the View -#else constexpr static int rank = ViewType::rank(); ///< Rank of the View -#endif + using value_type = typename ViewType::non_const_value_type; ///< Underlying type of the View using native_type = @@ -115,5 +110,3 @@ class Dataset : public DatasetBase { } // namespace impl } // namespace io } // namespace specfem - -#endif diff --git a/include/io/HDF5/impl/dataset.tpp b/include/io/HDF5/impl/dataset.tpp index d4b8cb824..2d076fdec 100644 --- a/include/io/HDF5/impl/dataset.tpp +++ b/include/io/HDF5/impl/dataset.tpp @@ -1,5 +1,4 @@ -#ifndef SPECFEM_IO_HDF5_IMPL_DATASET_TPP -#define SPECFEM_IO_HDF5_IMPL_DATASET_TPP +#pragma once #ifndef NO_HDF5 #include "H5Cpp.h" @@ -73,5 +72,3 @@ void specfem::io::impl::HDF5::Dataset::read() { } } #endif - -#endif diff --git a/include/io/HDF5/impl/datasetbase.hpp b/include/io/HDF5/impl/datasetbase.hpp index 789a85c7b..cef05db1a 100644 --- a/include/io/HDF5/impl/datasetbase.hpp +++ b/include/io/HDF5/impl/datasetbase.hpp @@ -1,12 +1,11 @@ -#ifndef SPECFEM_IO_HDF5_IMPL_DATASETBASE_HPP -#define SPECFEM_IO_HDF5_IMPL_DATASETBASE_HPP +#pragma once #ifndef NO_HDF5 #include "H5Cpp.h" #endif #include "io/operators.hpp" -#include "native_type.hpp" +#include "native_type.tpp" #include #include @@ -41,6 +40,15 @@ template <> class DatasetBase { specfem::io::impl::HDF5::native_type::type()); } + void write(const std::string *data) { + hsize_t num_elements = dataspace->getSimpleExtentNpoints(); + std::vector cstrs(num_elements); + for (size_t i = 0; i < cstrs.size(); ++i) + cstrs[i] = data[i].c_str(); + dataset->write(cstrs.data(), + specfem::io::impl::HDF5::native_type::type()); + } + void close() { dataset->close(); dataspace->close(); @@ -97,6 +105,17 @@ template <> class DatasetBase { specfem::io::impl::HDF5::native_type::type()); } + void read(std::string *data) { + hsize_t num_elements = dataspace->getSimpleExtentNpoints(); + char **buffer = new char *[num_elements]; + dataset->read(buffer, + specfem::io::impl::HDF5::native_type::type()); + for (int i = 0; i < num_elements; i++) { + data[i].assign(buffer[i]); + } + delete[] buffer; + } + void close() { dataset->close(); dataspace->close(); @@ -113,5 +132,3 @@ template <> class DatasetBase { } // namespace impl } // namespace io } // namespace specfem - -#endif diff --git a/include/io/HDF5/impl/native_type.hpp b/include/io/HDF5/impl/native_type.hpp index aa8a0b926..6a8bfe8c9 100644 --- a/include/io/HDF5/impl/native_type.hpp +++ b/include/io/HDF5/impl/native_type.hpp @@ -1,5 +1,4 @@ -#ifndef SPECFEM_IO_HDF5_IMPL_NATIVE_TYPE_HPP -#define SPECFEM_IO_HDF5_IMPL_NATIVE_TYPE_HPP +#pragma once #ifndef NO_HDF5 #include "H5Cpp.h" @@ -26,5 +25,3 @@ template struct native_type {}; } // namespace impl } // namespace io } // namespace specfem - -#endif diff --git a/include/io/HDF5/impl/native_type.tpp b/include/io/HDF5/impl/native_type.tpp index 51c60a616..ea914f530 100644 --- a/include/io/HDF5/impl/native_type.tpp +++ b/include/io/HDF5/impl/native_type.tpp @@ -1,5 +1,4 @@ -#ifndef SPECFEM_IO_HDF5_IMPL_NATIVE_TYPE_TPP -#define SPECFEM_IO_HDF5_IMPL_NATIVE_TYPE_TPP +#pragma once #ifndef NO_HDF5 #include "H5Cpp.h" @@ -112,6 +111,13 @@ template <> struct specfem::io::impl::HDF5::native_type { return type; } }; -#endif + +template <> struct specfem::io::impl::HDF5::native_type { + static H5::StrType& type() { + static H5::StrType type(H5::PredType::C_S1, H5T_VARIABLE); + type.setOrder(H5T_ORDER_LE); + return type; + } +}; #endif diff --git a/include/io/NPY/NPY.hpp b/include/io/NPY/NPY.hpp new file mode 100644 index 000000000..f65ccb734 --- /dev/null +++ b/include/io/NPY/NPY.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include "impl/dataset.hpp" +#include "impl/dataset.tpp" +#include "impl/file.hpp" +#include "impl/group.hpp" + +namespace specfem::io { + +/** + * @brief Class template for handling folder-based NPY format operations + * + * NPY class provides an interface for reading from and writing to NPY format + * files organized in a folder structure. NPY is a simple binary file format for + * storing NumPy arrays. This implementation extends the basic format to support + * a hierarchical structure similar to HDF5, where: + * - Files represent the root container + * - Groups represent directories/folders + * - Datasets represent individual NPY files + * + * This allows for organized storage of multiple arrays in a structured + * hierarchy. + * + * @tparam OpType Operation type (read/write) that determines the access mode + */ +template class NPY { +public: + using IO_OpType = OpType; ///< Operation type (read/write) + using File = impl::NPY::File; ///< NPY file implementation + using Group = impl::NPY::Group; ///< NPY group implementation + template + using Dataset = impl::NPY::Dataset; ///< NPY dataset + ///< implementation +}; + +} // namespace specfem::io diff --git a/include/io/NPY/impl/dataset.hpp b/include/io/NPY/impl/dataset.hpp new file mode 100644 index 000000000..53fc5b286 --- /dev/null +++ b/include/io/NPY/impl/dataset.hpp @@ -0,0 +1,63 @@ +#pragma once + +#include "datasetbase.hpp" +#include +#include + +namespace specfem::io::impl::NPY { + +// Forward declaration +template class Group; +template class File; +/** + * @brief Dataset class for NPY IO + * + * @tparam OpType Operation type (read/write) + */ +template +class Dataset : public DatasetBase { +public: + // static_assert(ViewType::is_contiguous, "ViewType must be contiguous"); + + constexpr static int rank = ViewType::rank(); ///< Rank of the View + + using value_type = + typename ViewType::non_const_value_type; ///< Underlying type + using MemSpace = typename ViewType::memory_space; ///< Memory space + + /** + * @name Constructors + * + */ + ///@{ + /** + * @brief Construct a new npy Dataset object within an NPY file with the + * given name + * + * @param file npy file object to create the dataset in + * @param name Name of the dataset + * @param data Data to write + */ + Dataset(boost::filesystem::path &file, const std::string &name, + const ViewType data); + ///@} + + /** + * @brief Write the data to the dataset + * + */ + void write(); + + /** + * @brief Read the data from the dataset + * + */ + void read(); + + ~Dataset() { DatasetBase::close(); } + +private: + ViewType data; ///< Data to write +}; + +} // namespace specfem::io::impl::NPY diff --git a/include/io/NPY/impl/dataset.tpp b/include/io/NPY/impl/dataset.tpp new file mode 100644 index 000000000..28bd1a543 --- /dev/null +++ b/include/io/NPY/impl/dataset.tpp @@ -0,0 +1,48 @@ +#pragma once + +#include "dataset.hpp" +#include "datasetbase.hpp" +#include +#include "kokkos_abstractions.h" + +template +specfem::io::impl::NPY::Dataset::Dataset( + boost::filesystem::path &folder_name, const std::string &name, + const ViewType data) + : data(data), DatasetBase( + folder_name, name, + [&data]() -> std::vector { + std::vector dims; + for (int i = 0; i < data.rank(); i++) { + dims.push_back(data.extent(i)); + } + return dims; + }()) {} + +template +void specfem::io::impl::NPY::Dataset::write() { + if (std::is_same_v) { + DatasetBase::write(data.data()); + } else if (std::is_same_v) { + auto host_data = Kokkos::create_mirror_view(data); + Kokkos::deep_copy(host_data, data); + DatasetBase::write(host_data.data()); + return; + } else { + throw std::runtime_error("Unknown memory space"); + } +} + +template +void specfem::io::impl::NPY::Dataset::read() { + if (std::is_same_v) { + DatasetBase::read(data.data()); + } else if (std::is_same_v) { + auto host_data = Kokkos::create_mirror_view(data); + DatasetBase::read(host_data.data()); + Kokkos::deep_copy(data, host_data); + return; + } else { + throw std::runtime_error("Unknown memory space"); + } +} diff --git a/include/io/NPY/impl/datasetbase.hpp b/include/io/NPY/impl/datasetbase.hpp new file mode 100644 index 000000000..aaf2e0888 --- /dev/null +++ b/include/io/NPY/impl/datasetbase.hpp @@ -0,0 +1,108 @@ +#pragma once + +#include "io/operators.hpp" +#include "npy_header.hpp" +#include +#include +#include +#include +#include +#include + +namespace specfem::io::impl::NPY { +template class DatasetBase; + +template <> class DatasetBase { +protected: + DatasetBase(const boost::filesystem::path &folder_path, + const std::string &name, std::vector dims) + : data_path(folder_path / boost::filesystem::path(name + ".npy")), + dims(dims) {} + + template void write(const value_type *data) const { + // Delete the file if it exists + if (boost::filesystem::exists(data_path)) { + std::ostringstream oss; + oss << "WARNING : File " << data_path << " already exists. Deleting it."; + std::cout << oss.str() << std::endl; + boost::filesystem::remove(data_path); + } + + std::ofstream file(data_path.string(), std::ios::out | std::ios::binary); + if (!file.is_open()) { + std::ostringstream oss; + oss << "ERROR : Could not open file " << data_path; + throw std::runtime_error(oss.str()); + } + + int total_elements = 1; + for (int i = 0; i < dims.size(); ++i) { + total_elements *= dims[i]; + } + + NPYString header = create_npy_header(dims); + file.write(&header[0], header.size()); + file.write(reinterpret_cast(data), + total_elements * sizeof(value_type)); + + file.close(); + } + + void close() const {}; + +private: + boost::filesystem::path data_path; + const std::vector dims; +}; + +template <> class DatasetBase { +protected: + DatasetBase(const boost::filesystem::path &folder_path, + const std::string &name, const std::vector &dims) + : data_path(folder_path / boost::filesystem::path(name + ".npy")), + dims(dims) {} + + template void read(value_type *data) const { + std::ifstream file(data_path.string(), std::ios::in | std::ios::binary); + if (!file.is_open()) { + std::ostringstream oss; + oss << "ERROR : Could not open file " << data_path; + throw std::runtime_error(oss.str()); + } + + // Count total elements + int total_elements = 1; + int rank = dims.size(); + for (int i = 0; i < rank; ++i) { + total_elements *= dims[i]; + } + + std::vector shape = parse_npy_header(file); + if (rank != shape.size()) { + std::ostringstream oss; + oss << "ERROR : Rank mismatch between dataset and file"; + throw std::runtime_error(oss.str()); + } + + for (int i = 0; i < rank; ++i) { + if (dims[i] != shape[i]) { + std::ostringstream oss; + oss << "ERROR : Dimension mismatch between dataset and file"; + throw std::runtime_error(oss.str()); + } + } + + file.read(reinterpret_cast(data), + total_elements * sizeof(value_type)); + + file.close(); + } + + void close() const {} + +private: + boost::filesystem::path data_path; + const std::vector dims; +}; + +} // namespace specfem::io::impl::NPY diff --git a/include/io/NPY/impl/file.hpp b/include/io/NPY/impl/file.hpp new file mode 100644 index 000000000..f9151fcad --- /dev/null +++ b/include/io/NPY/impl/file.hpp @@ -0,0 +1,163 @@ +#pragma once + +#include "group.hpp" +#include +#include +#include +#include +#include + +namespace specfem::io::impl::NPY { + +// Forward declaration +template class Group; +template class Dataset; + +/** + * @brief Numpy File implementation + * + * + * @tparam OpType Operation type (read/write) + */ +template class File; + +/** + * @brief Template specialization for write operation + * + */ +template <> class File { +public: + using OpType = specfem::io::write; ///< Operation type + + /** + * @name Constructors + * + */ + ///@{ + /** + * @brief Construct a new npy File object with the given name + * + * @param name Name of the folder + */ + File(const std::string &name) : folder_path(name) { + // Delete the folder if it exists + if (boost::filesystem::exists(folder_path)) { + std::ostringstream oss; + oss << "WARNING : Folder " << folder_path.string() + << " already exists. Deleting it."; + std::cout << oss.str() << std::endl; + boost::filesystem::remove_all(folder_path); + } + + // Create the folder + const bool success = boost::filesystem::create_directory(folder_path); + if (!success) { + std::ostringstream oss; + oss << "ERROR : Could not create folder " << name; + throw std::runtime_error(oss.str()); + } + } + + /** + * @brief Construct a new npy File object with the given name + * + * @param name Name of the folder + */ + File(const char *name) : File(std::string(name)) {} + ///@} + + /** + * @brief Create a new dataset within the file + * + * @tparam ViewType Kokkos view type of the data + * @param name Name of the dataset + * @param data Data to write + * @return specfem::io::impl::NPY::Dataset Dataset object + */ + template + specfem::io::impl::NPY::Dataset + createDataset(const std::string &name, const ViewType data) { + return specfem::io::impl::NPY::Dataset(folder_path, name, + data); + } + + /** + * @brief Create a new group within the file + * + * @param name Name of the group + * @return specfem::io::impl::NPY::Group Group object + */ + specfem::io::impl::NPY::Group createGroup(const std::string &name) { + return specfem::io::impl::NPY::Group(folder_path, name); + } + + void flush() {}; + + ~File() {} + +private: + boost::filesystem::path folder_path; ///< Path to the folder +}; + +/** + * @brief Template specialization for read operation + * + */ +template <> class File { +public: + using OpType = specfem::io::read; ///< Operation type + + /** + * @name Constructors + * + */ + ///@{ + /** + * @brief Read the npy file with the given name + * + * @param name Name of the folder + */ + File(const std::string &name) : folder_path(name) { + if (!boost::filesystem::exists(folder_path)) { + throw std::runtime_error("ERROR : Folder " + name + " does not exist."); + } + } + + /** + * @brief Read the npy file with the given name + * + * @param name Name of the folder + */ + File(const char *name) : File(std::string(name)) {} + ///@} + /** + * @brief Open an existing dataset within the file + * + * @tparam ViewType Kokkos view type of the data + * @param name Name of the dataset + * @param data Data to be read + * @return specfem::io::impl::NPY::Dataset Dataset object + */ + template + specfem::io::impl::NPY::Dataset + openDataset(const std::string &name, const ViewType data) { + return specfem::io::impl::NPY::Dataset(folder_path, name, + data); + } + + /** + * @brief Open an existing group within the file + * + * @param name Name of the group + * @return specfem::io::impl::NPY::Group Group object + */ + specfem::io::impl::NPY::Group openGroup(const std::string &name) { + return specfem::io::impl::NPY::Group(folder_path, name); + } + + ~File() {} + +private: + boost::filesystem::path folder_path; ///< Path to the folder +}; +} // namespace specfem::io::impl::NPY diff --git a/include/io/NPY/impl/group.hpp b/include/io/NPY/impl/group.hpp new file mode 100644 index 000000000..e6e27b94a --- /dev/null +++ b/include/io/NPY/impl/group.hpp @@ -0,0 +1,171 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace specfem::io::impl::NPY { + +// Forward declaration +template class Dataset; +template class File; + +/** + * @brief Group class for npy IO + * + * @tparam OpType Operation type (read/write) + */ +template class Group; + +/** + * @brief Template specialization for write operation + */ +template <> class Group { +public: + using OpType = specfem::io::write; ///< Operation type + + /** + * @name Constructors + * + */ + ///@{ + /** + * @brief Construct a new npy Group object with the given name + * + * @param parent_directory Path to the parent directory + * @param name Name of the folder + */ + Group(boost::filesystem::path parent_directory, const std::string &name) + : folder_path(parent_directory / boost::filesystem::path(name)) { + // Delete the folder if it exists + if (boost::filesystem::exists(this->folder_path)) { + std::ostringstream oss; + oss << "WARNING : Folder " << this->folder_path.string() + << " already exists. Deleting it."; + std::cout << oss.str() << std::endl; + boost::filesystem::remove_all(folder_path); + } + + // Create the folder + const bool success = boost::filesystem::create_directory(this->folder_path); + if (!success) { + std::ostringstream oss; + oss << "ERROR : Could not create folder " << name; + throw std::runtime_error(oss.str()); + } + } + + /** + * @brief Construct a new npy Group object with the given name + * + * @param parent_directory Path to the parent directory + * @param name Name of the folder + */ + Group(boost::filesystem::path parent_directory, const char *name) + : Group(parent_directory, std::string(name)) {} + ///@} + + /** + * @brief Create a new dataset within the group + * + * @tparam ViewType Kokkos view type of the data + * @param name Name of the dataset + * @param data Data to write + * @return specfem::io::impl::NPY::Dataset Dataset object + */ + template + specfem::io::impl::NPY::Dataset + createDataset(const std::string &name, const ViewType data) { + return specfem::io::impl::NPY::Dataset(folder_path, name, + data); + } + + /** + * @brief Create a new group within the group + * + * @param name Name of the group + * @return specfem::io::impl::NPY::Group Group object + */ + specfem::io::impl::NPY::Group createGroup(const std::string &name) { + return specfem::io::impl::NPY::Group(folder_path, name); + } + + ~Group() {} + +private: + boost::filesystem::path folder_path; ///< Path to the folder +}; + +/** + * @brief Template specialization for read operation + */ +template <> class Group { +public: + using OpType = specfem::io::read; ///< Operation type + + /** + * @name Constructors + * + */ + ///@{ + /** + * @brief Construct a new npy Group object with the given name + * + * @param parent_directory Path to the parent directory + * @param name Name of the folder + */ + Group(boost::filesystem::path parent_directory, const std::string &name) + : folder_path(parent_directory / boost::filesystem::path(name)) { + // Check if the folder exists + if (!boost::filesystem::exists(this->folder_path)) { + std::ostringstream oss; + oss << "ERROR : Folder " << this->folder_path.string() + << " does not exist."; + throw std::runtime_error(oss.str()); + } + } + + /** + * @brief Construct a new npy Group object with the given name + * + * @param parent_directory Path to the parent directory + * @param name Name of the folder + */ + Group(boost::filesystem::path parent_directory, const char *name) + : Group(parent_directory, std::string(name)) {} + ///@} + + /** + * @brief Open an existing dataset within the group + * + * @tparam ViewType Kokkos view type of the data + * @param name Name of the dataset + * @param data Data to be read + * @return specfem::io::impl::NPY::Dataset Dataset object + */ + template + specfem::io::impl::NPY::Dataset + openDataset(const std::string &name, const ViewType data) { + return specfem::io::impl::NPY::Dataset(folder_path, name, + data); + } + + /** + * @brief Open an existing group within the group + * + * @param name Name of the group + * @return specfem::io::impl::NPY::Group Group object + */ + specfem::io::impl::NPY::Group openGroup(const std::string &name) { + return specfem::io::impl::NPY::Group(folder_path, name); + } + + ~Group() {} + +private: + boost::filesystem::path folder_path; ///< Path to the folder +}; + +} // namespace specfem::io::impl::NPY diff --git a/include/io/NPY/impl/map_type.hpp b/include/io/NPY/impl/map_type.hpp new file mode 100644 index 000000000..1873eb27f --- /dev/null +++ b/include/io/NPY/impl/map_type.hpp @@ -0,0 +1,26 @@ +#pragma once + +namespace specfem::io::impl::NPY { +/** + * @brief Maps C++ types to NumPy type characters + * + * This function converts C++ type information to the corresponding NumPy type + * character: + * - 'f' for floating point types (float, double, long double) + * - 'i' for signed integer types (int, char, short, long, long long) + * - 'u' for unsigned integer types (unsigned char, unsigned short, unsigned + * long, unsigned long long, unsigned int) + * - 'b' for boolean + * - 'c' for complex types (std::complex, std::complex, + * std::complex) + * - '?' for unknown types + * + * @param t Reference to a std::type_info object representing the type to map + * @return char The corresponding NumPy type character + * + * @note Modified from cnpy library (MIT License) + * https://github.com/rogersce/cnpy + */ +template char map_type(); + +} // namespace specfem::io::impl::NPY diff --git a/include/io/NPY/impl/map_type.tpp b/include/io/NPY/impl/map_type.tpp new file mode 100644 index 000000000..a663a35f7 --- /dev/null +++ b/include/io/NPY/impl/map_type.tpp @@ -0,0 +1,55 @@ +#pragma once + +namespace specfem::io::impl::NPY { +/** + * @brief Maps C++ types to NumPy type characters + * + * This function converts C++ type information to the corresponding NumPy type + * character: + * - 'f' for floating point types (float, double, long double) + * - 'i' for signed integer types (int, char, short, long, long long) + * - 'u' for unsigned integer types (unsigned char, unsigned short, unsigned + * long, unsigned long long, unsigned int) + * - 'b' for boolean + * - 'c' for complex types (std::complex, std::complex, + * std::complex) + * - '?' for unknown types + * + * @param t Reference to a std::type_info object representing the type to map + * @return char The corresponding NumPy type character + * + * @note Modified from cnpy library (MIT License) + * https://github.com/rogersce/cnpy + */ +template char map_type() { + if constexpr (std::is_same_v || + std::is_same_v || + std::is_same_v) + return 'f'; + + if constexpr (std::is_same_v || + std::is_same_v || + std::is_same_v || + std::is_same_v || + std::is_same_v) + return 'i'; + + if constexpr (std::is_same_v || + std::is_same_v || + std::is_same_v || + std::is_same_v || + std::is_same_v) + return 'u'; + + if constexpr (std::is_same_v) + return 'b'; + + if constexpr (std::is_same_v > || + std::is_same_v > || + std::is_same_v >) + return 'c'; + + return '?'; +} + +} // namespace specfem::io::impl::NPY diff --git a/include/io/NPY/impl/npy_header.hpp b/include/io/NPY/impl/npy_header.hpp new file mode 100644 index 000000000..607f2be90 --- /dev/null +++ b/include/io/NPY/impl/npy_header.hpp @@ -0,0 +1,95 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +#include "map_type.tpp" + +namespace specfem::io::impl::NPY { +/** + * @brief A class wrapping a vector of char to facilitate building npy headers. + */ +class NPYString : public std::vector { +public: + using std::vector::vector; + template NPYString &operator+=(const T rhs); +}; + +template <> NPYString &NPYString::operator+=(const std::string rhs); + +template <> NPYString &NPYString::operator+=(const char *rhs); + +template NPYString &NPYString::operator+=(const T rhs) { + // write in little endian + for (size_t byte = 0; byte < sizeof(T); byte++) { + char val = *((char *)&rhs + byte); + this->push_back(val); + } + return *this; +} + +/** + * @brief Create a NumPy .npy file header + * + * This function generates the header for a NumPy .npy file based on the + * provided shape, data type, and array ordering information. The header follows + * the NumPy file format specification. + * + * @tparam value_type The data type of the array elements + * @param shape Vector containing the dimensions of the array + * @param fortran_order Boolean indicating whether the array uses Fortran-style + * ordering + * + * @return std::string The generated header as a vector of characters + * + * @note Modified from cnpy library (MIT License) + * https://github.com/rogersce/cnpy + * + * @example + * For a 3x4 float array using Fortran ordering on a little-endian system, + * the header dictionary might look like: + * {'descr': ' &shape, + const char type_char, const size_t type_size, + bool fortran_order); + +template +NPYString create_npy_header(const std::vector &shape, + bool fortran_order = true) { + return create_npy_header(shape, map_type(), sizeof(value_type), + fortran_order); +} + +/** + * @brief Parse a NumPy .npy file header + * + * This function extracts metadata from a NumPy .npy file header, including word + * size, array shape, and array ordering information. + * + * @param file File stream to the .npy file, positioned at the start of the + * header + * @param byte_size Output parameter that will contain the size of each element + * in bytes + * @param shape Output vector that will contain the dimensions of the array + * @param fortran_order Output parameter that will indicate whether the array + * uses Fortran-style ordering + * @throws std::runtime_error If the header cannot be properly parsed + * + * @note Modified from cnpy library (MIT License) + * https://github.com/rogersce/cnpy + */ +std::vector parse_npy_header(std::ifstream &file, const char type_char, + const size_t type_size); + +template +std::vector parse_npy_header(std::ifstream &file) { + return parse_npy_header(file, map_type(), sizeof(value_type)); +} + +} // namespace specfem::io::impl::NPY diff --git a/include/io/NPZ/NPZ.hpp b/include/io/NPZ/NPZ.hpp new file mode 100644 index 000000000..3e8956128 --- /dev/null +++ b/include/io/NPZ/NPZ.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include "impl/dataset.hpp" +#include "impl/dataset.tpp" +#include "impl/file.hpp" +#include "impl/file.tpp" +#include "impl/group.hpp" + +namespace specfem::io { + +/** + * @brief + * + * + * Zipped archive of NPY format. + * + * @tparam OpType Operation type (read/write) + */ +template class NPZ { +public: + using IO_OpType = OpType; ///< Operation type (read/write) + using File = impl::NPZ::File; ///< NPZ file implementation + using Group = impl::NPZ::Group; ///< NPZ group implementation + template + using Dataset = impl::NPZ::Dataset; ///< NPZ dataset + ///< implementation +}; + +} // namespace specfem::io diff --git a/include/io/NPZ/impl/dataset.hpp b/include/io/NPZ/impl/dataset.hpp new file mode 100644 index 000000000..000b34727 --- /dev/null +++ b/include/io/NPZ/impl/dataset.hpp @@ -0,0 +1,85 @@ +#pragma once + +#include "file.hpp" +#include + +namespace specfem::io::impl::NPZ { + +#ifdef NO_NPZ +// Error message if NPZ is not available +template class Dataset { +public: + using value_type = typename ViewType::non_const_value_type; + using MemSpace = typename ViewType::memory_space; + using native_type = void; + + template Dataset(Args &&...args) { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } + + void write() { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } + + void read() { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } +}; +#else +/** + * @brief Dataset class for NPZ IO + * + * @tparam OpType Operation type (read/write) + */ +template class Dataset { +public: + // static_assert(ViewType::is_contiguous, "ViewType must be contiguous"); + + constexpr static int rank = ViewType::rank(); ///< Rank of the View + + using value_type = + typename ViewType::non_const_value_type; ///< Underlying type + using MemSpace = typename ViewType::memory_space; ///< Memory space + + /** + * @name Constructors + * + */ + ///@{ + /** + * @brief Construct a new npz Dataset object within an NPZ file with the + * given name + * + * @param stream input or output file stream + * @param path Name of the dataset + * @param data Data to write + */ + Dataset(File &file, const std::string &path, const ViewType data); + ///@} + + /** + * @brief Write the data to the dataset + * + */ + void write(); + + /** + * @brief Read the data from the dataset + * + */ + void read(); + + /** + * @brief Close the dataset + * + */ + void close() const {} + +private: + ViewType data; ///< Data to write + File &file; + const std::string path; + const std::vector dims; +}; +#endif +} // namespace specfem::io::impl::NPZ diff --git a/include/io/NPZ/impl/dataset.tpp b/include/io/NPZ/impl/dataset.tpp new file mode 100644 index 000000000..9abf07d4c --- /dev/null +++ b/include/io/NPZ/impl/dataset.tpp @@ -0,0 +1,49 @@ +#pragma once + +#include "file.hpp" +#include "dataset.hpp" +#include "enumerations/interface.hpp" +#include +#include "kokkos_abstractions.h" + +#ifndef NO_NPZ +template +specfem::io::impl::NPZ::Dataset::Dataset( + specfem::io::impl::NPZ::File &file, const std::string &path, + const ViewType data) + : file(file), data(data), path(path), dims([&data]() -> std::vector { + std::vector dims; + for (int i = 0; i < data.rank(); i++) { + dims.push_back(data.extent(i)); + } + return dims; + }()) {} + +template +void specfem::io::impl::NPZ::Dataset::write() { + if (std::is_same_v) { + file.write(data.data(), dims, path); + } else if (std::is_same_v) { + auto host_data = Kokkos::create_mirror_view(data); + Kokkos::deep_copy(host_data, data); + file.write(host_data.data(), dims, path); + return; + } else { + throw std::runtime_error("Unknown memory space"); + } +} + +template +void specfem::io::impl::NPZ::Dataset::read() { + if (std::is_same_v) { + file.read(data.data(), dims, path); + } else if (std::is_same_v) { + auto host_data = Kokkos::create_mirror_view(data); + file.read(host_data.data(), dims, path); + Kokkos::deep_copy(data, host_data); + return; + } else { + throw std::runtime_error("Unknown memory space"); + } +} +#endif diff --git a/include/io/NPZ/impl/file.hpp b/include/io/NPZ/impl/file.hpp new file mode 100644 index 000000000..b04038f7a --- /dev/null +++ b/include/io/NPZ/impl/file.hpp @@ -0,0 +1,223 @@ +#pragma once + +#ifndef NO_NPZ +#include +#endif + +#include "enumerations/interface.hpp" +#include "group.hpp" +#include "io/NPY/impl/npy_header.hpp" +#include +#include +#include + +namespace specfem::io::impl::NPZ { + +// Forward declaration +template class Group; +template class Dataset; + +#ifdef NO_NPZ +template class File { +public: + File(const std::string &name) { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } + File(const char *name) { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } + + template + specfem::io::impl::NPZ::Dataset + createDataset(const std::string &name, const ViewType data) { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } + + specfem::io::impl::NPZ::Group createGroup(const std::string &name) { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } + + template + specfem::io::impl::NPZ::Dataset + openDataset(const std::string &name, const ViewType data) { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } + + specfem::io::impl::NPZ::Group openGroup(const std::string &name) { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } + + void flush() { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } +}; + +#else +using NPYString = specfem::io::impl::NPY::NPYString; + +/** + * @brief Numpy File implementation + * + * + * @tparam OpType Operation type (read/write) + */ +template class File; + +/** + * @brief Template specialization for write operation + * + */ +template <> class File { +public: + using OpType = specfem::io::write; ///< Operation type + + /** + * @name Constructors + * + */ + ///@{ + /** + * @brief Construct a new npz File object with the given name + * + * @param name Name of the file + */ + File(const std::string &name) + : file_path(name + ".npz"), + stream(file_path, std::ios::out | std::ios::binary) {} + + /** + * @brief Construct a new npz File object with the given name + * + * @param name Name of the file + */ + File(const char *name) : File(std::string(name)) {} + ///@} + + /** + * @brief Create a new dataset within the file + * + * @tparam ViewType Kokkos view type of the data + * @param name Name of the dataset + * @param data Data to write + * @return specfem::io::impl::NPZ::Dataset Dataset object + */ + template + specfem::io::impl::NPZ::Dataset + createDataset(const std::string &path, const ViewType data) { + return specfem::io::impl::NPZ::Dataset( + *this, path + ".npy", data); + } + + /** + * @brief Create a new group within the file + * + * @param name Name of the group + * @return specfem::io::impl::NPZ::Group Group object + */ + specfem::io::impl::NPZ::Group createGroup(const std::string &name) { + return specfem::io::impl::NPZ::Group(*this, name); + } + + /** + * @brief Write data to the file at the given path + * + * @tparam value_type Data type + * @param data Pointer to the data buffer + * @param path Path to the dataset within the file + */ + template + void write(const value_type *data, const std::vector &dims, + const std::string &path); + + void flush() { stream.flush(); } + + ~File() { stream.close(); } + +private: + std::string file_path; ///< Path to the file + std::ofstream stream; ///< File stream + + // zip meta data + uint16_t nrecs = 0; + size_t global_header_offset = 0; + NPYString global_header; +}; + +/** + * @brief Template specialization for read operation + * + */ +template <> class File { +public: + using OpType = specfem::io::read; ///< Operation type + + /** + * @name Constructors + * + */ + ///@{ + /** + * @brief Read the npz file with the given name + * + * @param name Name of the file + */ + File(const std::string &name) + : file_path(name + ".npz"), + stream(file_path, std::ios::in | std::ios::binary) { + if (!boost::filesystem::exists(file_path)) { + throw std::runtime_error("ERROR : Folder " + name + " does not exist."); + } + } + + /** + * @brief Read the npz file with the given name + * + * @param name Name of the file + */ + File(const char *name) : File(std::string(name)) {} + ///@} + /** + * @brief Open an existing dataset within the file + * + * @tparam ViewType Kokkos view type of the data + * @param name Name of the dataset + * @param data Data to be read + * @return specfem::io::impl::NPZ::Dataset Dataset object + */ + template + specfem::io::impl::NPZ::Dataset + openDataset(const std::string &path, const ViewType data) { + return specfem::io::impl::NPZ::Dataset( + *this, path + ".npy", data); + } + + /** + * @brief Open an existing group within the file + * + * @param name Name of the group + * @return specfem::io::impl::NPZ::Group Group object + */ + specfem::io::impl::NPZ::Group openGroup(const std::string &name) { + return specfem::io::impl::NPZ::Group(*this, name); + } + + /** + * @brief Read data from the file at the given path + * + * @tparam value_type Data type + * @param data Pointer to the data buffer + * @param path Path to the dataset within the file + */ + template + void read(value_type *data, const std::vector &dims, + const std::string &path); + + ~File() { stream.close(); } + +private: + std::string file_path; ///< Path to the file + std::ifstream stream; ///< File stream +}; + +#endif +} // namespace specfem::io::impl::NPZ diff --git a/include/io/NPZ/impl/file.tpp b/include/io/NPZ/impl/file.tpp new file mode 100644 index 000000000..ffbc3dfba --- /dev/null +++ b/include/io/NPZ/impl/file.tpp @@ -0,0 +1,176 @@ +#pragma once + +#include "file.hpp" + +#ifndef NO_NPZ +template +void specfem::io::impl::NPZ::File::write( + const value_type *data, const std::vector &dims, + const std::string &path) { + if (!stream.is_open()) { + std::ostringstream oss; + oss << "ERROR : File is closed for writing " << path; + throw std::runtime_error(oss.str()); + } + + // Count total elements + size_t nels = 1; + for (int i = 0; i < dims.size(); ++i) { + nels *= dims[i]; + } + + stream.seekp(global_header_offset, std::ios::beg); + + NPYString npy_header = + specfem::io::impl::NPY::create_npy_header(dims); + size_t nbytes = nels * sizeof(value_type) + npy_header.size(); + + // get the CRC of the data to be added + uint32_t crc = crc32(0L, (uint8_t *)&npy_header[0], npy_header.size()); + crc = crc32(crc, (uint8_t *)data, nels * sizeof(value_type)); + + // build the local header + NPYString local_header; + local_header += "PK"; // first part of sig + local_header += (uint16_t)0x0403; // second part of sig + local_header += (uint16_t)20; // min version to extract + local_header += (uint16_t)0; // general purpose bit flag + local_header += (uint16_t)0; // compression method + local_header += (uint16_t)0; // file last mod time + local_header += (uint16_t)0; // file last mod date + local_header += (uint32_t)crc; // crc + local_header += (uint32_t)nbytes; // compressed size + local_header += (uint32_t)nbytes; // uncompressed size + local_header += (uint16_t)path.size(); // path length + local_header += (uint16_t)0; // extra field length + local_header += path; + + // build global header + global_header += "PK"; // first part of sig + global_header += (uint16_t)0x0201; // second part of sig + global_header += (uint16_t)20; // version made by + global_header.insert(global_header.end(), local_header.begin() + 4, + local_header.begin() + 30); + global_header += (uint16_t)0; // file comment length + global_header += (uint16_t)0; // disk number where file starts + global_header += (uint16_t)0; // internal file attributes + global_header += (uint32_t)0; // external file attributes + global_header += + (uint32_t)global_header_offset; // relative offset of local file header, + // since it begins where the global + // header used to begin + global_header += path; + + // update meta data + nrecs += 1; + global_header_offset += nbytes + local_header.size(); + + // build footer + NPYString footer; + footer += "PK"; // first part of sig + footer += (uint16_t)0x0605; // second part of sig + footer += (uint16_t)0; // number of this disk + footer += (uint16_t)0; // disk where footer starts + footer += (uint16_t)nrecs; // number of records on this disk + footer += (uint16_t)nrecs; // total number of records + footer += (uint32_t)global_header.size(); // nbytes of global headers + footer += (uint32_t)global_header_offset; // offset of start of global + // headers, since global header now + // starts after newly written array + footer += (uint16_t)0; // zip file comment length + + // write everything + stream.write(&local_header[0], local_header.size()); + stream.write(&npy_header[0], npy_header.size()); + stream.write(reinterpret_cast(data), sizeof(value_type) * nels); + stream.write(&global_header[0], global_header.size()); + stream.write(&footer[0], footer.size()); +} + +template +void specfem::io::impl::NPZ::File::read( + value_type *data, const std::vector &dims, + const std::string &path) { + if (!stream.is_open()) { + std::ostringstream oss; + oss << "ERROR : File is closed for writing " << path; + throw std::runtime_error(oss.str()); + } + + // Count total elements + int total_elements = 1; + int rank = dims.size(); + for (int i = 0; i < rank; ++i) { + total_elements *= dims[i]; + } + + // whether cursor has reached the bottom of the file + bool reached_bottom = false; + + while (1) { + NPYString local_header(30); + stream.read(&local_header[0], 30); + std::streamsize header_res = stream.gcount(); + if (header_res != 30) + throw std::runtime_error("npz_load: failed fread"); + + // if we've reached the global header, stop reading + if (local_header[2] != 0x03 || local_header[3] != 0x04) { + if (!reached_bottom) { + reached_bottom = true; + stream.seekg(0, std::ios::beg); + continue; + } else { + throw std::runtime_error("npz_load: variable " + path + + " not found in file"); + } + } + + // read in the variable name + uint16_t name_len = *(uint16_t *)&local_header[26]; + std::string vname(name_len, ' '); + // size_t vname_res = fread(&vname[0], sizeof(char), name_len, fp); + stream.read(&vname[0], name_len); + std::streamsize vname_res = stream.gcount(); + if (vname_res != name_len) + throw std::runtime_error("npz_load: failed fread"); + + // read in the extra field + uint16_t extra_field_len = *(uint16_t *)&local_header[28]; + stream.seekg(extra_field_len, std::ios::cur); // skip past the extra field + + uint16_t compr_method = *reinterpret_cast(&local_header[0] + 8); + + if (compr_method != 0) { + throw std::runtime_error( + "npz_load: only uncompressed arrays are supported"); + } + + if (vname == path) { + std::vector shape = + specfem::io::impl::NPY::parse_npy_header(stream); + if (rank != shape.size()) { + std::ostringstream oss; + oss << "ERROR : Rank mismatch between dataset and file"; + throw std::runtime_error(oss.str()); + } + + for (int i = 0; i < rank; ++i) { + if (dims[i] != shape[i]) { + std::ostringstream oss; + oss << "ERROR : Dimension mismatch between dataset and file"; + throw std::runtime_error(oss.str()); + } + } + + stream.read(reinterpret_cast(data), + total_elements * sizeof(value_type)); + break; + } else { + // skip past the data + uint32_t size = *(uint32_t *)&local_header[22]; + stream.seekg(size, std::ios::cur); + } + } +} +#endif diff --git a/include/io/NPZ/impl/group.hpp b/include/io/NPZ/impl/group.hpp new file mode 100644 index 000000000..dfbd0307a --- /dev/null +++ b/include/io/NPZ/impl/group.hpp @@ -0,0 +1,182 @@ +#pragma once + +#include "enumerations/interface.hpp" +#include +#include + +namespace specfem::io::impl::NPZ { + +// Forward declaration +template class Dataset; +template class File; + +#ifdef NO_NPZ +template class Group { +public: + template Group(Args &&...args) { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } + + template + specfem::io::impl::NPZ::Dataset + createDataset(const std::string &name, const ViewType data) { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } + + specfem::io::impl::NPZ::Group createGroup(const std::string &name) { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } + + template + specfem::io::impl::NPZ::Dataset + openDataset(const std::string &name, const ViewType data) { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } + + specfem::io::impl::NPZ::Group openGroup(const std::string &name) { + throw std::runtime_error("SPECFEM++ was not compiled with NPZ support"); + } +}; + +#else + +/** + * @brief Group class for npy IO + * + * @tparam OpType Operation type (read/write) + */ +template class Group; + +/** + * @brief Template specialization for write operation + */ +template <> class Group { +public: + using OpType = specfem::io::write; ///< Operation type + + /** + * @name Constructors + * + */ + ///@{ + /** + * @brief Construct a new npy Group object with the given name + * + * @param file File object + * @param name Name of the folder + */ + Group(File &file, const std::string &name) + : file(file), group_name(name) {} + + /** + * @brief Construct a new npy Group object with the given name + * + * @param file File object + * @param parent_group_name Path to the parent directory + * @param name Name of the folder + */ + Group(File &file, const std::string parent_group_name, + const std::string &name) + : file(file), group_name(parent_group_name + "/" + name) {} + ///@} + + /** + * @brief Create a new dataset within the group + * + * @tparam ViewType Kokkos view type of the data + * @param name Name of the dataset + * @param data Data to write + * @return specfem::io::impl::NPZ::Dataset Dataset object + */ + template + specfem::io::impl::NPZ::Dataset + createDataset(const std::string &name, const ViewType data) { + return specfem::io::impl::NPZ::Dataset( + file, group_name + "/" + name + ".npy", data); + } + + /** + * @brief Create a new group within the group + * + * @param name Name of the group + * @return specfem::io::impl::NPZ::Group Group object + */ + specfem::io::impl::NPZ::Group createGroup(const std::string &name) { + return specfem::io::impl::NPZ::Group(file, group_name, name); + } + + ~Group() {} + +private: + File &file; + std::string group_name; ///< Path to the folder +}; + +/** + * @brief Template specialization for read operation + */ +template <> class Group { +public: + using OpType = specfem::io::read; ///< Operation type + + /** + * @name Constructors + * + */ + ///@{ + /** + * @brief Construct a new npy Group object with the given name + * + * @param file File object + * @param name Name of the folder + */ + Group(File &file, const std::string &name) + : file(file), group_name(name) {} + + /** + * @brief Construct a new npy Group object with the given name + * + * @param file File object + * @param parent_group_name Path to the parent directory + * @param name Name of the folder + */ + Group(File &file, const std::string parent_group_name, + const std::string &name) + : file(file), group_name(parent_group_name + "/" + name) {} + ///@} + + /** + * @brief Open an existing dataset within the group + * + * @tparam ViewType Kokkos view type of the data + * @param name Name of the dataset + * @param data Data to be read + * @return specfem::io::impl::NPZ::Dataset Dataset object + */ + template + specfem::io::impl::NPZ::Dataset + openDataset(const std::string &name, const ViewType data) { + return specfem::io::impl::NPZ::Dataset( + file, group_name + "/" + name + ".npy", data); + } + + /** + * @brief Open an existing group within the group + * + * @param name Name of the group + * @return specfem::io::impl::NPZ::Group Group object + */ + specfem::io::impl::NPZ::Group openGroup(const std::string &name) { + return specfem::io::impl::NPZ::Group(file, group_name, name); + } + + ~Group() {} + +private: + File &file; + std::string group_name; ///< Path to the folder +}; + +#endif + +} // namespace specfem::io::impl::NPZ diff --git a/include/io/interface.hpp b/include/io/interface.hpp index ccd4a3ab3..92107f779 100644 --- a/include/io/interface.hpp +++ b/include/io/interface.hpp @@ -53,7 +53,7 @@ read_3d_mesh(const std::string &mesh_parameters_file, */ std::vector > > -read_receivers(const std::string &stations_file, const type_real angle); +read_2d_receivers(const std::string &stations_file, const type_real angle); /** * @overload @@ -80,7 +80,47 @@ read_receivers(const std::string &stations_file, const type_real angle); */ std::vector > > -read_receivers(const YAML::Node &stations, const type_real angle); +read_2d_receivers(const YAML::Node &stations, const type_real angle); + +/** + * @brief Read receivers file for 3D simulations + * + * Parse receiver stations file and create a vector of + * specfem::receiver::receiver * object + * + * @param stations_file Stations file describing receiver locations + * @return vector of instantiated receiver objects + */ +std::vector > > +read_3d_receivers(const std::string &stations_file); + +/** + * @overload + * @brief Read 3D receivers from YAML Node + * + * Parse receiver stations file and create a vector of + * specfem::receiver::receiver * object + * + * The receivers are defined in the YAML file as + * + * @code + * receivers: + * stations-dict: + * - network: "network_name" + * station: "station_name" + * x: x_coordinate + * y: y_coordinate + * z: z_coordinate + * - + * @endcode + * + * @param stations YAML node containing receiver locations + * @return vector of instantiated receiver objects + */ +std::vector > > +read_3d_receivers(const YAML::Node &stations); /** * @brief Read sources file written in .yml format diff --git a/include/io/mesh/impl/fortran/dim2/read_interfaces.hpp b/include/io/mesh/impl/fortran/dim2/read_interfaces.hpp index b773b8155..73c935451 100644 --- a/include/io/mesh/impl/fortran/dim2/read_interfaces.hpp +++ b/include/io/mesh/impl/fortran/dim2/read_interfaces.hpp @@ -14,8 +14,10 @@ template specfem::mesh::interface_container -read_interfaces(const int num_interfaces, std::ifstream &stream, - const specfem::MPI::MPI *mpi); +read_interfaces( + const int num_interfaces, + Kokkos::View knods, + std::ifstream &stream, const specfem::MPI::MPI *mpi); /* @brief Read the coupled interfaces from the database file * @@ -27,11 +29,12 @@ read_interfaces(const int num_interfaces, std::ifstream &stream, * @return specfem::mesh::coupled_interfaces */ specfem::mesh::coupled_interfaces -read_coupled_interfaces(std::ifstream &stream, - const int num_interfaces_elastic_acoustic, - const int num_interfaces_acoustic_poroelastic, - const int num_interfaces_elastic_poroelastic, - const specfem::MPI::MPI *mpi); +read_coupled_interfaces( + std::ifstream &stream, const int num_interfaces_elastic_acoustic, + const int num_interfaces_acoustic_poroelastic, + const int num_interfaces_elastic_poroelastic, + Kokkos::View knods, + const specfem::MPI::MPI *mpi); } // namespace dim2 } // namespace fortran diff --git a/include/io/wavefield/reader.tpp b/include/io/wavefield/reader.tpp index bcb569414..df74b482b 100644 --- a/include/io/wavefield/reader.tpp +++ b/include/io/wavefield/reader.tpp @@ -1,7 +1,5 @@ #pragma once -#include "io/ASCII/ASCII.hpp" -#include "io/HDF5/HDF5.hpp" #include "io/wavefield/reader.hpp" #include "utilities/strings.hpp" @@ -15,6 +13,40 @@ template void specfem::io::wavefield_reader::initialize( specfem::assembly::assembly &assembly) { + auto &buffer = assembly.fields.buffer; + int ngroups = 0; + + FOR_EACH_IN_PRODUCT( + (DIMENSION_TAG(DIM2), MEDIUM_TAG(ELASTIC_PSV, ELASTIC_PSV_T, ELASTIC_SH, + ACOUSTIC, POROELASTIC)), + { + if (buffer.get_nglob<_medium_tag_>() > 0) { + ngroups++; + } + }); + + Kokkos::View medium_tags("medium_tags", ngroups); + file.openDataset("medium_tags", medium_tags).read(); + + FOR_EACH_IN_PRODUCT( + (DIMENSION_TAG(DIM2), MEDIUM_TAG(ELASTIC_PSV, ELASTIC_PSV_T, ELASTIC_SH, + ACOUSTIC, POROELASTIC)), + { + if (buffer.get_nglob<_medium_tag_>() > 0) { + const std::string current_tag = specfem::element::to_string(_medium_tag_); + bool found = false; + for (int i = 0; i < medium_tags.extent(0); ++i) { + if (current_tag == medium_tags(i)) { + found = true; + break; + } + } + if (!found) { + throw std::runtime_error("Medium tag " + specfem::element::to_string(_medium_tag_) + " not found in wavefield file"); + } + } + }); + auto &boundary_values = assembly.boundary_values; typename IOLibrary::Group boundary_group = file.openGroup("/BoundaryValues"); @@ -42,9 +74,11 @@ void specfem::io::wavefield_reader::initialize( (DIMENSION_TAG(DIM2), MEDIUM_TAG(ELASTIC_PSV, ELASTIC_SH, ACOUSTIC, POROELASTIC, ELASTIC_PSV_T)), CAPTURE((container, boundary_values.stacey.container)) { - const std::string dataset_name = - specfem::element::to_string(_medium_tag_) + "Acceleration"; - stacey.openDataset(dataset_name, _container_.h_values).read(); + if (_container_.h_values.size() > 0) { + const std::string dataset_name = + specfem::element::to_string(_medium_tag_) + "Acceleration"; + stacey.openDataset(dataset_name, _container_.h_values).read(); + } }); boundary_values.copy_to_device(); @@ -66,18 +100,25 @@ void specfem::io::wavefield_reader::run( (DIMENSION_TAG(DIM2), MEDIUM_TAG(ELASTIC_PSV, ELASTIC_SH, ACOUSTIC, POROELASTIC, ELASTIC_PSV_T)), { - typename IOLibrary::Group group = - base_group.openGroup(specfem::element::to_string(_medium_tag_)); - const auto &field = buffer.get_field<_medium_tag_>(); - - if (_medium_tag_ == specfem::element::medium_tag::acoustic) { - group.openDataset("Potential", field.get_host_field()).read(); - group.openDataset("PotentialDot", field.get_host_field_dot()).read(); - group.openDataset("PotentialDotDot", field.get_host_field_dot_dot()).read(); - } else { - group.openDataset("Displacement", field.get_host_field()).read(); - group.openDataset("Velocity", field.get_host_field_dot()).read(); - group.openDataset("Acceleration", field.get_host_field_dot_dot()).read(); + int nglob_medium = buffer.get_nglob<_medium_tag_>(); + + if (nglob_medium > 0) { + typename IOLibrary::Group group = + base_group.openGroup(specfem::element::to_string(_medium_tag_)); + const auto &field = buffer.get_field<_medium_tag_>(); + + if (_medium_tag_ == specfem::element::medium_tag::acoustic) { + group.openDataset("Potential", field.get_host_field()).read(); + group.openDataset("PotentialDot", field.get_host_field_dot()) + .read(); + group.openDataset("PotentialDotDot", field.get_host_field_dot_dot()) + .read(); + } else { + group.openDataset("Displacement", field.get_host_field()).read(); + group.openDataset("Velocity", field.get_host_field_dot()).read(); + group.openDataset("Acceleration", field.get_host_field_dot_dot()) + .read(); + } } }); diff --git a/include/io/wavefield/writer.tpp b/include/io/wavefield/writer.tpp index 0bccc067d..44b7325cb 100644 --- a/include/io/wavefield/writer.tpp +++ b/include/io/wavefield/writer.tpp @@ -28,63 +28,83 @@ void specfem::io::wavefield_writer::initialize( const int ngllx = mesh.element_grid.ngllx; // const int nspec = mesh.points.nspec; + int ngroups = 0; + FOR_EACH_IN_PRODUCT( + (DIMENSION_TAG(DIM2), MEDIUM_TAG(ELASTIC_PSV, ELASTIC_PSV_T, ELASTIC_SH, + ACOUSTIC, POROELASTIC)), + { + if (forward.get_nglob<_medium_tag_>() > 0) { + ngroups++; + } + }); + + Kokkos::View medium_tags("medium_tags", ngroups); + typename OutputLibrary::Group base_group = file.createGroup(std::string("/Coordinates")); + int igroup = 0; + FOR_EACH_IN_PRODUCT( (DIMENSION_TAG(DIM2), MEDIUM_TAG(ELASTIC_PSV, ELASTIC_PSV_T, ELASTIC_SH, ACOUSTIC, POROELASTIC)), { - const auto &field = forward.get_field<_medium_tag_>(); + // Get the number of GLL points in the medium + int nglob_medium = forward.get_nglob<_medium_tag_>(); - typename OutputLibrary::Group group = - base_group.createGroup(specfem::element::to_string(_medium_tag_)); + if (nglob_medium > 0) { + medium_tags(igroup) = specfem::element::to_string(_medium_tag_); + igroup++; - // Get the elements of the medium and their total - const auto element_indices = - element_types.get_elements_on_host(_medium_tag_); - const int n_elements = element_indices.size(); + const auto &field = forward.get_field<_medium_tag_>(); - // Get the number of GLL points in the medium - int nglob_medium = forward.get_nglob<_medium_tag_>(); + typename OutputLibrary::Group group = + base_group.createGroup(specfem::element::to_string(_medium_tag_)); + + // Get the elements of the medium and their total + const auto element_indices = + element_types.get_elements_on_host(_medium_tag_); + const int n_elements = element_indices.size(); - // Initialize the views - DomainView x("xcoordinates", nglob_medium); - DomainView z("zcoordinates", nglob_medium); - MappingView mapping("mapping", n_elements, ngllz, ngllx); + // Initialize the views + DomainView x("xcoordinates", nglob_medium); + DomainView z("zcoordinates", nglob_medium); + MappingView mapping("mapping", n_elements, ngllz, ngllx); - int ispec = 0; + int ispec = 0; - // Loop over the elements of the medium - for (int iel = 0; iel < n_elements; iel++) { + // Loop over the elements of the medium + for (int iel = 0; iel < n_elements; iel++) { - // Get the global element index - ispec = element_indices(iel); + // Get the global element index + ispec = element_indices(iel); - for (int iz = 0; iz < ngllz; iz++) { - for (int ix = 0; ix < ngllx; ix++) { + for (int iz = 0; iz < ngllz; iz++) { + for (int ix = 0; ix < ngllx; ix++) { - // This is the local medium iglob - // see: ``count`` in specfem::assembly::simulation_field - const int iglob = forward.template get_iglob(ispec, iz, ix, - _medium_tag_); + // This is the local medium iglob + // see: ``count`` in specfem::assembly::simulation_field + const int iglob = forward.template get_iglob( + ispec, iz, ix, _medium_tag_); - // Set the mapping for the medium element - mapping(iel, iz, ix) = iglob; + // Set the mapping for the medium element + mapping(iel, iz, ix) = iglob; - // Assign the coordinates to the local iglob - x(iglob) = mesh.h_coord(0, ispec, iz, ix); - z(iglob) = mesh.h_coord(1, ispec, iz, ix); + // Assign the coordinates to the local iglob + x(iglob) = mesh.h_coord(0, ispec, iz, ix); + z(iglob) = mesh.h_coord(1, ispec, iz, ix); + } } } - } - group.createDataset("X", x).write(); - group.createDataset("Z", z).write(); - group.createDataset("mapping", mapping).write(); + group.createDataset("X", x).write(); + group.createDataset("Z", z).write(); + group.createDataset("mapping", mapping).write(); + } }); + file.createDataset("medium_tags", medium_tags).write(); file.flush(); std::cout << "Coordinates written to " << output_folder + "/ForwardWavefield" @@ -106,19 +126,29 @@ void specfem::io::wavefield_writer::run( (DIMENSION_TAG(DIM2), MEDIUM_TAG(ELASTIC_PSV, ELASTIC_SH, ACOUSTIC, POROELASTIC, ELASTIC_PSV_T)), { - const auto &field = forward.get_field<_medium_tag_>(); - - typename OutputLibrary::Group group = - base_group.createGroup(specfem::element::to_string(_medium_tag_)); - - if (_medium_tag_ == specfem::element::medium_tag::acoustic) { - group.createDataset("Potential", field.get_host_field()).write(); - group.createDataset("PotentialDot", field.get_host_field_dot()).write(); - group.createDataset("PotentialDotDot", field.get_host_field_dot_dot()).write(); - } else { - group.createDataset("Displacement", field.get_host_field()).write(); - group.createDataset("Velocity", field.get_host_field_dot()).write(); - group.createDataset("Acceleration", field.get_host_field_dot_dot()).write(); + // Get the number of GLL points in the medium + int nglob_medium = forward.get_nglob<_medium_tag_>(); + + if (nglob_medium > 0) { + const auto &field = forward.get_field<_medium_tag_>(); + + typename OutputLibrary::Group group = + base_group.createGroup(specfem::element::to_string(_medium_tag_)); + + if (_medium_tag_ == specfem::element::medium_tag::acoustic) { + group.createDataset("Potential", field.get_host_field()).write(); + group.createDataset("PotentialDot", field.get_host_field_dot()) + .write(); + group + .createDataset("PotentialDotDot", + field.get_host_field_dot_dot()) + .write(); + } else { + group.createDataset("Displacement", field.get_host_field()).write(); + group.createDataset("Velocity", field.get_host_field_dot()).write(); + group.createDataset("Acceleration", field.get_host_field_dot_dot()) + .write(); + } } }); @@ -132,7 +162,7 @@ void specfem::io::wavefield_writer::finalize( typename OutputLibrary::Group boundary_group = file.createGroup(std::string("/BoundaryValues")); - Kokkos::View boundary_values_view( + Kokkos::View boundary_values_view( "save_boundary_values", 1); boundary_values_view(0) = this->save_boundary_values; @@ -155,10 +185,14 @@ void specfem::io::wavefield_writer::finalize( (DIMENSION_TAG(DIM2), MEDIUM_TAG(ELASTIC_PSV, ELASTIC_SH, ACOUSTIC, POROELASTIC, ELASTIC_PSV_T)), CAPTURE((container, boundary_values.stacey.container)) { + + // Get the number of GLL points in the medium + if (_container_.h_values.size() > 0) { const std::string dataset_name = specfem::element::to_string(_medium_tag_) + "Acceleration"; stacey.createDataset(dataset_name, _container_.h_values).write(); - }); + } + }); file.flush(); } diff --git a/include/kokkos_kernels/domain_kernels.hpp b/include/kokkos_kernels/domain_kernels.hpp index 49fb3de77..71e892dd7 100644 --- a/include/kokkos_kernels/domain_kernels.hpp +++ b/include/kokkos_kernels/domain_kernels.hpp @@ -6,12 +6,12 @@ #include "enumerations/medium.hpp" #include "enumerations/simulation.hpp" #include "enumerations/specfem_enums.hpp" +#include "impl/compute_coupling.hpp" #include "impl/compute_mass_matrix.hpp" #include "impl/compute_seismogram.hpp" #include "impl/compute_source_interaction.hpp" #include "impl/compute_stiffness_interaction.hpp" #include "impl/divide_mass_matrix.hpp" -#include "impl/interface_kernels.hpp" #include "impl/invert_mass_matrix.hpp" namespace specfem { @@ -51,8 +51,7 @@ class domain_kernels { * */ domain_kernels(const specfem::assembly::assembly &assembly) - : assembly(assembly), coupling_interfaces_dim2_elastic_psv(assembly), - coupling_interfaces_dim2_acoustic(assembly) {} + : assembly(assembly) {} /** * @brief Updates the wavefield for a given medium @@ -71,11 +70,18 @@ class domain_kernels { int elements_updated = 0; FOR_EACH_IN_PRODUCT( - (DIMENSION_TAG(DIM2), MEDIUM_TAG(ELASTIC_PSV, ACOUSTIC)), - CAPTURE(coupling_interfaces) { + (DIMENSION_TAG(DIM2), CONNECTION_TAG(WEAKLY_CONFORMING), + INTERFACE_TAG(ELASTIC_ACOUSTIC, ACOUSTIC_ELASTIC), + BOUNDARY_TAG(NONE, ACOUSTIC_FREE_SURFACE, STACEY, + COMPOSITE_STACEY_DIRICHLET)), + { + constexpr auto self_medium = + specfem::interface::attributes<_dimension_tag_, + _interface_tag_>::self_medium(); if constexpr (dimension_tag == _dimension_tag_ && - medium == _medium_tag_) { - _coupling_interfaces_.compute_coupling(); + self_medium == medium) { + impl::compute_coupling<_dimension_tag_, _connection_tag_, wavefield, + _interface_tag_, _boundary_tag_>(assembly); } }) @@ -188,11 +194,6 @@ class domain_kernels { private: specfem::assembly::assembly assembly; - - FOR_EACH_IN_PRODUCT((DIMENSION_TAG(DIM2), MEDIUM_TAG(ELASTIC_PSV, ACOUSTIC)), - DECLARE(((impl::interface_kernels, - (WavefieldType, _DIMENSION_TAG_, _MEDIUM_TAG_)), - coupling_interfaces))) }; } // namespace kokkos_kernels diff --git a/include/kokkos_kernels/impl/compute_coupling.hpp b/include/kokkos_kernels/impl/compute_coupling.hpp new file mode 100644 index 000000000..7f13f535e --- /dev/null +++ b/include/kokkos_kernels/impl/compute_coupling.hpp @@ -0,0 +1,51 @@ +#pragma once + +#include "enumerations/interface.hpp" +#include "specfem/assembly.hpp" +#include + +namespace specfem::kokkos_kernels::impl { + +template +void compute_coupling( + std::integral_constant< + specfem::connections::type, + specfem::connections::type::weakly_conforming> /*unused*/, + const specfem::assembly::assembly &assembly); + +/** + * @brief Compute coupling between different media. + * + * This function computes the coupling between different media specified by the + * template parameters. + * + * @tparam DimensionTag Spatial dimension (2D/3D) + * @tparam ConnectionTag Interface connection type to consider + * (weakly_conforming/nonconforming) + * @tparam WavefieldType Simulation wavefield type (e.g., forward, adjoint, + * backward) + * @tparam InterfaceTag Interface coupling type + * (elastic_acoustic/acoustic_elastic) + * @tparam BoundaryTag Boundary condition type (e.g., free_surface, absorbing) + * + * @param assembly SPECFEM++ assembly object. + */ +template +void compute_coupling( + const specfem::assembly::assembly &assembly) { + // Create dispatch tag for connection type + using connection_dispatch = + std::integral_constant; + + // Forward to implementation with dispatch tag + compute_coupling( + connection_dispatch(), assembly); +} +} // namespace specfem::kokkos_kernels::impl diff --git a/include/kokkos_kernels/impl/compute_coupling.tpp b/include/kokkos_kernels/impl/compute_coupling.tpp new file mode 100644 index 000000000..3419e4f1e --- /dev/null +++ b/include/kokkos_kernels/impl/compute_coupling.tpp @@ -0,0 +1,97 @@ +#pragma once + +#include "boundary_conditions/boundary_conditions.hpp" +#include "compute_coupling.hpp" +#include "enumerations/interface.hpp" +#include "execution/chunked_intersection_iterator.hpp" +#include "execution/for_all.hpp" +#include "medium/compute_coupling.hpp" +#include "parallel_configuration/chunk_edge_config.hpp" +#include "specfem/assembly.hpp" +#include "specfem/point.hpp" +#include +#include + +template +void specfem::kokkos_kernels::impl::compute_coupling( + std::integral_constant< + specfem::connections::type, + specfem::connections::type::weakly_conforming> /*unused*/, + const specfem::assembly::assembly &assembly) { + + constexpr static auto dimension_tag = DimensionTag; + constexpr static auto connection_tag = + specfem::connections::type::weakly_conforming; + constexpr static auto interface_tag = InterfaceTag; + constexpr static auto boundary_tag = BoundaryTag; + constexpr static auto wavefield = WavefieldType; + + constexpr static auto self_medium = + specfem::interface::attributes::self_medium(); + + const auto &coupled_interfaces = assembly.coupled_interfaces; + const auto [self_edges, coupled_edges] = + assembly.edge_types.get_edges_on_device(connection_tag, interface_tag, + boundary_tag); + + if (self_edges.extent(0) == 0 && coupled_edges.extent(0) == 0) + return; + + const auto &field = + assembly.fields.template get_simulation_field(); + const auto &boundaries = assembly.boundaries; + + const auto num_points = assembly.mesh.element_grid.ngllx; + + using parallel_config = specfem::parallel_config::default_chunk_edge_config< + DimensionTag, Kokkos::DefaultExecutionSpace>; + + using CoupledFieldType = typename specfem::interface::attributes< + dimension_tag, interface_tag>::template coupled_field_t; + using SelfFieldType = typename specfem::interface::attributes< + dimension_tag, interface_tag>::template self_field_t; + + using PointBoundaryType = + specfem::point::boundary; + + specfem::execution::ChunkedIntersectionIterator chunk( + parallel_config(), self_edges, coupled_edges, num_points); + + specfem::execution::for_all( + "specfem::kokkos_kernels::impl::compute_coupling", chunk, + KOKKOS_LAMBDA(const typename decltype(chunk)::base_index_type &index) { + const auto self_index = index.self_index; + const auto coupled_index = index.coupled_index; + + specfem::point::coupled_interface + point_interface_data; + specfem::assembly::load_on_device(self_index, coupled_interfaces, + point_interface_data); + + CoupledFieldType coupled_field; + specfem::assembly::load_on_device(coupled_index, field, coupled_field); + + SelfFieldType self_field; + + specfem::medium::compute_coupling(point_interface_data, coupled_field, + self_field); + + PointBoundaryType point_boundary; + specfem::assembly::load_on_device(self_index, boundaries, + point_boundary); + if constexpr (BoundaryTag == + specfem::element::boundary_tag::acoustic_free_surface) { + specfem::boundary_conditions::apply_boundary_conditions( + point_boundary, self_field); + } + + specfem::assembly::atomic_add_on_device(self_index, field, self_field); + }); + + return; +} diff --git a/include/kokkos_kernels/impl/compute_seismogram.tpp b/include/kokkos_kernels/impl/compute_seismogram.tpp index 639678994..b14d9d1d3 100644 --- a/include/kokkos_kernels/impl/compute_seismogram.tpp +++ b/include/kokkos_kernels/impl/compute_seismogram.tpp @@ -108,6 +108,8 @@ void specfem::kokkos_kernels::impl::compute_seismograms( specfem::execution::MappedChunkedDomainIterator chunk( ParallelConfig(), elements, receiver_indices, element_grid); + Kokkos::Profiling::pushRegion("Compute Seismograms"); + for (int iseis = 0; iseis < nseismograms; ++iseis) { receivers.set_seismogram_type(iseis); @@ -151,5 +153,7 @@ void specfem::kokkos_kernels::impl::compute_seismograms( }); } + Kokkos::Profiling::popRegion(); + return; } diff --git a/include/kokkos_kernels/impl/compute_source_interaction.tpp b/include/kokkos_kernels/impl/compute_source_interaction.tpp index 212060982..db492777d 100644 --- a/include/kokkos_kernels/impl/compute_source_interaction.tpp +++ b/include/kokkos_kernels/impl/compute_source_interaction.tpp @@ -81,6 +81,8 @@ void specfem::kokkos_kernels::impl::compute_source_interaction( specfem::execution::MappedChunkedDomainIterator mapped_policy( ParallelConfig(), element_indices, source_indices, element_grid); + Kokkos::Profiling::pushRegion("Compute Source Interaction"); + specfem::execution::for_all( "specfem::kokkos_kernels::compute_source_interaction", mapped_policy, KOKKOS_LAMBDA(const PointIndexType &mapped_index) { @@ -96,4 +98,6 @@ void specfem::kokkos_kernels::impl::compute_source_interaction( specfem::assembly::atomic_add_on_device(mapped_index, field, acceleration); }); + + Kokkos::Profiling::popRegion(); } diff --git a/include/kokkos_kernels/impl/compute_stiffness_interaction.tpp b/include/kokkos_kernels/impl/compute_stiffness_interaction.tpp index 9a8cbe79e..87c01e673 100644 --- a/include/kokkos_kernels/impl/compute_stiffness_interaction.tpp +++ b/include/kokkos_kernels/impl/compute_stiffness_interaction.tpp @@ -116,6 +116,8 @@ int specfem::kokkos_kernels::impl::compute_stiffness_interaction( specfem::execution::ChunkedDomainIterator chunk(parallel_config(), elements, element_grid); + Kokkos::Profiling::pushRegion("Compute Stiffness Interaction"); + if constexpr (BoundaryTag == specfem::element::boundary_tag::stacey && WavefieldType == specfem::wavefield::simulation_field::backward) { @@ -251,5 +253,7 @@ int specfem::kokkos_kernels::impl::compute_stiffness_interaction( }); } + Kokkos::Profiling::popRegion(); + return nelements; } diff --git a/include/kokkos_kernels/impl/divide_mass_matrix.tpp b/include/kokkos_kernels/impl/divide_mass_matrix.tpp index ea484bb57..539d5b33b 100644 --- a/include/kokkos_kernels/impl/divide_mass_matrix.tpp +++ b/include/kokkos_kernels/impl/divide_mass_matrix.tpp @@ -39,6 +39,8 @@ void specfem::kokkos_kernels::impl::divide_mass_matrix( specfem::execution::RangeIterator range(parallel_config(), nglob); + Kokkos::Profiling::pushRegion("Divide Mass Matrix"); + specfem::execution::for_all( "specfem::kokkos_kernels::divide_mass_matrix", range, KOKKOS_LAMBDA(const IndexType &index) { @@ -53,6 +55,8 @@ void specfem::kokkos_kernels::impl::divide_mass_matrix( specfem::assembly::store_on_device(index, field, acceleration); }); + Kokkos::Profiling::popRegion(); + // Kokkos::fence(); return; diff --git a/include/kokkos_kernels/impl/interface_kernels.hpp b/include/kokkos_kernels/impl/interface_kernels.hpp deleted file mode 100644 index 02b45d252..000000000 --- a/include/kokkos_kernels/impl/interface_kernels.hpp +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef _SPECFEM_KERNELS_IMPL_INTERFACE_KERNELS_HPP -#define _SPECFEM_KERNELS_IMPL_INTERFACE_KERNELS_HPP - -#include "coupled_interface/coupled_interface.hpp" -#include "enumerations/dimension.hpp" -#include "enumerations/medium.hpp" -#include "enumerations/simulation.hpp" -#include "specfem/assembly.hpp" - -namespace specfem { -namespace kokkos_kernels { -namespace impl { -template -class interface_kernels; - -template -class interface_kernels { -public: - interface_kernels(const specfem::assembly::assembly &assembly) - : elastic_acoustic_interface(assembly) {} - - inline void compute_coupling() { - elastic_acoustic_interface.compute_coupling(); - } - -private: - specfem::coupled_interface::coupled_interface< - WavefieldType, DimensionTag, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::acoustic> - elastic_acoustic_interface; -}; - -template -class interface_kernels { -public: - interface_kernels(const specfem::assembly::assembly &assembly) - : acoustic_elastic_interface(assembly) {} - - inline void compute_coupling() { - acoustic_elastic_interface.compute_coupling(); - } - -private: - specfem::coupled_interface::coupled_interface< - WavefieldType, DimensionTag, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::elastic_psv> - acoustic_elastic_interface; -}; - -} // namespace impl -} // namespace kokkos_kernels -} // namespace specfem - -#endif /* _SPECFEM_KERNELS_IMPL_INTERFACE_KERNELS_HPP */ diff --git a/include/macros.hpp b/include/macros.hpp index dca71a917..c126cc2a1 100644 --- a/include/macros.hpp +++ b/include/macros.hpp @@ -57,3 +57,5 @@ #else #define NOINLINE #endif + +#define DEPRECATE(msg) [[deprecated(msg)]] diff --git a/include/medium/compute_cosserat_couple_stress.hpp b/include/medium/compute_cosserat_couple_stress.hpp index a5af73881..bdb60fcee 100644 --- a/include/medium/compute_cosserat_couple_stress.hpp +++ b/include/medium/compute_cosserat_couple_stress.hpp @@ -138,9 +138,10 @@ KOKKOS_INLINE_FUNCTION void impl_compute_cosserat_couple_stress( * specfem::point::field * @tparam PointAccelerationType Acceleration at the quadrature point * specfem::point::field - * @param factor Prefactor for the damping term ($wx * wz * jacobian) + * @param PointJacobianMatrixType Jacobian matrix at the quadrature point * @param point_properties Material properties at the quadrature point - * @param velocity Velocity at the quadrature point + * @param factor Prefactor for the damping term ($wx * wz * jacobian) + * @param F Stress integrand at the quadrature point * @param acceleration Acceleration at the quadrature point */ template +#include + +namespace specfem::medium { + +/** + * @brief Computes coupling terms between different physical media + * + * Handles coupling interactions at interfaces between acoustic and elastic + * media in spectral element simulations. Uses compile-time dispatch and + * type validation to ensure consistent medium types. + * + * @tparam CoupledInterfaceType Interface data type (coupled interface) + * @tparam CoupledFieldType Field type from coupled medium + * @tparam SelfFieldType Field type from self medium (modified) + * + * @param interface_data Interface geometric data (factor, normal) + * @param coupled_field Field data from coupled medium + * @param self_field Field data from self medium (output) + * + * @code{.cpp} + * specfem::medium::compute_coupling(interface, coupled_field, self_field); + * @endcode + */ +template +KOKKOS_INLINE_FUNCTION void +compute_coupling(const CoupledInterfaceType &interface_data, + const CoupledFieldType &coupled_field, + SelfFieldType &self_field) { + + static_assert( + specfem::data_access::is_coupled_interface::value, + "interface_data is not a coupled interface type"); + static_assert(specfem::data_access::is_point::value && + specfem::data_access::is_field::value, + "coupled_field is not a point field type"); + static_assert(specfem::data_access::is_field::value, + "self_field is not a field type"); + + constexpr auto dimension_tag = CoupledInterfaceType::dimension_tag; + constexpr auto interface_tag = CoupledInterfaceType::interface_tag; + constexpr auto connection_tag = CoupledInterfaceType::connection_tag; + constexpr auto self_medium_tag = SelfFieldType::medium_tag; + constexpr auto coupled_medium_tag = CoupledFieldType::medium_tag; + + static_assert( + specfem::interface::attributes::self_medium() == + self_medium_tag, + "Inconsistent self medium tag between interface and self field"); + static_assert( + specfem::interface::attributes::coupled_medium() == + coupled_medium_tag, + "Inconsistent coupled medium tag between interface and coupled field"); + + using dimension_dispatch = + std::integral_constant; + using connection_dispatch = + std::integral_constant; + using interface_dispatch = + std::integral_constant; + + impl::compute_coupling(dimension_dispatch(), connection_dispatch(), + interface_dispatch(), interface_data, coupled_field, + self_field); +} + +} // namespace specfem::medium diff --git a/include/medium/compute_source.hpp b/include/medium/compute_source.hpp index 9d8d96e75..d53e2e533 100644 --- a/include/medium/compute_source.hpp +++ b/include/medium/compute_source.hpp @@ -5,6 +5,7 @@ #include "dim2/elastic/isotropic/source.hpp" #include "dim2/elastic/isotropic_cosserat/source.hpp" #include "dim2/poroelastic/isotropic/source.hpp" +#include "dim3/elastic/isotropic/source.hpp" #include "specfem/data_access.hpp" #include diff --git a/include/medium/dim2/acoustic/isotropic/source.hpp b/include/medium/dim2/acoustic/isotropic/source.hpp index 19f1ce4f1..c565e5fc6 100644 --- a/include/medium/dim2/acoustic/isotropic/source.hpp +++ b/include/medium/dim2/acoustic/isotropic/source.hpp @@ -27,7 +27,12 @@ KOKKOS_INLINE_FUNCTION auto impl_compute_source_contribution( PointAccelerationType result; - result(0) = point_source.stf(0) * point_source.lagrange_interpolant(0) / + /* note: for acoustic medium, the source is a pressure source and gets divided + * by Kappa of the fluid. The sign is negative because pressure p = - + * Chi_dot_dot therefore we need to add minus the source to Chi_dot_dot + * to get plus the source in pressure + */ + result(0) = -point_source.stf(0) * point_source.lagrange_interpolant(0) / point_properties.kappa(); return result; diff --git a/include/medium/dim2/coupling_terms/acoustic_elastic.hpp b/include/medium/dim2/coupling_terms/acoustic_elastic.hpp new file mode 100644 index 000000000..d3ce37048 --- /dev/null +++ b/include/medium/dim2/coupling_terms/acoustic_elastic.hpp @@ -0,0 +1,34 @@ +#pragma once + +#include "enumerations/interface.hpp" +#include "specfem/data_access.hpp" +#include +#include +namespace specfem::medium::impl { + +template +KOKKOS_INLINE_FUNCTION void compute_coupling( + const std::integral_constant< + specfem::dimension::type, + specfem::dimension::type::dim2> /*dimension_dispatch*/, + const std::integral_constant< + specfem::connections::type, + specfem::connections::type::weakly_conforming> /*connection_dispatch*/, + const std::integral_constant /*interface_dispatch*/, + const CoupledInterfaceType &interface_data, + const CoupledFieldType &coupled_field, SelfFieldType &self_field) { + + static_assert(specfem::data_access::is_acceleration::value, + "SelfFieldType must be an acceleration type"); + static_assert(specfem::data_access::is_displacement::value, + "CoupledFieldType must be a displacement type"); + + self_field(0) = interface_data.edge_factor * + (interface_data.edge_normal(0) * coupled_field(0) + + interface_data.edge_normal(1) * coupled_field(1)); +} + +} // namespace specfem::medium::impl diff --git a/include/medium/dim2/coupling_terms/elastic_acoustic.hpp b/include/medium/dim2/coupling_terms/elastic_acoustic.hpp new file mode 100644 index 000000000..2cb282a11 --- /dev/null +++ b/include/medium/dim2/coupling_terms/elastic_acoustic.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include "enumerations/interface.hpp" +#include "specfem/data_access.hpp" +#include +#include + +namespace specfem::medium::impl { + +template +KOKKOS_INLINE_FUNCTION void compute_coupling( + const std::integral_constant< + specfem::dimension::type, + specfem::dimension::type::dim2> /*dimension_dispatch*/, + const std::integral_constant< + specfem::connections::type, + specfem::connections::type::weakly_conforming> /*connection_dispatch*/, + const std::integral_constant /*interface_dispatch*/, + const CoupledInterfaceType &interface_data, + const CoupledFieldType &coupled_field, SelfFieldType &self_field) { + + static_assert(specfem::data_access::is_acceleration::value, + "SelfFieldType must be an acceleration type"); + static_assert(specfem::data_access::is_acceleration::value, + "CoupledFieldType must be an acceleration type"); + + self_field(0) = interface_data.edge_factor * interface_data.edge_normal(0) * + coupled_field(0); + self_field(1) = interface_data.edge_factor * interface_data.edge_normal(1) * + coupled_field(0); +} + +} // namespace specfem::medium::impl diff --git a/include/medium/dim3/elastic/isotropic/source.hpp b/include/medium/dim3/elastic/isotropic/source.hpp new file mode 100644 index 000000000..c56518cac --- /dev/null +++ b/include/medium/dim3/elastic/isotropic/source.hpp @@ -0,0 +1,37 @@ +#pragma once + +#include "enumerations/medium.hpp" +#include "specfem/point.hpp" +#include + +namespace specfem { +namespace medium { + +template +KOKKOS_INLINE_FUNCTION auto impl_compute_source_contribution( + const std::integral_constant, + const std::integral_constant, + const std::integral_constant, + const PointSourceType &point_source, + const PointPropertiesType &point_properties) { + constexpr bool using_simd = PointPropertiesType::simd::using_simd; + + using PointAccelerationType = + specfem::point::acceleration; + + PointAccelerationType result; + + result(0) = point_source.stf(0) * point_source.lagrange_interpolant(0); + result(1) = point_source.stf(1) * point_source.lagrange_interpolant(1); + result(2) = point_source.stf(2) * point_source.lagrange_interpolant(2); + + return result; +} + +} // namespace medium +} // namespace specfem diff --git a/include/mesh/dim2/adjacency_graph/adjacency_graph.hpp b/include/mesh/dim2/adjacency_graph/adjacency_graph.hpp index e0531dd17..4a487152e 100644 --- a/include/mesh/dim2/adjacency_graph/adjacency_graph.hpp +++ b/include/mesh/dim2/adjacency_graph/adjacency_graph.hpp @@ -106,6 +106,8 @@ template struct adjacency_graph { */ const Graph &graph() const { return graph_; } + // TODO(Rohit: ADJ_GRAPH_DEFAULT) + // Graph should never be empty after it is made as default /** * @brief Check if the adjacency graph is empty * @@ -114,7 +116,7 @@ template struct adjacency_graph { * * @return true if the graph has no vertices, false otherwise */ - const bool empty() const { return boost::num_vertices(graph_) == 0; } + bool empty() const { return boost::num_vertices(graph_) == 0; } /** * @brief Assert that the adjacency graph is symmetric diff --git a/include/mesh/dim2/coupled_interfaces/coupled_interfaces.hpp b/include/mesh/dim2/coupled_interfaces/coupled_interfaces.hpp index 05030979f..ac3ad4865 100644 --- a/include/mesh/dim2/coupled_interfaces/coupled_interfaces.hpp +++ b/include/mesh/dim2/coupled_interfaces/coupled_interfaces.hpp @@ -11,6 +11,9 @@ namespace specfem { namespace mesh { +// TODO(Rohit: ADJ_GRAPH_DEFAULT) +// Remove coupled_interfaces functionality when adjacency graph is the default +// Coupled interfaces should be saved as weakly conforming adjacency graph edges /** * @brief Struct to store coupled interfaces for the 2D mesh * @@ -57,16 +60,7 @@ template <> struct coupled_interfaces { */ template - std::variant, - specfem::mesh::interface_container< - dimension, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::poroelastic>, - specfem::mesh::interface_container< - dimension, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::poroelastic> > - get() const; + specfem::mesh::interface_container get() const; specfem::mesh::interface_container + struct interface_container { constexpr static auto dimension = specfem::dimension::type::dim2; ///< Dimension @@ -44,9 +45,17 @@ struct interface_container { Kokkos::View medium1_index_mapping; ///< spectral element index for edges in medium 1 + Kokkos::View + medium1_edge_type; ///< Edge type for edges in medium 1 + Kokkos::View medium2_index_mapping; ///< spectral element index for edges in medium 2 + Kokkos::View + medium2_edge_type; ///< Edge type for edges in medium 2 + /** * @brief get the spectral element index for the given edge index in the given * medium @@ -57,13 +66,29 @@ struct interface_container { */ template int get_spectral_elem_index(const int interface_index) const; -}; - -// template -// struct interface_container -// { -// }; + /** + * @brief Swapped assignment operator for interface_container. + * + * This operator allows assigning an interface_container with swapped medium + * tags. It copies the number of interfaces and swaps the index mappings and + * edge types between medium1 and medium2. This is useful for scenarios where + * the roles of the two media need to be interchanged. + * + * @param other The interface_container instance with medium1 and medium2 tags + * to swap from. + * @return Reference to the modified interface_container with swapped media + * data. + */ + operator interface_container() const { + interface_container other; + other.num_interfaces = num_interfaces; + other.medium1_index_mapping = medium2_index_mapping; + other.medium1_edge_type = medium2_edge_type; + other.medium2_index_mapping = medium1_index_mapping; + other.medium2_edge_type = medium1_edge_type; + return other; + } +}; } // namespace mesh } // namespace specfem diff --git a/include/mesh/dim2/coupled_interfaces/interface_container.tpp b/include/mesh/dim2/coupled_interfaces/interface_container.tpp index 9ce67cc2f..807346ead 100644 --- a/include/mesh/dim2/coupled_interfaces/interface_container.tpp +++ b/include/mesh/dim2/coupled_interfaces/interface_container.tpp @@ -11,8 +11,10 @@ template ::interface_container(const int num_interfaces) : num_interfaces(num_interfaces), - medium1_index_mapping("medium1_index_mapping", num_interfaces), - medium2_index_mapping("medium2_index_mapping", num_interfaces) { + medium1_index_mapping("specfem::mesh::interface_container::medium1_index_mapping", num_interfaces), + medium2_index_mapping("specfem::mesh::interface_container::medium2_index_mapping", num_interfaces), + medium1_edge_type("specfem::mesh::interface_container::medium1_edge_type", num_interfaces), + medium2_edge_type("specfem::mesh::interface_container::medium2_edge_type", num_interfaces) { return; } diff --git a/include/mesh/dim3/coordinates/coordinates.hpp b/include/mesh/dim3/coordinates/coordinates.hpp index c397c9fe4..82abd75ca 100644 --- a/include/mesh/dim3/coordinates/coordinates.hpp +++ b/include/mesh/dim3/coordinates/coordinates.hpp @@ -112,6 +112,8 @@ template <> struct coordinates { /** * @brief Compute bounding box of the mesh` * + * @return std::array Array containing minima and maxima of + * domain @code {xmin, xmax, ymin, ymax, zmin, zmax} @endcode */ std::array bounding_box() const; }; diff --git a/include/parallel_configuration/chunk_edge_config.hpp b/include/parallel_configuration/chunk_edge_config.hpp new file mode 100644 index 000000000..644b9d118 --- /dev/null +++ b/include/parallel_configuration/chunk_edge_config.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include "constants.hpp" +#include "enumerations/dimension.hpp" +#include + +namespace specfem::parallel_config { + +template +struct edge_chunk_config { + constexpr static auto dimension = DimensionTag; ///< Dimension type + using execution_space = ExecutionSpace; ///< Execution space + constexpr static int chunk_size = ChunkSize; ///< Number of edges per chunk +}; + +template +struct default_chunk_edge_config; + +#if defined(KOKKOS_ENABLE_CUDA) +template +struct default_chunk_edge_config + : edge_chunk_config {}; +#endif + +#if defined(KOKKOS_ENABLE_HIP) +template +struct default_chunk_edge_config + : edge_chunk_config {}; +#endif + +#if defined(KOKKOS_ENABLE_OPENMP) +template +struct default_chunk_edge_config + : edge_chunk_config {}; +#endif + +#if defined(KOKKOS_ENABLE_SERIAL) +template +struct default_chunk_edge_config + : edge_chunk_config {}; + +template +struct default_chunk_edge_config + : default_chunk_edge_config {}; +#endif +} // namespace specfem::parallel_config diff --git a/include/policies/edge.hpp b/include/policies/edge.hpp index 7cc0d1337..048c4a10a 100644 --- a/include/policies/edge.hpp +++ b/include/policies/edge.hpp @@ -7,6 +7,8 @@ namespace specfem { namespace iterator { +// This file will get deprecated in coming PRs + namespace impl { /** * @brief Index type for quadrature points generated by the edge iterator. @@ -72,9 +74,9 @@ template <> struct edge { int iedge; ///< Index of the edge within the range of edges int self_element; ///< Index of the element where the edge is defined int coupled_element; ///< Index of the element with whom the edge is shared - specfem::enums::edge::type self_edge; ///< Edge orientation for the current + specfem::mesh_entity::type self_edge; ///< Edge orientation for the current ///< element - specfem::enums::edge::type coupled_edge; ///< Edge orientation for the other + specfem::mesh_entity::type coupled_edge; ///< Edge orientation for the other ///< element int npoints; ///< Number of GLL points on the edge @@ -98,8 +100,8 @@ template <> struct edge { */ KOKKOS_INLINE_FUNCTION edge(const int iedge, const int self_element, const int coupled_element, - const specfem::enums::edge::type self_edge, - const specfem::enums::edge::type coupled_edge, const int ngll) + const specfem::mesh_entity::type self_edge, + const specfem::mesh_entity::type coupled_edge, const int ngll) : iedge(iedge), self_element(self_element), coupled_element(coupled_element), self_edge(self_edge), coupled_edge(coupled_edge), npoints(ngll) {} @@ -131,16 +133,16 @@ template <> struct edge { KOKKOS_INLINE_FUNCTION specfem::point::index self_index(const int ipoint) const { switch (self_edge) { - case specfem::enums::edge::type::BOTTOM: + case specfem::mesh_entity::type::bottom: return { self_element, 0, ipoint }; break; - case specfem::enums::edge::type::TOP: + case specfem::mesh_entity::type::top: return { self_element, npoints - 1, npoints - 1 - ipoint }; break; - case specfem::enums::edge::type::LEFT: + case specfem::mesh_entity::type::left: return { self_element, ipoint, 0 }; break; - case specfem::enums::edge::type::RIGHT: + case specfem::mesh_entity::type::right: return { self_element, npoints - 1 - ipoint, npoints - 1 }; break; default: @@ -152,16 +154,16 @@ template <> struct edge { KOKKOS_INLINE_FUNCTION specfem::point::index coupled_index(const int ipoint) const { switch (coupled_edge) { - case specfem::enums::edge::type::BOTTOM: + case specfem::mesh_entity::type::bottom: return { coupled_element, 0, npoints - 1 - ipoint }; break; - case specfem::enums::edge::type::TOP: + case specfem::mesh_entity::type::top: return { coupled_element, npoints - 1, ipoint }; break; - case specfem::enums::edge::type::LEFT: + case specfem::mesh_entity::type::left: return { coupled_element, npoints - 1 - ipoint, npoints - 1 }; break; - case specfem::enums::edge::type::RIGHT: + case specfem::mesh_entity::type::right: return { coupled_element, ipoint, 0 }; break; default: @@ -231,7 +233,7 @@ struct element_edge ///< storing ///< indices using EdgeViewType = Kokkos::View< - specfem::enums::edge::type *, + specfem::mesh_entity::type *, typename member_type::execution_space::memory_space>; ///< View type for ///< storing edge ///< orientation diff --git a/include/solver/time_marching.hpp b/include/solver/time_marching.hpp index 5dad262f4..dfbd8558b 100644 --- a/include/solver/time_marching.hpp +++ b/include/solver/time_marching.hpp @@ -1,6 +1,5 @@ #pragma once -#include "coupled_interface/coupled_interface.hpp" #include "enumerations/dimension.hpp" #include "enumerations/simulation.hpp" #include "enumerations/wavefield.hpp" diff --git a/include/source_time_function/ricker.hpp b/include/source_time_function/ricker.hpp index 64afe71d8..b1b49ec7b 100644 --- a/include/source_time_function/ricker.hpp +++ b/include/source_time_function/ricker.hpp @@ -8,6 +8,12 @@ namespace specfem { namespace forcing_function { + +/** + * @brief Ricker source time function. The Ricker wavelet is a commonly used + * source time function in seismic modeling. We define it here as the + * first derivative of a Ga + */ class Ricker : public stf { public: diff --git a/include/timescheme/newmark.tpp b/include/timescheme/newmark.tpp index 6ddf9299e..c911b1c5f 100644 --- a/include/timescheme/newmark.tpp +++ b/include/timescheme/newmark.tpp @@ -38,6 +38,8 @@ int corrector_phase_impl( using IndexType = specfem::point::assembly_index; + Kokkos::Profiling::pushRegion("Compute Corrector Phase"); + specfem::execution::for_all( "specfem::TimeScheme::Newmark::corrector_phase_impl", range, KOKKOS_LAMBDA(const IndexType &index) { @@ -53,6 +55,8 @@ int corrector_phase_impl( specfem::assembly::store_on_device(index, field, velocity); }); + Kokkos::Profiling::popRegion(); + return nglob * specfem::element::attributes::components; } @@ -93,6 +97,8 @@ int predictor_phase_impl( using IndexType = specfem::point::assembly_index; + Kokkos::Profiling::pushRegion("Compute Predictor Phase"); + specfem::execution::for_all( "specfem::TimeScheme::Newmark::corrector_phase_impl", range, KOKKOS_LAMBDA(const IndexType &index) { @@ -115,6 +121,8 @@ int predictor_phase_impl( acceleration); }); + Kokkos::Profiling::popRegion(); + return nglob * specfem::element::attributes::components; } diff --git a/pyproject.toml b/pyproject.toml index 9109e9345..80d0a9fd0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,6 +21,7 @@ package = false all = [ {include-group = "dev"}, {include-group = "examples"}, + {include-group = "nightly-benchmarks"}, {include-group = "scripts"} ] @@ -51,7 +52,7 @@ doc = [ ] examples = [ - "snakemake==8.29.3", + "snakemake==9.11.2", "obspy==1.4.1", "snakemake-executor-plugin-slurm==0.10.2", "imageio==2.36.1", @@ -62,6 +63,11 @@ examples = [ "h5py==3.13.0", ] +nightly-benchmarks = [ + {include-group = "examples"}, + "pandas==2.3.2", +] + scripts = [ "gmsh==4.14.0", "matplotlib==3.10.3", diff --git a/src/algorithms/dim2/locate_point.cpp b/src/algorithms/dim2/locate_point.cpp index c6c98316e..734b6f508 100644 --- a/src/algorithms/dim2/locate_point.cpp +++ b/src/algorithms/dim2/locate_point.cpp @@ -1,10 +1,11 @@ #include "algorithms/locate_point.hpp" -#include "Serial/Kokkos_Serial_Parallel_Range.hpp" #include "algorithms/locate_point_impl.hpp" #include "algorithms/locate_point_impl.tpp" +#include "enumerations/mesh_entities.hpp" #include "specfem/assembly.hpp" #include "specfem/jacobian.hpp" #include "specfem/point.hpp" +#include "specfem_setup.hpp" #include #include @@ -106,3 +107,44 @@ std::pair specfem::algorithms::locate_point_on_edge( return specfem::algorithms::locate_point_impl::get_local_edge_coordinate( coordinates, coorg, mesh_entity, 0); } + +specfem::point::global_coordinates +specfem::algorithms::locate_point_on_edge( + const type_real &coordinate, + const specfem::assembly::mesh &mesh, + const int &ispec, const specfem::mesh_entity::type &mesh_entity) { + if (specfem::mesh_entity::contains(specfem::mesh_entity::corners, + mesh_entity)) { + throw std::runtime_error( + "locate_point_on_edge mesh_entity must be an edge. Found a corner."); + return { 0, 0 }; + } + const auto [xi, gamma] = [&]() -> std::pair { + if (mesh_entity == specfem::mesh_entity::type::bottom) { + return { coordinate, -1 }; + } else if (mesh_entity == specfem::mesh_entity::type::right) { + return { 1, coordinate }; + } else if (mesh_entity == specfem::mesh_entity::type::top) { + return { coordinate, 1 }; + } else { + return { -1, coordinate }; + } + }(); + + // interpolating the entire element is not the most efficient way to do this. + // consider a codimension 1 interpolation in the future. + + const int ngnod = mesh.ngnod; + + const Kokkos::View< + point::global_coordinates *, + Kokkos::HostSpace> + coorg("coorg", ngnod); + + for (int i = 0; i < ngnod; i++) { + coorg(i).x = mesh.h_control_node_coord(0, ispec, i); + coorg(i).z = mesh.h_control_node_coord(1, ispec, i); + } + + return jacobian::compute_locations(coorg, ngnod, xi, gamma); +} diff --git a/src/coupled_interface/coupled_interface.cpp b/src/coupled_interface/coupled_interface.cpp deleted file mode 100644 index ebbfa94c0..000000000 --- a/src/coupled_interface/coupled_interface.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "coupled_interface/coupled_interface.hpp" -#include "coupled_interface/coupled_interface.tpp" -#include "enumerations/dimension.hpp" -#include "enumerations/medium.hpp" - -template class specfem::coupled_interface::coupled_interface< - specfem::wavefield::simulation_field::forward, - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::acoustic>; - -template class specfem::coupled_interface::coupled_interface< - specfem::wavefield::simulation_field::forward, - specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::elastic_psv>; - -template class specfem::coupled_interface::coupled_interface< - specfem::wavefield::simulation_field::backward, - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::acoustic>; - -template class specfem::coupled_interface::coupled_interface< - specfem::wavefield::simulation_field::backward, - specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::elastic_psv>; - -template class specfem::coupled_interface::coupled_interface< - specfem::wavefield::simulation_field::adjoint, - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::acoustic>; - -template class specfem::coupled_interface::coupled_interface< - specfem::wavefield::simulation_field::adjoint, - specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::elastic_psv>; diff --git a/src/enumerations/connections.cpp b/src/enumerations/connections.cpp index 8a4fcfdef..49c32c881 100644 --- a/src/enumerations/connections.cpp +++ b/src/enumerations/connections.cpp @@ -3,9 +3,27 @@ #include "enumerations/mesh_entities.hpp" #include #include +#include #include #include +const std::string +specfem::connections::to_string(const specfem::connections::type &conn) { + switch (conn) { + case specfem::connections::type::strongly_conforming: + return "strongly_conforming"; + case specfem::connections::type::weakly_conforming: + return "weakly_conforming"; + case specfem::connections::type::nonconforming: + return "nonconforming"; + default: + throw std::runtime_error( + std::string("specfem::connections::to_string does not handle ") + + std::to_string(static_cast(conn))); + return "!ERR"; + } +} + /** * @brief Helper function to determine if orientation mapping requires * coordinate flipping @@ -18,8 +36,9 @@ * mappings between edges require flipping to maintain proper orientation. * The flipping rules ensure consistent connectivity across mesh elements. */ -static bool flip_orientations(const specfem::mesh_entity::type &from, - const specfem::mesh_entity::type &to) { +bool specfem::connections::connection_mapping::flip_orientation( + const specfem::mesh_entity::type &from, + const specfem::mesh_entity::type &to) const { if ((from == specfem::mesh_entity::type::top && to == specfem::mesh_entity::type::bottom) || (from == specfem::mesh_entity::type::bottom && @@ -105,7 +124,7 @@ specfem::connections::connection_mapping::map_coordinates( const auto coord_from = edge_coordinates.at(from)(point); - const auto flip = flip_orientations(from, to); + const auto flip = this->flip_orientation(from, to); const auto coord_to = flip ? edge_coordinates.at(to)(total_points_on_to - 1 - point) diff --git a/src/enumerations/mesh_entities.cpp b/src/enumerations/mesh_entities.cpp index 019dd3421..513c932f6 100644 --- a/src/enumerations/mesh_entities.cpp +++ b/src/enumerations/mesh_entities.cpp @@ -21,3 +21,30 @@ std::list specfem::mesh_entity::edges_of_corner( throw std::runtime_error("Invalid corner type"); } } + +const std::string +specfem::mesh_entity::to_string(const specfem::mesh_entity::type &entity) { + switch (entity) { + case specfem::mesh_entity::type::bottom: + return "bottom"; + case specfem::mesh_entity::type::right: + return "right"; + case specfem::mesh_entity::type::top: + return "top"; + case specfem::mesh_entity::type::left: + return "left"; + case specfem::mesh_entity::type::bottom_left: + return "bottom_left"; + case specfem::mesh_entity::type::bottom_right: + return "bottom_right"; + case specfem::mesh_entity::type::top_right: + return "top_right"; + case specfem::mesh_entity::type::top_left: + return "top_left"; + default: + throw std::runtime_error( + std::string("specfem::mesh_entity::to_string does not handle ") + + std::to_string(static_cast(entity))); + return "!ERR"; + } +} diff --git a/src/execute.cpp b/src/execute.cpp index 55d0c68a1..144ed9556 100644 --- a/src/execute.cpp +++ b/src/execute.cpp @@ -59,7 +59,7 @@ void execute( const auto stations_node = setup.get_stations(); const auto angle = setup.get_receiver_angle(); - auto receivers = specfem::io::read_receivers(stations_node, angle); + auto receivers = specfem::io::read_2d_receivers(stations_node, angle); mpi->cout("Source Information:"); mpi->cout("-------------------------------"); diff --git a/src/io/NPY/impl/npy_header.cpp b/src/io/NPY/impl/npy_header.cpp new file mode 100644 index 000000000..9488c9a89 --- /dev/null +++ b/src/io/NPY/impl/npy_header.cpp @@ -0,0 +1,173 @@ +#include +#include +#include +#include +#include +#include + +#include "io/NPY/impl/npy_header.hpp" + +namespace specfem::io::impl::NPY { + +template <> NPYString &NPYString::operator+=(const std::string rhs) { + this->insert(this->end(), rhs.begin(), rhs.end()); + return *this; +} + +template <> NPYString &NPYString::operator+=(const char *rhs) { + // write in little endian + size_t len = strlen(rhs); + this->reserve(len); + for (size_t byte = 0; byte < len; byte++) { + this->push_back(rhs[byte]); + } + return *this; +} + +/** + * @brief Create a NumPy .npy file header + * + * This function generates the header for a NumPy .npy file based on the + * provided shape, data type, and array ordering information. The header follows + * the NumPy file format specification. + * + * @tparam value_type The data type of the array elements + * @param shape Vector containing the dimensions of the array + * @param fortran_order Boolean indicating whether the array uses Fortran-style + * ordering + * + * @return std::string The generated header as a vector of characters + * + * @note Modified from cnpy library (MIT License) + * https://github.com/rogersce/cnpy + * + * @example + * For a 3x4 float array using Fortran ordering on a little-endian system, + * the header dictionary might look like: + * {'descr': ' &shape, + const char type_char, const size_t type_size, + bool fortran_order) { + NPYString dict; + dict += "{'descr': '"; + dict += []() { + int x = 1; + return (((char *)&x)[0]) ? '<' : '>'; + }(); + dict += type_char; + dict += std::to_string(type_size); + dict += "', 'fortran_order': "; + dict += (fortran_order ? "True" : "False"); + dict += ", 'shape': ("; + dict += std::to_string(shape[0]); + for (size_t i = 1; i < shape.size(); i++) { + dict += ", "; + dict += std::to_string(shape[i]); + } + if (shape.size() == 1) + dict += ","; + dict += "), }"; + // pad with spaces so that preamble+dict is modulo 16 bytes. preamble is 10 + // bytes. dict needs to end with \n + int remainder = 16 - (10 + dict.size()) % 16; + dict.insert(dict.end(), remainder, ' '); + dict.back() = '\n'; + + NPYString header; + header += (char)0x93; + header += "NUMPY"; + header += (char)0x01; // major version of numpy format + header += (char)0x00; // minor version of numpy format + header += (uint16_t)dict.size(); + header.insert(header.end(), dict.begin(), dict.end()); + + return header; +} + +/** + * @brief Parse a NumPy .npy file header + * + * This function extracts metadata from a NumPy .npy file header, including word + * size, array shape, and array ordering information. + * + * @param file File stream to the .npy file, positioned at the start of the + * header + * @param byte_size Output parameter that will contain the size of each element + * in bytes + * @param shape Output vector that will contain the dimensions of the array + * @param fortran_order Output parameter that will indicate whether the array + * uses Fortran-style ordering + * @throws std::runtime_error If the header cannot be properly parsed + * + * @note Modified from cnpy library (MIT License) + * https://github.com/rogersce/cnpy + */ +std::vector parse_npy_header(std::ifstream &file, const char type_char, + const size_t type_size) { + char buffer[11]; + file.read(buffer, 11 * sizeof(char)); + // Read the header into a string + std::string header; + std::getline(file, header); + + size_t loc1, loc2; + + // fortran order + loc1 = header.find("fortran_order"); + if (loc1 == std::string::npos) + throw std::runtime_error( + "parse_npy_header: failed to find header keyword: 'fortran_order'"); + loc1 += 16; + bool fortran_order = (header.substr(loc1, 4) == "True" ? true : false); + + if (!fortran_order) { + throw std::runtime_error( + "parse_npy_header: only fortran_order=True is supported"); + } + + // shape + loc1 = header.find("("); + loc2 = header.find(")"); + if (loc1 == std::string::npos || loc2 == std::string::npos) + throw std::runtime_error( + "parse_npy_header: failed to find header keyword: '(' or ')'"); + + std::regex num_regex("[0-9][0-9]*"); + std::smatch sm; + std::vector shape; + + std::string str_shape = header.substr(loc1 + 1, loc2 - loc1 - 1); + while (std::regex_search(str_shape, sm, num_regex)) { + shape.push_back(std::stoul(sm[0].str())); + str_shape = sm.suffix().str(); + } + + // endian, word size, data type + // byte order code | stands for not applicable. + // not sure when this applies except for byte array + loc1 = header.find("descr"); + if (loc1 == std::string::npos) + throw std::runtime_error( + "parse_npy_header: failed to find header keyword: 'descr'"); + loc1 += 9; + bool littleEndian = + (header[loc1] == '<' || header[loc1] == '|' ? true : false); + if (!littleEndian) { + throw std::runtime_error( + "parse_npy_header: only little-endian format is supported"); + } + if (header[loc1 + 1] != type_char) { + throw std::runtime_error("parse_npy_header: type mismatch"); + } + std::string str_ws = header.substr(loc1 + 2); + loc2 = str_ws.find("'"); + size_t byte_size = atoi(str_ws.substr(0, loc2).c_str()); + if (byte_size != type_size) { + throw std::runtime_error("parse_npy_header: byte size mismatch"); + } + + return shape; +} + +} // namespace specfem::io::impl::NPY diff --git a/src/io/kernel/writer.cpp b/src/io/kernel/writer.cpp index e131072f5..50c505f68 100644 --- a/src/io/kernel/writer.cpp +++ b/src/io/kernel/writer.cpp @@ -2,6 +2,9 @@ #include "io/ADIOS2/ADIOS2.hpp" #include "io/ASCII/ASCII.hpp" #include "io/HDF5/HDF5.hpp" +#include "io/NPY/NPY.hpp" +#include "io/NPZ/NPZ.hpp" + #include "io/impl/medium_writer.tpp" #include "io/kernel/writer.tpp" @@ -15,3 +18,9 @@ template class specfem::io::kernel_writer< template class specfem::io::kernel_writer< specfem::io::ASCII >; + +template class specfem::io::kernel_writer< + specfem::io::NPY >; + +template class specfem::io::kernel_writer< + specfem::io::NPZ >; diff --git a/src/io/mesh/impl/fortran/dim2/mesh.cpp b/src/io/mesh/impl/fortran/dim2/mesh.cpp index 93088de02..719cb9e17 100644 --- a/src/io/mesh/impl/fortran/dim2/mesh.cpp +++ b/src/io/mesh/impl/fortran/dim2/mesh.cpp @@ -25,7 +25,8 @@ #include specfem::mesh::mesh specfem::io::read_2d_mesh( - const std::string &filename, const specfem::enums::elastic_wave elastic_wave, + const std::string &filename, + const specfem::enums::elastic_wave elastic_wave, const specfem::enums::electromagnetic_wave electromagnetic_wave, const specfem::MPI::MPI *mpi) { @@ -116,7 +117,8 @@ specfem::mesh::mesh specfem::io::read_2d_mesh( specfem::io::mesh::impl::fortran::dim2::read_coupled_interfaces( stream, mesh.parameters.num_fluid_solid_edges, mesh.parameters.num_fluid_poro_edges, - mesh.parameters.num_solid_poro_edges, mpi); + mesh.parameters.num_solid_poro_edges, mesh.control_nodes.knods, + mpi); } catch (std::runtime_error &e) { throw; } diff --git a/src/io/mesh/impl/fortran/dim2/read_adjacency_graph.cpp b/src/io/mesh/impl/fortran/dim2/read_adjacency_graph.cpp index ad5c43c2a..b3ad46390 100644 --- a/src/io/mesh/impl/fortran/dim2/read_adjacency_graph.cpp +++ b/src/io/mesh/impl/fortran/dim2/read_adjacency_graph.cpp @@ -45,14 +45,12 @@ specfem::io::mesh::impl::fortran::dim2::read_adjacency_graph( const auto connection_type = static_cast(connection_int); - if (connection_type == specfem::connections::type::strongly_conforming) { + if (connection_type == specfem::connections::type::strongly_conforming || + connection_type == specfem::connections::type::nonconforming) { const auto edge_orientation = static_cast(orientation_int); - boost::add_edge( - current_element - 1, neighbor_element - 1, - EdgeProperties{ specfem::connections::type::strongly_conforming, - edge_orientation }, - g); + boost::add_edge(current_element - 1, neighbor_element - 1, + EdgeProperties{ connection_type, edge_orientation }, g); } else { throw std::runtime_error("Unknown connection type in adjacency graph."); } diff --git a/src/io/mesh/impl/fortran/dim2/read_interfaces.cpp b/src/io/mesh/impl/fortran/dim2/read_interfaces.cpp index 36388c3f6..17a164557 100644 --- a/src/io/mesh/impl/fortran/dim2/read_interfaces.cpp +++ b/src/io/mesh/impl/fortran/dim2/read_interfaces.cpp @@ -3,13 +3,117 @@ #include "mesh/mesh.hpp" #include "specfem_mpi/interface.hpp" +namespace { + +std::vector get_common_nodes(std::vector element1_nodes, + std::vector element2_nodes) { + std::sort(element1_nodes.begin(), element1_nodes.end()); + std::sort(element2_nodes.begin(), element2_nodes.end()); + + std::vector common_nodes; + std::set_intersection(element1_nodes.begin(), element1_nodes.end(), + element2_nodes.begin(), element2_nodes.end(), + std::back_inserter(common_nodes)); + return common_nodes; +} + +std::tuple +compute_connected_edges(Kokkos::View knods, + const int ispec1, const int ispec2) { + std::vector element1_nodes{ knods(0, ispec1), knods(1, ispec1), + knods(2, ispec1), knods(3, ispec1) }; + + std::vector element2_nodes{ knods(0, ispec2), knods(1, ispec2), + knods(2, ispec2), knods(3, ispec2) }; + + // Find the common nodes between 2 elements + const auto common_nodes = get_common_nodes(element1_nodes, element2_nodes); + + if (common_nodes.size() != 2) + throw std::runtime_error("Error: Elements " + std::to_string(ispec1) + + " and " + std::to_string(ispec2) + + " do not share an edge."); + + std::vector edge1_node_indices; + std::vector edge2_node_indices; + + for (const auto &node : common_nodes) { + if (element1_nodes[0] == node) + edge1_node_indices.push_back(0); + if (element1_nodes[1] == node) + edge1_node_indices.push_back(1); + if (element1_nodes[2] == node) + edge1_node_indices.push_back(2); + if (element1_nodes[3] == node) + edge1_node_indices.push_back(3); + } + + for (const auto &node : common_nodes) { + if (element2_nodes[0] == node) + edge2_node_indices.push_back(0); + if (element2_nodes[1] == node) + edge2_node_indices.push_back(1); + if (element2_nodes[2] == node) + edge2_node_indices.push_back(2); + if (element2_nodes[3] == node) + edge2_node_indices.push_back(3); + } + + if (edge1_node_indices.size() != 2 || edge2_node_indices.size() != 2) + throw std::runtime_error("Error: Could not determine edge nodes."); + + specfem::mesh_entity::type edge1, edge2; + + // 0, 1 -> bottom + // 1, 2 -> right + // 2, 3 -> top + // 3, 0 -> left + + if ((edge1_node_indices == std::vector{ 0, 1 } || + edge1_node_indices == std::vector{ 1, 0 })) { + edge1 = specfem::mesh_entity::type::bottom; + } else if ((edge1_node_indices == std::vector{ 1, 2 } || + edge1_node_indices == std::vector{ 2, 1 })) { + edge1 = specfem::mesh_entity::type::right; + } else if ((edge1_node_indices == std::vector{ 2, 3 } || + edge1_node_indices == std::vector{ 3, 2 })) { + edge1 = specfem::mesh_entity::type::top; + } else if ((edge1_node_indices == std::vector{ 3, 0 } || + edge1_node_indices == std::vector{ 0, 3 })) { + edge1 = specfem::mesh_entity::type::left; + } else { + throw std::runtime_error("Error: Could not determine edge1 type."); + } + + if ((edge2_node_indices == std::vector{ 0, 1 } || + edge2_node_indices == std::vector{ 1, 0 })) { + edge2 = specfem::mesh_entity::type::bottom; + } else if ((edge2_node_indices == std::vector{ 1, 2 } || + edge2_node_indices == std::vector{ 2, 1 })) { + edge2 = specfem::mesh_entity::type::right; + } else if ((edge2_node_indices == std::vector{ 2, 3 } || + edge2_node_indices == std::vector{ 3, 2 })) { + edge2 = specfem::mesh_entity::type::top; + } else if ((edge2_node_indices == std::vector{ 3, 0 } || + edge2_node_indices == std::vector{ 0, 3 })) { + edge2 = specfem::mesh_entity::type::left; + } else { + throw std::runtime_error("Error: Could not determine edge2 type."); + } + + return { edge1, edge2 }; +} + +} // namespace + template specfem::mesh::interface_container specfem::io::mesh::impl::fortran::dim2::read_interfaces( - const int num_interfaces, std::ifstream &stream, - const specfem::MPI::MPI *mpi) { + const int num_interfaces, + Kokkos::View knods, + std::ifstream &stream, const specfem::MPI::MPI *mpi) { specfem::mesh::interface_container interface( num_interfaces); @@ -23,6 +127,12 @@ specfem::io::mesh::impl::fortran::dim2::read_interfaces( specfem::io::fortran_read_line(stream, &medium2_ispec_l, &medium1_ispec_l); interface.medium1_index_mapping(i) = medium1_ispec_l - 1; interface.medium2_index_mapping(i) = medium2_ispec_l - 1; + + const auto [edge1, edge2] = compute_connected_edges( + knods, medium1_ispec_l - 1, medium2_ispec_l - 1); + + interface.medium1_edge_type(i) = edge1; + interface.medium2_edge_type(i) = edge2; } return interface; @@ -35,9 +145,10 @@ template specfem::mesh::interface_container< specfem::element::medium_tag::acoustic> specfem::io::mesh::impl::fortran::dim2::read_interfaces< specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::acoustic>(const int num_interfaces, - std::ifstream &stream, - const specfem::MPI::MPI *mpi); + specfem::element::medium_tag::acoustic>( + const int num_interfaces, + Kokkos::View knods, + std::ifstream &stream, const specfem::MPI::MPI *mpi); // acoustic/poroelastic template specfem::mesh::interface_container< @@ -45,9 +156,10 @@ template specfem::mesh::interface_container< specfem::element::medium_tag::poroelastic> specfem::io::mesh::impl::fortran::dim2::read_interfaces< specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::poroelastic>(const int num_interfaces, - std::ifstream &stream, - const specfem::MPI::MPI *mpi); + specfem::element::medium_tag::poroelastic>( + const int num_interfaces, + Kokkos::View knods, + std::ifstream &stream, const specfem::MPI::MPI *mpi); // elastic/poroelastic template specfem::mesh::interface_container< @@ -55,15 +167,17 @@ template specfem::mesh::interface_container< specfem::element::medium_tag::poroelastic> specfem::io::mesh::impl::fortran::dim2::read_interfaces< specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::poroelastic>(const int num_interfaces, - std::ifstream &stream, - const specfem::MPI::MPI *mpi); + specfem::element::medium_tag::poroelastic>( + const int num_interfaces, + Kokkos::View knods, + std::ifstream &stream, const specfem::MPI::MPI *mpi); specfem::mesh::coupled_interfaces specfem::io::mesh::impl::fortran::dim2::read_coupled_interfaces( std::ifstream &stream, const int num_interfaces_elastic_acoustic, const int num_interfaces_acoustic_poroelastic, const int num_interfaces_elastic_poroelastic, + Kokkos::View knods, const specfem::MPI::MPI *mpi) { auto elastic_acoustic = @@ -71,21 +185,21 @@ specfem::io::mesh::impl::fortran::dim2::read_coupled_interfaces( specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, specfem::element::medium_tag::acoustic>( - num_interfaces_elastic_acoustic, stream, mpi); + num_interfaces_elastic_acoustic, knods, stream, mpi); auto acoustic_poroelastic = specfem::io::mesh::impl::fortran::dim2::read_interfaces< specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, specfem::element::medium_tag::poroelastic>( - num_interfaces_acoustic_poroelastic, stream, mpi); + num_interfaces_acoustic_poroelastic, knods, stream, mpi); auto elastic_poroelastic = specfem::io::mesh::impl::fortran::dim2::read_interfaces< specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, specfem::element::medium_tag::poroelastic>( - num_interfaces_elastic_poroelastic, stream, mpi); + num_interfaces_elastic_poroelastic, knods, stream, mpi); return specfem::mesh::coupled_interfaces( elastic_acoustic, acoustic_poroelastic, elastic_poroelastic); diff --git a/src/io/mesh/impl/fortran/dim3/mesh.cpp b/src/io/mesh/impl/fortran/dim3/mesh.cpp index 03ebcf8ab..d11383c7e 100644 --- a/src/io/mesh/impl/fortran/dim3/mesh.cpp +++ b/src/io/mesh/impl/fortran/dim3/mesh.cpp @@ -64,7 +64,9 @@ specfem::io::read_3d_mesh(const std::string &mesh_parameters_file, stream.open(mesh_parameters_file); if (!stream.is_open()) { - throw std::runtime_error("Could not open mesh parameter file"); + std::stringstream message; + message << "Could not open mesh parameter file: " << mesh_parameters_file; + throw std::runtime_error(message.str()); } try { @@ -143,13 +145,13 @@ specfem::io::read_3d_mesh(const std::string &mesh_parameters_file, // mpi->cout(mesh.coordinates.print(0, mesh.mapping, "z")); #endif - // Initialize the Jacobian matrix object + // Initialize irregular element number array mesh.irregular_element_number = decltype(mesh.irregular_element_number)( "irregular_element_number", mesh.parameters.nspec); - // Read Irregular elements - try_read_index_array("read_irregular_element_number", stream, - mesh.irregular_element_number); + // Read Irregular elements boolean array + try_read_array("read_irregular_element_number", stream, + mesh.irregular_element_number); // Read the Jacobian matrix (only two CUSTOM_REALs) try_read_line("read_xix_regular", stream, &mesh.xix_regular); diff --git a/src/io/property/reader.cpp b/src/io/property/reader.cpp index 293df40e9..7aa35d367 100644 --- a/src/io/property/reader.cpp +++ b/src/io/property/reader.cpp @@ -2,6 +2,8 @@ #include "io/ADIOS2/ADIOS2.hpp" #include "io/ASCII/ASCII.hpp" #include "io/HDF5/HDF5.hpp" +#include "io/NPY/NPY.hpp" +#include "io/NPZ/NPZ.hpp" #include "io/property/reader.tpp" #include "io/reader.hpp" @@ -14,3 +16,9 @@ template class specfem::io::property_reader< template class specfem::io::property_reader< specfem::io::ASCII >; + +template class specfem::io::property_reader< + specfem::io::NPY >; + +template class specfem::io::property_reader< + specfem::io::NPZ >; diff --git a/src/io/property/writer.cpp b/src/io/property/writer.cpp index 8eeedbac0..ef47df02a 100644 --- a/src/io/property/writer.cpp +++ b/src/io/property/writer.cpp @@ -2,6 +2,8 @@ #include "io/ADIOS2/ADIOS2.hpp" #include "io/ASCII/ASCII.hpp" #include "io/HDF5/HDF5.hpp" +#include "io/NPY/NPY.hpp" +#include "io/NPZ/NPZ.hpp" #include "io/impl/medium_writer.tpp" #include "io/property/writer.tpp" @@ -15,3 +17,9 @@ template class specfem::io::property_writer< template class specfem::io::property_writer< specfem::io::ASCII >; + +template class specfem::io::property_writer< + specfem::io::NPY >; + +template class specfem::io::property_writer< + specfem::io::NPZ >; diff --git a/src/io/receivers.cpp b/src/io/receivers/dim2/read_receivers.cpp similarity index 87% rename from src/io/receivers.cpp rename to src/io/receivers/dim2/read_receivers.cpp index d7bc37c34..38849d29d 100644 --- a/src/io/receivers.cpp +++ b/src/io/receivers/dim2/read_receivers.cpp @@ -1,6 +1,6 @@ // Internal Includes -#include "specfem/receivers.hpp" #include "io/interface.hpp" +#include "specfem/receivers.hpp" #include "specfem_setup.hpp" #include "utilities/interface.hpp" #include "yaml-cpp/yaml.h" @@ -13,8 +13,8 @@ std::vector > > -specfem::io::read_receivers(const std::string &stations_file, - const type_real angle) { +specfem::io::read_2d_receivers(const std::string &stations_file, + const type_real angle) { boost::char_separator sep(" "); std::vector > > -specfem::io::read_receivers(const YAML::Node &stations, const type_real angle) { +specfem::io::read_2d_receivers(const YAML::Node &stations, + const type_real angle) { // If stations file is a string then read the stations file from text format try { std::string stations_file = stations["stations"].as(); - return read_receivers(stations_file, angle); + return read_2d_receivers(stations_file, angle); } catch (const YAML::Exception &e) { // If stations file is not a string then read the stations from the YAML // node diff --git a/src/io/receivers/dim3/read_receivers.cpp b/src/io/receivers/dim3/read_receivers.cpp new file mode 100644 index 000000000..bdbec648d --- /dev/null +++ b/src/io/receivers/dim3/read_receivers.cpp @@ -0,0 +1,116 @@ +// Internal Includes +#include "io/interface.hpp" +#include "specfem/receivers.hpp" +#include "specfem_setup.hpp" +#include "utilities/interface.hpp" +#include "yaml-cpp/yaml.h" + +// External Includes +#include +#include +#include +#include + +std::vector > > +specfem::io::read_3d_receivers(const std::string &stations_file) { + + boost::char_separator sep(" "); + std::vector > > + receivers; + std::fstream stations; + stations.open(stations_file, std::ios::in); + if (stations.is_open()) { + std::string line; + // Read stations file line by line + while (std::getline(stations, line)) { + // split every line with " " delimiter + boost::tokenizer > tokens(line, sep); + std::vector current_station; + for (const auto &t : tokens) { + current_station.push_back(t); + } + // check if the read line meets the format + assert(current_station.size() == 6); + /* Get the network and station name + * 3D format: station, network, y, x, elevation, z + */ + const std::string station_name = current_station[0]; + const std::string network_name = current_station[1]; + // get the x, y and z coordinates of the station; Note the switch in the + // columns of x and y. This is due to the latitude/longitude convention, + // where the y coordinate is the latitude and the x coordinate is the + // longitude. + const type_real y = static_cast(std::stod(current_station[2])); + const type_real x = static_cast(std::stod(current_station[3])); + // elevation is current_station[4] - not used for receiver position + const type_real z = static_cast(std::stod(current_station[5])); + + receivers.push_back( + std::make_shared< + specfem::receivers::receiver >( + network_name, station_name, x, y, z)); + } + + stations.close(); + } + + // Warn if no receivers were found + if (receivers.empty()) { + std::cout << "\033[1mWARNING: No receiver stations found in the STATIONS " + "file\033[0m" + << std::endl; + } + + return receivers; +} + +std::vector > > +specfem::io::read_3d_receivers(const YAML::Node &stations) { + + // If stations file is a string then read the stations file from text format + try { + std::string stations_file = stations["stations"].as(); + return read_3d_receivers(stations_file); + } catch (const YAML::Exception &e) { + // If stations file is not a string then read the stations from the YAML + // node + } + + std::vector > > + receivers; + + // Throw error if length of stations is zero or if it is not a sequence + if (stations["stations"].IsSequence()) { + if (stations["stations"].size() == 0) { + throw std::runtime_error("No receiver stations found in the YAML file"); + } + } else { + throw std::runtime_error( + "Expected stations to be a YAML node sequence,\n but it is " + "neither a sequence nor text file"); + } + + try { + for (const auto &station : stations["stations"]) { + const std::string network_name = station["network"].as(); + const std::string station_name = station["station"].as(); + const type_real x = station["x"].as(); + const type_real y = station["y"].as(); + const type_real z = station["z"].as(); + + receivers.push_back( + std::make_shared< + specfem::receivers::receiver >( + network_name, station_name, x, y, z)); + } + } catch (const YAML::Exception &e) { + std::cerr << e.what() << std::endl; + throw std::runtime_error("Error reading receiver stations"); + } + + return receivers; +} diff --git a/src/io/wavefield/reader.cpp b/src/io/wavefield/reader.cpp index 47558e18d..e7d2b2cb9 100644 --- a/src/io/wavefield/reader.cpp +++ b/src/io/wavefield/reader.cpp @@ -2,6 +2,8 @@ #include "io/ADIOS2/ADIOS2.hpp" #include "io/ASCII/ASCII.hpp" #include "io/HDF5/HDF5.hpp" +#include "io/NPY/NPY.hpp" +#include "io/NPZ/NPZ.hpp" #include "io/wavefield/reader.tpp" // Explicit instantiation @@ -13,3 +15,9 @@ template class specfem::io::wavefield_reader< template class specfem::io::wavefield_reader< specfem::io::ADIOS2 >; + +template class specfem::io::wavefield_reader< + specfem::io::NPY >; + +template class specfem::io::wavefield_reader< + specfem::io::NPZ >; diff --git a/src/io/wavefield/writer.cpp b/src/io/wavefield/writer.cpp index 62f24707c..cfe8edf00 100644 --- a/src/io/wavefield/writer.cpp +++ b/src/io/wavefield/writer.cpp @@ -2,6 +2,8 @@ #include "io/ADIOS2/ADIOS2.hpp" #include "io/ASCII/ASCII.hpp" #include "io/HDF5/HDF5.hpp" +#include "io/NPY/NPY.hpp" +#include "io/NPZ/NPZ.hpp" #include "io/wavefield/writer.tpp" // Explicit instantiation @@ -13,3 +15,9 @@ template class specfem::io::wavefield_writer< template class specfem::io::wavefield_writer< specfem::io::ADIOS2 >; + +template class specfem::io::wavefield_writer< + specfem::io::NPY >; + +template class specfem::io::wavefield_writer< + specfem::io::NPZ >; diff --git a/src/kokkos_kernels/impl/compute_coupling.cpp b/src/kokkos_kernels/impl/compute_coupling.cpp new file mode 100644 index 000000000..0c68b7182 --- /dev/null +++ b/src/kokkos_kernels/impl/compute_coupling.cpp @@ -0,0 +1,36 @@ +#include "kokkos_kernels/impl/compute_coupling.hpp" +#include "enumerations/interface.hpp" +#include "enumerations/material_definitions.hpp" +#include "kokkos_kernels/impl/compute_coupling.tpp" +#include + +FOR_EACH_IN_PRODUCT( + (DIMENSION_TAG(DIM2), CONNECTION_TAG(WEAKLY_CONFORMING), + INTERFACE_TAG(ELASTIC_ACOUSTIC, ACOUSTIC_ELASTIC), + BOUNDARY_TAG(NONE, ACOUSTIC_FREE_SURFACE, STACEY, + COMPOSITE_STACEY_DIRICHLET)), + INSTANTIATE( + (template void specfem::kokkos_kernels::impl::compute_coupling, + (_DIMENSION_TAG_, specfem::wavefield::simulation_field::forward, + _INTERFACE_TAG_, _BOUNDARY_TAG_), + (const std::integral_constant< + specfem::connections::type, + specfem::connections::type::weakly_conforming> /*unused*/, + const specfem::assembly::assembly + &);), + (template void specfem::kokkos_kernels::impl::compute_coupling, + (_DIMENSION_TAG_, specfem::wavefield::simulation_field::backward, + _INTERFACE_TAG_, _BOUNDARY_TAG_), + (const std::integral_constant< + specfem::connections::type, + specfem::connections::type::weakly_conforming> /*unused*/, + const specfem::assembly::assembly + &);), + (template void specfem::kokkos_kernels::impl::compute_coupling, + (_DIMENSION_TAG_, specfem::wavefield::simulation_field::adjoint, + _INTERFACE_TAG_, _BOUNDARY_TAG_), + (const std::integral_constant< + specfem::connections::type, + specfem::connections::type::weakly_conforming> /*unused*/, + const specfem::assembly::assembly + &);))) diff --git a/src/mesh/dim2/coupled_interfaces/coupled_interfaces.cpp b/src/mesh/dim2/coupled_interfaces/coupled_interfaces.cpp index da7c0eef0..7ae437b29 100644 --- a/src/mesh/dim2/coupled_interfaces/coupled_interfaces.cpp +++ b/src/mesh/dim2/coupled_interfaces/coupled_interfaces.cpp @@ -18,29 +18,28 @@ template -std::variant< - specfem::mesh::interface_container< - specfem::dimension::type::dim2, - specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::acoustic>, - specfem::mesh::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::poroelastic>, - specfem::mesh::interface_container< - specfem::dimension::type::dim2, - specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::poroelastic> > +specfem::mesh::interface_container specfem::mesh::coupled_interfaces< specfem::dimension::type::dim2>::coupled_interfaces::get() const { - if constexpr (Medium1 == specfem::element::medium_tag::elastic_psv && - Medium2 == specfem::element::medium_tag::acoustic) { - return elastic_acoustic; - } else if constexpr (Medium1 == specfem::element::medium_tag::acoustic && - Medium2 == specfem::element::medium_tag::poroelastic) { - return acoustic_poroelastic; - } else if constexpr (Medium1 == specfem::element::medium_tag::elastic_psv && - Medium2 == specfem::element::medium_tag::poroelastic) { - return elastic_poroelastic; + if constexpr ((Medium1 == specfem::element::medium_tag::elastic_psv && + Medium2 == specfem::element::medium_tag::acoustic) || + (Medium1 == specfem::element::medium_tag::acoustic && + Medium2 == specfem::element::medium_tag::elastic_psv)) { + return static_cast >( + elastic_acoustic); + } else if constexpr ((Medium1 == specfem::element::medium_tag::acoustic && + Medium2 == specfem::element::medium_tag::poroelastic) || + (Medium1 == specfem::element::medium_tag::poroelastic && + Medium2 == specfem::element::medium_tag::acoustic)) { + return static_cast >( + acoustic_poroelastic); + } else if constexpr ((Medium1 == specfem::element::medium_tag::elastic_psv && + Medium2 == specfem::element::medium_tag::poroelastic) || + (Medium1 == specfem::element::medium_tag::poroelastic && + Medium2 == specfem::element::medium_tag::elastic_psv)) { + return static_cast >( + elastic_poroelastic); } } @@ -88,50 +87,44 @@ specfem::mesh::interface_container, - specfem::mesh::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::poroelastic>, - specfem::mesh::interface_container< - specfem::dimension::type::dim2, - specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::poroelastic> > +template specfem::mesh::interface_container< + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, + specfem::element::medium_tag::acoustic> specfem::mesh::coupled_interfaces:: coupled_interfaces::get() const; -template std::variant< - specfem::mesh::interface_container< - specfem::dimension::type::dim2, - specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::acoustic>, - specfem::mesh::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::poroelastic>, - specfem::mesh::interface_container< - specfem::dimension::type::dim2, - specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::poroelastic> > +template specfem::mesh::interface_container< + specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, + specfem::element::medium_tag::elastic_psv> +specfem::mesh::coupled_interfaces:: + coupled_interfaces::get() const; + +template specfem::mesh::interface_container< + specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, + specfem::element::medium_tag::poroelastic> specfem::mesh::coupled_interfaces:: coupled_interfaces::get() const; -template std::variant< - specfem::mesh::interface_container< - specfem::dimension::type::dim2, - specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::acoustic>, - specfem::mesh::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::poroelastic>, - specfem::mesh::interface_container< - specfem::dimension::type::dim2, - specfem::element::medium_tag::elastic_psv, - specfem::element::medium_tag::poroelastic> > +template specfem::mesh::interface_container< + specfem::dimension::type::dim2, specfem::element::medium_tag::poroelastic, + specfem::element::medium_tag::acoustic> +specfem::mesh::coupled_interfaces:: + coupled_interfaces::get() const; + +template specfem::mesh::interface_container< + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, + specfem::element::medium_tag::poroelastic> specfem::mesh::coupled_interfaces:: coupled_interfaces::get() const; + +template specfem::mesh::interface_container< + specfem::dimension::type::dim2, specfem::element::medium_tag::poroelastic, + specfem::element::medium_tag::elastic_psv> +specfem::mesh::coupled_interfaces:: + coupled_interfaces::get() const; diff --git a/src/parameter_parser/writer/kernel.cpp b/src/parameter_parser/writer/kernel.cpp index fb9841915..ebe78b492 100644 --- a/src/parameter_parser/writer/kernel.cpp +++ b/src/parameter_parser/writer/kernel.cpp @@ -2,6 +2,8 @@ #include "io/ADIOS2/ADIOS2.hpp" #include "io/ASCII/ASCII.hpp" #include "io/HDF5/HDF5.hpp" +#include "io/NPY/NPY.hpp" +#include "io/NPZ/NPZ.hpp" #include "io/kernel/writer.hpp" #include "utilities/strings.hpp" #include @@ -53,6 +55,14 @@ specfem::runtime_configuration::kernel::instantiate_kernel_writer() const { } else if (specfem::utilities::is_ascii_string(this->output_format)) { return std::make_shared > >(this->output_folder); + } else if (specfem::utilities::is_npy_string(this->output_format)) { + return std::make_shared< + specfem::io::kernel_writer > >( + this->output_folder); + } else if (specfem::utilities::is_npz_string(this->output_format)) { + return std::make_shared< + specfem::io::kernel_writer > >( + this->output_folder); } else { throw std::runtime_error("Unknown wavefield format"); } diff --git a/src/parameter_parser/writer/property.cpp b/src/parameter_parser/writer/property.cpp index 1ed62e02e..d8730aa54 100644 --- a/src/parameter_parser/writer/property.cpp +++ b/src/parameter_parser/writer/property.cpp @@ -2,6 +2,8 @@ #include "io/ADIOS2/ADIOS2.hpp" #include "io/ASCII/ASCII.hpp" #include "io/HDF5/HDF5.hpp" +#include "io/NPY/NPY.hpp" +#include "io/NPZ/NPZ.hpp" #include "io/property/reader.hpp" #include "io/property/writer.hpp" #include "utilities/strings.hpp" @@ -56,6 +58,14 @@ specfem::runtime_configuration::property::instantiate_property_writer() const { } else if (specfem::utilities::is_ascii_string(this->output_format)) { return std::make_shared > >(this->output_folder); + } else if (specfem::utilities::is_npy_string(this->output_format)) { + return std::make_shared< + specfem::io::property_writer > >( + this->output_folder); + } else if (specfem::utilities::is_npz_string(this->output_format)) { + return std::make_shared< + specfem::io::property_writer > >( + this->output_folder); } else { throw std::runtime_error("Unknown model format"); } @@ -82,6 +92,14 @@ specfem::runtime_configuration::property::instantiate_property_reader() const { } else if (specfem::utilities::is_ascii_string(this->output_format)) { return std::make_shared > >(this->output_folder); + } else if (specfem::utilities::is_npy_string(this->output_format)) { + return std::make_shared< + specfem::io::property_reader > >( + this->output_folder); + } else if (specfem::utilities::is_npz_string(this->output_format)) { + return std::make_shared< + specfem::io::property_reader > >( + this->output_folder); } else { throw std::runtime_error("Unknown model format"); } diff --git a/src/parameter_parser/writer/wavefield.cpp b/src/parameter_parser/writer/wavefield.cpp index b245d20c9..184a97690 100644 --- a/src/parameter_parser/writer/wavefield.cpp +++ b/src/parameter_parser/writer/wavefield.cpp @@ -2,6 +2,8 @@ #include "io/ADIOS2/ADIOS2.hpp" #include "io/ASCII/ASCII.hpp" #include "io/HDF5/HDF5.hpp" +#include "io/NPY/NPY.hpp" +#include "io/NPZ/NPZ.hpp" #include "io/reader.hpp" #include "periodic_tasks/wavefield_reader.hpp" #include "periodic_tasks/wavefield_writer.hpp" @@ -108,6 +110,16 @@ specfem::runtime_configuration::wavefield::instantiate_wavefield_writer() specfem::periodic_tasks::wavefield_writer >( this->output_folder, this->time_interval, this->include_last_step, this->for_adjoint_simulations); + } else if (specfem::utilities::is_npy_string(this->output_format)) { + return std::make_shared< + specfem::periodic_tasks::wavefield_writer >( + this->output_folder, this->time_interval, this->include_last_step, + this->for_adjoint_simulations); + } else if (specfem::utilities::is_npz_string(this->output_format)) { + return std::make_shared< + specfem::periodic_tasks::wavefield_writer >( + this->output_folder, this->time_interval, this->include_last_step, + this->for_adjoint_simulations); } else { throw std::runtime_error("Unknown wavefield format"); } @@ -138,6 +150,14 @@ specfem::runtime_configuration::wavefield::instantiate_wavefield_reader() return std::make_shared< specfem::periodic_tasks::wavefield_reader >( this->output_folder, this->time_interval, this->include_last_step); + } else if (specfem::utilities::is_npy_string(this->output_format)) { + return std::make_shared< + specfem::periodic_tasks::wavefield_reader >( + this->output_folder, this->time_interval, this->include_last_step); + } else if (specfem::utilities::is_npz_string(this->output_format)) { + return std::make_shared< + specfem::periodic_tasks::wavefield_reader >( + this->output_folder, this->time_interval, this->include_last_step); } else { throw std::runtime_error("Unknown wavefield format"); } diff --git a/src/periodic_tasks/wavefield_reader.cpp b/src/periodic_tasks/wavefield_reader.cpp index dc38b958e..20f9491fc 100644 --- a/src/periodic_tasks/wavefield_reader.cpp +++ b/src/periodic_tasks/wavefield_reader.cpp @@ -1,8 +1,14 @@ #include "periodic_tasks/wavefield_reader.hpp" #include "io/ASCII/ASCII.hpp" #include "io/HDF5/HDF5.hpp" +#include "io/NPY/NPY.hpp" +#include "io/NPZ/NPZ.hpp" // Explicit instantiation template class specfem::periodic_tasks::wavefield_reader; template class specfem::periodic_tasks::wavefield_reader; + +template class specfem::periodic_tasks::wavefield_reader; + +template class specfem::periodic_tasks::wavefield_reader; diff --git a/src/periodic_tasks/wavefield_writer.cpp b/src/periodic_tasks/wavefield_writer.cpp index 4be4d7095..7f99fbe14 100644 --- a/src/periodic_tasks/wavefield_writer.cpp +++ b/src/periodic_tasks/wavefield_writer.cpp @@ -1,8 +1,14 @@ #include "periodic_tasks/wavefield_writer.hpp" #include "io/ASCII/ASCII.hpp" #include "io/HDF5/HDF5.hpp" +#include "io/NPY/NPY.hpp" +#include "io/NPZ/NPZ.hpp" // Explicit instantiation template class specfem::periodic_tasks::wavefield_writer; template class specfem::periodic_tasks::wavefield_writer; + +template class specfem::periodic_tasks::wavefield_writer; + +template class specfem::periodic_tasks::wavefield_writer; diff --git a/src/source_time_function/dgaussian.cpp b/src/source_time_function/dgaussian.cpp index 6c7818462..877bc725d 100644 --- a/src/source_time_function/dgaussian.cpp +++ b/src/source_time_function/dgaussian.cpp @@ -39,13 +39,11 @@ type_real specfem::forcing_function::dGaussian::compute(type_real t) { type_real val; if (this->__use_trick_for_better_pressure) { - val = -1.0 * this->__factor * - specfem::forcing_function::impl::d3gaussian(t - this->__tshift, - this->__f0); + val = this->__factor * specfem::forcing_function::impl::d3gaussian( + t - this->__tshift, this->__f0); } else { - val = -1.0 * this->__factor * - specfem::forcing_function::impl::d1gaussian(t - this->__tshift, - this->__f0); + val = this->__factor * specfem::forcing_function::impl::d1gaussian( + t - this->__tshift, this->__f0); } return val; diff --git a/src/source_time_function/dirac.cpp b/src/source_time_function/dirac.cpp index 97e0b5f2e..2a4bd602c 100644 --- a/src/source_time_function/dirac.cpp +++ b/src/source_time_function/dirac.cpp @@ -40,13 +40,11 @@ type_real specfem::forcing_function::Dirac::compute(type_real t) { type_real val; if (this->__use_trick_for_better_pressure) { - val = -1.0 * this->__factor * - specfem::forcing_function::impl::d2gaussian(t - this->__tshift, - this->__f0); + val = this->__factor * specfem::forcing_function::impl::d2gaussian( + t - this->__tshift, this->__f0); } else { - val = -1.0 * this->__factor * - specfem::forcing_function::impl::gaussian(t - this->__tshift, - this->__f0); + val = this->__factor * specfem::forcing_function::impl::gaussian( + t - this->__tshift, this->__f0); } return val; diff --git a/src/source_time_function/ricker.cpp b/src/source_time_function/ricker.cpp index 3540eb6b1..a25e9e770 100644 --- a/src/source_time_function/ricker.cpp +++ b/src/source_time_function/ricker.cpp @@ -41,13 +41,11 @@ type_real specfem::forcing_function::Ricker::compute(type_real t) { type_real val; if (this->__use_trick_for_better_pressure) { - val = -1.0 * this->__factor * - specfem::forcing_function::impl::d4gaussian(t - this->__tshift, - this->__f0); + val = this->__factor * specfem::forcing_function::impl::d4gaussian( + t - this->__tshift, this->__f0); } else { - val = -1.0 * this->__factor * - specfem::forcing_function::impl::d2gaussian(t - this->__tshift, - this->__f0); + val = this->__factor * specfem::forcing_function::impl::d2gaussian( + t - this->__tshift, this->__f0); } return val; diff --git a/tests/unit-tests/CMakeLists.txt b/tests/unit-tests/CMakeLists.txt index 15a8136a2..c3f245ee4 100644 --- a/tests/unit-tests/CMakeLists.txt +++ b/tests/unit-tests/CMakeLists.txt @@ -98,6 +98,7 @@ target_link_libraries(io_framework_tests PRIVATE gtest_main Kokkos::kokkos kokkos_environment + $<$:zlib> $<$:hdf5> $<$:adios2> ) @@ -105,6 +106,7 @@ target_link_libraries(io_framework_tests PRIVATE target_compile_definitions( io_framework_tests PUBLIC + $<$>:-DNO_NPZ> $<$>:-DNO_HDF5> $<$>:-DNO_ADIOS2> ) @@ -272,6 +274,26 @@ target_link_libraries( -lpthread -lm ) +add_executable( + nonconforming_tests + nonconforming/reparameterizations/compute_intersection_test.cpp + nonconforming/runner.cpp +) + +target_link_libraries( + nonconforming_tests + mesh + assembly + quadrature + mpi_environment + kokkos_environment + yaml-cpp + utilities + boost + -lpthread -lm + gtest_main +) + add_executable( compute_jacobian_matrix_tests assembly_mesh/jacobian_matrix/compute_jacobian_matrix_tests.cpp @@ -356,7 +378,8 @@ add_executable( assembly/properties/properties.cpp assembly/compute_wavefield/compute_wavefield.cpp assembly/sources/sources.cpp - assembly/check_jacobian/check_jacobian.cpp + assembly/check_jacobian/dim2/check_jacobian.cpp + assembly/check_jacobian/dim3/check_jacobian.cpp assembly/locate/locate_point.cpp assembly/locate/locate_point_on_edge.cpp assembly/mesh/utilities.cpp @@ -412,7 +435,12 @@ target_link_libraries( add_executable( io_tests - io/sources/test_read_sources.cpp + io/sources/test_read_sources_file.cpp + io/sources/test_read_sources_yaml.cpp + io/sources/test_source_solutions.cpp + io/receivers/test_receiver_solutions.cpp + io/receivers/test_read_stations_file.cpp + io/receivers/test_read_yaml.cpp ) target_link_libraries( @@ -446,6 +474,8 @@ target_link_libraries( add_executable( locate_point_fixture_2d algorithms/dim2/locate_point_fixture.cpp + algorithms/dim2/locate_point_test.cpp + algorithms/dim2/locate_point_on_edge_test.cpp ) target_link_libraries( @@ -495,16 +525,32 @@ target_link_libraries( -lpthread -lm ) +add_executable( + chunked_edge_tests + policies/chunked_edge.cpp +) + +target_link_libraries( + chunked_edge_tests + kokkos_environment + gtest_main + Kokkos::kokkos + mpi_environment + kokkos_environment + ${BOOST_LIBS} + -lpthread -lm +) + add_executable( mass_matrix_tests - mass_matrix/main.cpp + medium/mass_matrix/main.cpp # 2D mass matrix tests - mass_matrix/dim2/elastic_isotropic.cpp - mass_matrix/dim2/elastic_anisotropic.cpp - mass_matrix/dim2/acoustic.cpp - mass_matrix/dim2/poroelastic.cpp + medium/mass_matrix/dim2/elastic_isotropic.cpp + medium/mass_matrix/dim2/elastic_anisotropic.cpp + medium/mass_matrix/dim2/acoustic.cpp + medium/mass_matrix/dim2/poroelastic.cpp # 3D mass matrix tests - mass_matrix/dim3/elastic_isotropic.cpp + medium/mass_matrix/dim3/elastic_isotropic.cpp ) target_link_libraries( @@ -515,15 +561,15 @@ target_link_libraries( add_executable( stress_tests - stress/main.cpp + medium/stress/main.cpp # 2D stress tests - stress/dim2/acoustic.cpp - stress/dim2/elastic_isotropic.cpp - stress/dim2/elastic_anisotropic.cpp - stress/dim2/elastic_isotropic_cosserat.cpp - stress/dim2/poroelastic_isotropic.cpp + medium/stress/dim2/acoustic.cpp + medium/stress/dim2/elastic_isotropic.cpp + medium/stress/dim2/elastic_anisotropic.cpp + medium/stress/dim2/elastic_isotropic_cosserat.cpp + medium/stress/dim2/poroelastic_isotropic.cpp # 3D stress tests - stress/dim3/elastic_isotropic.cpp + medium/stress/dim3/elastic_isotropic.cpp ) target_link_libraries( @@ -532,6 +578,38 @@ target_link_libraries( gtest_main ) +add_executable( + compute_coupling_tests + compute_coupling/acoustic_elastic.cpp + compute_coupling/elastic_acoustic.cpp +) + +target_link_libraries( + compute_coupling_tests + point + gtest_main + Kokkos::kokkos +) + +add_executable( + source_tests + medium/source/main.cpp + # 2D source tests + medium/source/dim2/acoustic.cpp + medium/source/dim2/elastic_isotropic.cpp + medium/source/dim2/elastic_anisotropic.cpp + medium/source/dim2/elastic_isotropic_cosserat.cpp + medium/source/dim2/poroelastic.cpp + # 3D source tests + medium/source/dim3/elastic_isotropic.cpp +) + +target_link_libraries( + source_tests + point + gtest_main +) + add_executable( source_class_tests source/source.cpp @@ -573,12 +651,40 @@ target_link_libraries( # # ) add_executable( - displacement_newmark_tests - displacement_tests/Newmark/newmark_tests.cpp + displacement_newmark_2d_tests + displacement_tests/Newmark/dim2/newmark_tests.cpp +) + +target_link_libraries( + displacement_newmark_2d_tests + quadrature + mesh + # material_class + yaml-cpp + kokkos_environment + mpi_environment + assembly + parameter_reader + compare_arrays + timescheme + point + edge + algorithms + kokkos_kernels + solver + periodic_tasks + boost + -lpthread -lm +) + + +add_executable( + displacement_newmark_3d_tests + displacement_tests/Newmark/dim3/newmark_tests.cpp ) target_link_libraries( - displacement_newmark_tests + displacement_newmark_3d_tests quadrature mesh # material_class @@ -592,7 +698,6 @@ target_link_libraries( point edge algorithms - coupled_interface kokkos_kernels solver periodic_tasks @@ -678,7 +783,8 @@ if(NOT MPI_PARALLEL) # compute_elastic_tests compute_jacobian_matrix_tests compute_tests - displacement_newmark_tests + displacement_newmark_2d_tests + displacement_newmark_3d_tests fortranio_test gll_tests interpolate_function @@ -690,12 +796,16 @@ if(NOT MPI_PARALLEL) locate_point_fixture_2d locate_point_fixture_3d mass_matrix_tests + compute_coupling_tests mesh_tests + nonconforming_tests point_tests policies_tests + chunked_edge_tests receivers_tests simd_tests source_class_tests + source_tests stress_tests test_mesh_utilities_mapping_2d test_mesh_utilities_mapping_3d @@ -722,7 +832,6 @@ if(NOT MPI_PARALLEL) io mesh policies - mortar ) foreach(dir_name IN LISTS LINK_DIRS) diff --git a/tests/unit-tests/algorithms/dim2/locate_point_fixture.cpp b/tests/unit-tests/algorithms/dim2/locate_point_fixture.cpp index f533423af..bd08004b6 100644 --- a/tests/unit-tests/algorithms/dim2/locate_point_fixture.cpp +++ b/tests/unit-tests/algorithms/dim2/locate_point_fixture.cpp @@ -1,636 +1,217 @@ -#include "../../mesh_utilities/mapping.hpp" -#include "../../test_macros.hpp" -#include "Kokkos_Environment.hpp" -#include "MPI_environment.hpp" -#include "algorithms/locate_point.hpp" -#include "algorithms/locate_point_impl.hpp" -#include "kokkos_abstractions.h" -#include "specfem/point.hpp" -#include "utilities/utilities.hpp" -#include -#include - -using specfem::utilities::is_close; - -// Use test-specific mesh utilities for coordinate generation -using namespace specfem::test::mesh_utilities; - -// Test fixture for 2D locate_point algorithms using tested mesh utilities -class LocatePoint2D : public ::testing::Test { -protected: - struct ElementGeometry { - Kokkos::View - global_coords; - Kokkos::View index_mapping; - Kokkos::View - control_nodes; - int nspec; - int ngllx; - int ngllz; - int ngnod; - int nglob; - type_real xmin, xmax, zmin, zmax; - }; - - void SetUp() override {} - - void TearDown() override {} - - // Helper to create unit square coordinates programmatically - std::vector > > - create_unit_square(int ngll, double xmin = -1.0, double xmax = 1.0, - double zmin = -1.0, double zmax = 1.0) { - std::vector > coords; - for (int iz = 0; iz < ngll; iz++) { - for (int ix = 0; ix < ngll; ix++) { - double x = xmin + (xmax - xmin) * ix / (ngll - 1); - double z = zmin + (zmax - zmin) * iz / (ngll - 1); - coords.push_back({ x, z }); - } +#include "locate_point_fixture.hpp" + +std::vector > > +LocatePoint2D::create_unit_square(int ngll, double xmin, double xmax, + double zmin, double zmax) { + std::vector > coords; + for (int iz = 0; iz < ngll; iz++) { + for (int ix = 0; ix < ngll; ix++) { + double x = xmin + (xmax - xmin) * ix / (ngll - 1); + double z = zmin + (zmax - zmin) * iz / (ngll - 1); + coords.push_back({ x, z }); } - return { coords }; } - - // Helper to create control nodes for 4-node or 9-node elements - std::vector > > - create_control_nodes(int ngnod, double xmin = 0.0, double xmax = 1.0, - double zmin = 0.0, double zmax = 1.0) { - std::vector > nodes; - - if (ngnod == 4) { - // 4-node quadrilateral: corners only - nodes = { - { xmin, zmin }, // Bottom-left - { xmax, zmin }, // Bottom-right - { xmax, zmax }, // Top-right - { xmin, zmax } // Top-left - }; - } else if (ngnod == 9) { - // 9-node quadrilateral: corners + edge midpoints + center - double xmid = (xmin + xmax) / 2.0; - double zmid = (zmin + zmax) / 2.0; - nodes = { - { xmin, zmin }, // 0: Bottom-left corner - { xmax, zmin }, // 1: Bottom-right corner - { xmax, zmax }, // 2: Top-right corner - { xmin, zmax }, // 3: Top-left corner - { xmid, zmin }, // 4: Bottom edge midpoint - { xmax, zmid }, // 5: Right edge midpoint - { xmid, zmax }, // 6: Top edge midpoint - { xmin, zmid }, // 7: Left edge midpoint - { xmid, zmid } // 8: Center - }; - } else { - throw std::runtime_error("Unsupported ngnod: " + std::to_string(ngnod)); - } - - return { nodes }; + return { coords }; +} +std::vector > > +LocatePoint2D::create_control_nodes(int ngnod, double xmin, double xmax, + double zmin, double zmax) { + std::vector > nodes; + + if (ngnod == 4) { + // 4-node quadrilateral: corners only + nodes = { + { xmin, zmin }, // Bottom-left + { xmax, zmin }, // Bottom-right + { xmax, zmax }, // Top-right + { xmin, zmax } // Top-left + }; + } else if (ngnod == 9) { + // 9-node quadrilateral: corners + edge midpoints + center + double xmid = (xmin + xmax) / 2.0; + double zmid = (zmin + zmax) / 2.0; + nodes = { + { xmin, zmin }, // 0: Bottom-left corner + { xmax, zmin }, // 1: Bottom-right corner + { xmax, zmax }, // 2: Top-right corner + { xmin, zmax }, // 3: Top-left corner + { xmid, zmin }, // 4: Bottom edge midpoint + { xmax, zmid }, // 5: Right edge midpoint + { xmid, zmax }, // 6: Top edge midpoint + { xmin, zmid }, // 7: Left edge midpoint + { xmid, zmid } // 8: Center + }; + } else { + throw std::runtime_error("Unsupported ngnod: " + std::to_string(ngnod)); } - // Helper to create coordinate array from element corners and ngll points - HostView4d create_coordinate_array( - const std::vector > > - &element_coords) { - int nspec = element_coords.size(); - int ngll = std::sqrt(element_coords[0].size()); + return { nodes }; +} +HostView4d LocatePoint2D::create_coordinate_array( + const std::vector > > + &element_coords) { + int nspec = element_coords.size(); + int ngll = std::sqrt(element_coords[0].size()); - HostView4d coords("coords", nspec, ngll, ngll, 2); + HostView4d coords("coords", nspec, ngll, ngll, 2); - for (int ispec = 0; ispec < nspec; ispec++) { - int idx = 0; - for (int iz = 0; iz < ngll; iz++) { - for (int ix = 0; ix < ngll; ix++) { - coords(ispec, iz, ix, 0) = element_coords[ispec][idx].first; // x - coords(ispec, iz, ix, 1) = element_coords[ispec][idx].second; // z - idx++; - } + for (int ispec = 0; ispec < nspec; ispec++) { + int idx = 0; + for (int iz = 0; iz < ngll; iz++) { + for (int ix = 0; ix < ngll; ix++) { + coords(ispec, iz, ix, 0) = element_coords[ispec][idx].first; // x + coords(ispec, iz, ix, 1) = element_coords[ispec][idx].second; // z + idx++; } } - return coords; } - - // Create element geometry using tested utility functions - ElementGeometry create_element_geometry( - const std::vector > > - &element_coords, - const std::vector > > - &control_coords) { - - ElementGeometry geom; - geom.nspec = element_coords.size(); - geom.ngllx = std::sqrt(element_coords[0].size()); - geom.ngllz = geom.ngllx; - geom.ngnod = control_coords[0].size(); - int ngllxz = geom.ngllx * geom.ngllz; - - // Create coordinate array - auto coords_double = create_coordinate_array(element_coords); - - // Use tested utility functions to replicate assign_numbering logic - auto points = flatten_coordinates(coords_double); - auto sorted_points = points; - sort_points_spatially(sorted_points); - type_real tolerance = - compute_spatial_tolerance(sorted_points, geom.nspec, ngllxz); - int nglob = assign_global_numbering(sorted_points, tolerance); - auto reordered_points = reorder_to_original_layout(sorted_points); - auto bbox = compute_bounding_box(reordered_points); - - // Use the create_coordinate_arrays function to get proper index_mapping and - // coordinates - auto [index_mapping, global_coords, nglob_actual] = - create_coordinate_arrays(reordered_points, geom.nspec, geom.ngllx, - nglob); - - // Assign to geometry structure - geom.index_mapping = index_mapping; - geom.global_coords = global_coords; - geom.nglob = nglob_actual; - - // Set up control nodes - geom.control_nodes = - Kokkos::View( - "control_nodes", 2, geom.nspec, geom.ngnod); - for (int ispec = 0; ispec < geom.nspec; ispec++) { - for (int inode = 0; inode < geom.ngnod; inode++) { - geom.control_nodes(0, ispec, inode) = - control_coords[ispec][inode].first; - geom.control_nodes(1, ispec, inode) = - control_coords[ispec][inode].second; - } + return coords; +} +LocatePoint2D::ElementGeometry LocatePoint2D::create_element_geometry( + const std::vector > > &element_coords, + const std::vector > > + &control_coords) { + + ElementGeometry geom; + geom.nspec = element_coords.size(); + geom.ngllx = std::sqrt(element_coords[0].size()); + geom.ngllz = geom.ngllx; + geom.ngnod = control_coords[0].size(); + int ngllxz = geom.ngllx * geom.ngllz; + + // Create coordinate array + auto coords_double = create_coordinate_array(element_coords); + + // Use tested utility functions to replicate assign_numbering logic + auto points = flatten_coordinates(coords_double); + auto sorted_points = points; + sort_points_spatially(sorted_points); + type_real tolerance = + compute_spatial_tolerance(sorted_points, geom.nspec, ngllxz); + int nglob = assign_global_numbering(sorted_points, tolerance); + auto reordered_points = reorder_to_original_layout(sorted_points); + auto bbox = compute_bounding_box(reordered_points); + + // Use the create_coordinate_arrays function to get proper index_mapping and + // coordinates + auto [index_mapping, global_coords, nglob_actual] = + create_coordinate_arrays(reordered_points, geom.nspec, geom.ngllx, nglob); + + // Assign to geometry structure + geom.index_mapping = index_mapping; + geom.global_coords = global_coords; + geom.nglob = nglob_actual; + + // Set up control nodes + geom.control_nodes = + Kokkos::View( + "control_nodes", 2, geom.nspec, geom.ngnod); + for (int ispec = 0; ispec < geom.nspec; ispec++) { + for (int inode = 0; inode < geom.ngnod; inode++) { + geom.control_nodes(0, ispec, inode) = control_coords[ispec][inode].first; + geom.control_nodes(1, ispec, inode) = control_coords[ispec][inode].second; } - - // Set bounding box - geom.xmin = bbox.xmin; - geom.xmax = bbox.xmax; - geom.zmin = bbox.zmin; - geom.zmax = bbox.zmax; - - return geom; - } - - // Create a single unit square element [0,1] x [0,1] with 2x2 GLL points - ElementGeometry create_single_unit_square_2x2() { - auto element_coords = create_unit_square(2, 0.0, 1.0, 0.0, 1.0); - auto control_coords = create_control_nodes(4, 0.0, 1.0, 0.0, 1.0); - return create_element_geometry(element_coords, control_coords); - } - - // Create two adjacent elements [0,0.5]x[0,0.5] and [0.5,1]x[0,0.5] with 2x2 - // GLL points - ElementGeometry create_two_adjacent_elements_2x2() { - std::vector > > element_coords = { - create_unit_square(2, 0.0, 0.5, 0.0, 0.5)[0], // Left element - create_unit_square(2, 0.5, 1.0, 0.0, 0.5)[0] // Right element (shares edge - // at x=0.5) - }; - auto control_coords = std::vector > >{ - create_control_nodes(4, 0.0, 0.5, 0.0, 0.5)[0], // Left element - create_control_nodes(4, 0.5, 1.0, 0.0, 0.5)[0] // Right element - }; - return create_element_geometry(element_coords, control_coords); - } - - // Create 2x2 grid of elements with 2x2 GLL points each - ElementGeometry create_2x2_grid_elements_2x2() { - std::vector > > element_coords = { - create_unit_square(2, 0.0, 1.0, 0.0, 1.0)[0], // Element 0: bottom-left - create_unit_square(2, 1.0, 2.0, 0.0, 1.0)[0], // Element 1: bottom-right - create_unit_square(2, 0.0, 1.0, 1.0, 2.0)[0], // Element 2: top-left - create_unit_square(2, 1.0, 2.0, 1.0, 2.0)[0] // Element 3: top-right - }; - auto control_coords = std::vector > >{ - create_control_nodes(4, 0.0, 1.0, 0.0, 1.0)[0], // Element 0 - create_control_nodes(4, 1.0, 2.0, 0.0, 1.0)[0], // Element 1 - create_control_nodes(4, 0.0, 1.0, 1.0, 2.0)[0], // Element 2 - create_control_nodes(4, 1.0, 2.0, 1.0, 2.0)[0] // Element 3 - }; - return create_element_geometry(element_coords, control_coords); - } - - // Create a single unit square element [0,1] x [0,1] with 5x5 GLL points - ElementGeometry create_single_unit_square_5x5() { - auto element_coords = create_unit_square(5, 0.0, 1.0, 0.0, 1.0); - auto control_coords = create_control_nodes(4, 0.0, 1.0, 0.0, 1.0); - return create_element_geometry(element_coords, control_coords); - } - - // Create a single unit square element [0,1] x [0,1] with 2x2 GLL points and 9 - // control nodes - ElementGeometry create_single_unit_square_2x2_9node() { - auto element_coords = create_unit_square(2, 0.0, 1.0, 0.0, 1.0); - auto control_coords = create_control_nodes(9, 0.0, 1.0, 0.0, 1.0); - return create_element_geometry(element_coords, control_coords); - } - - // Create a single unit square element [0,1] x [0,1] with 5x5 GLL points and 9 - // control nodes - ElementGeometry create_single_unit_square_5x5_9node() { - auto element_coords = create_unit_square(5, 0.0, 1.0, 0.0, 1.0); - auto control_coords = create_control_nodes(9, 0.0, 1.0, 0.0, 1.0); - return create_element_geometry(element_coords, control_coords); - } - - // Create two adjacent elements with 5x5 GLL points - ElementGeometry create_two_adjacent_elements_5x5() { - std::vector > > element_coords = { - create_unit_square(5, 0.0, 0.5, 0.0, 0.5)[0], // Left element - create_unit_square(5, 0.5, 1.0, 0.0, 0.5)[0] // Right element (shares edge - // at x=0.5) - }; - auto control_coords = std::vector > >{ - create_control_nodes(4, 0.0, 0.5, 0.0, 0.5)[0], // Left element - create_control_nodes(4, 0.5, 1.0, 0.0, 0.5)[0] // Right element - }; - return create_element_geometry(element_coords, control_coords); } -}; - -// Test locate_point core functionality with single unit square -TEST_F(LocatePoint2D, CoreUnitSquare) { - auto geom = create_single_unit_square_2x2(); - - // Test point at center of unit square (0.5, 0.5) - // Should map to local coordinates (0, 0) - specfem::point::global_coordinates target = { - 0.5, 0.5 - }; - - auto result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - // Should find element 0 with local coordinates near (0, 0) for center point - EXPECT_EQ(result.ispec, 0); - EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) - << expected_got(0.0, result.xi); - EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) - << expected_got(0.0, result.gamma); - // Test corner point (0, 0) should map to (-1, -1) - target = { 0.0, 0.0 }; - result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); + // Set bounding box + geom.xmin = bbox.xmin; + geom.xmax = bbox.xmax; + geom.zmin = bbox.zmin; + geom.zmax = bbox.zmax; - EXPECT_EQ(result.ispec, 0); - EXPECT_TRUE(is_close(result.xi, type_real{ -1.0 })) - << expected_got(-1.0, result.xi); - EXPECT_TRUE(is_close(result.gamma, type_real{ -1.0 })) - << expected_got(-1.0, result.gamma); - - // Test corner point (1, 1) should map to (1, 1) - target = { 1.0, 1.0 }; - result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - EXPECT_EQ(result.ispec, 0); - EXPECT_TRUE(is_close(result.xi, type_real{ 1.0 })) - << expected_got(1.0, result.xi); - EXPECT_TRUE(is_close(result.gamma, type_real{ 1.0 })) - << expected_got(1.0, result.gamma); + return geom; } -// Test locate_point with two adjacent elements -TEST_F(LocatePoint2D, LocatePoint2DCoreTwoAdjacentElements) { - auto geom = create_two_adjacent_elements_2x2(); - - // Test point in left element (0.25, 0.25) - specfem::point::global_coordinates target = { - 0.25, 0.25 - }; - - auto result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - EXPECT_EQ(result.ispec, 0); - EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) - << expected_got(0.0, result.xi); - EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) - << expected_got(0.0, result.gamma); - - // Test point in right element (0.75, 0.25) - target = { 0.75, 0.25 }; - result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - EXPECT_EQ(result.ispec, 1); - EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) - << expected_got(0.0, result.xi); - EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) - << expected_got(0.0, result.gamma); - - // Test shared edge point (0.5, 0.25) - should find one of the elements - target = { 0.5, 0.25 }; - result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - EXPECT_TRUE(result.ispec == 0 || - result.ispec == 1); // Either element is valid - EXPECT_TRUE(std::abs(std::abs(result.xi) - 1.0) < 1e-6); // Should be at edge - // (±1) +// Create a single unit square element [0,1] x [0,1] with 2x2 GLL points +LocatePoint2D::ElementGeometry LocatePoint2D::create_single_unit_square_2x2() { + auto element_coords = + LocatePoint2D::create_unit_square(2, 0.0, 1.0, 0.0, 1.0); + auto control_coords = + LocatePoint2D::create_control_nodes(4, 0.0, 1.0, 0.0, 1.0); + return LocatePoint2D::create_element_geometry(element_coords, control_coords); } - -// Test locate_point with 2x2 grid of elements -TEST_F(LocatePoint2D, Core2x2Grid) { - auto geom = create_2x2_grid_elements_2x2(); - - // Test points in each element - - // Element 0: bottom-left (0.5, 0.5) - specfem::point::global_coordinates target = { - 0.5, 0.5 +// Create two adjacent elements [0,0.5]x[0,0.5] and [0.5,1]x[0,0.5] with 2x2 +// GLL points +LocatePoint2D::ElementGeometry +LocatePoint2D::create_two_adjacent_elements_2x2() { + std::vector > > element_coords = { + LocatePoint2D::create_unit_square(2, 0.0, 0.5, 0.0, 0.5)[0], // Left element + LocatePoint2D::create_unit_square(2, 0.5, 1.0, 0.0, 0.5)[0] // Right element + // (shares edge + // at x=0.5) }; - auto result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - EXPECT_EQ(result.ispec, 0); - - // Element 1: bottom-right (1.5, 0.5) - target = { 1.5, 0.5 }; - result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - EXPECT_EQ(result.ispec, 1); - - // Element 2: top-left (0.5, 1.5) - target = { 0.5, 1.5 }; - result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - EXPECT_EQ(result.ispec, 2); - - // Element 3: top-right (1.5, 1.5) - target = { 1.5, 1.5 }; - result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - EXPECT_EQ(result.ispec, 3); - - // Test shared corner point (1, 1) - should find one of the elements that - // share this corner - target = { 1.0, 1.0 }; - result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - EXPECT_TRUE(result.ispec >= 0 && result.ispec <= 3); // Should find one of the - // four elements - // At corner, should have local coordinates (±1, ±1) depending on element - EXPECT_TRUE(std::abs(std::abs(result.xi) - 1.0) < 1e-6); - EXPECT_TRUE(std::abs(std::abs(result.gamma) - 1.0) < 1e-6); -} - -// Test error case: point outside mesh -TEST_F(LocatePoint2D, CoreOutsideMesh) { - auto geom = create_single_unit_square_2x2(); - - // Point outside mesh should throw exception - specfem::point::global_coordinates target = { - 2.0, 2.0 + auto control_coords = std::vector > >{ + LocatePoint2D::create_control_nodes(4, 0.0, 0.5, 0.0, 0.5)[0], // Left + // element + LocatePoint2D::create_control_nodes(4, 0.5, 1.0, 0.0, 0.5)[0] // Right + // element }; - - EXPECT_THROW(specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, - geom.control_nodes, geom.ngnod, geom.ngllx), - std::runtime_error); -} - -// Helper function tests - testing individual components of locate_point_core - -// Test rough_location helper function -TEST_F(LocatePoint2D, RoughLocationSimple) { - auto geom = create_two_adjacent_elements_2x2(); - - // Test point close to (0.1, 0.1) - should find element 0, point (0,0) - specfem::point::global_coordinates - test_point = { 0.1, 0.1 }; - - auto [ix, iz, ispec] = specfem::algorithms::locate_point_impl::rough_location( - test_point, geom.global_coords); - - EXPECT_EQ(ispec, 0); - EXPECT_EQ(ix, 0); - EXPECT_EQ(iz, 0); - - // Test point close to (0.75, 0.25) - should find element 1 (right element) - // Two adjacent elements: left [0,0.5]x[0,0.5] and right [0.5,1]x[0,0.5] - test_point = { 0.75, 0.25 }; - std::tie(ix, iz, ispec) = - specfem::algorithms::locate_point_impl::rough_location( - test_point, geom.global_coords); - - // Should find element 1 (right element) - but rough_location may find either - // element since they share the edge at x=0.5. The original test also had this - // ambiguity. - EXPECT_TRUE(ispec == 0 || ispec == 1); -} - -// Test get_best_candidates helper function -TEST_F(LocatePoint2D, GetBestCandidatesSimple) { - auto geom = create_two_adjacent_elements_2x2(); - - // Test with element 0 - should return both elements 0 and 1 since they share - // nodes - auto candidates = specfem::algorithms::locate_point_impl::get_best_candidates( - 0, geom.index_mapping); - - // Should return both elements since they share edge nodes - EXPECT_EQ(candidates.size(), 2); - EXPECT_EQ(candidates[0], 0); // Initial guess element - EXPECT_EQ(candidates[1], 1); // Neighboring element + return LocatePoint2D::create_element_geometry(element_coords, control_coords); } - -// Test get_local_coordinates helper function -TEST_F(LocatePoint2D, GetLocalCoordinatesUnitSquare) { - auto geom = create_single_unit_square_2x2(); - - // Create control node coordinates view for the single element - const int ngnod = 4; - const Kokkos::View< - specfem::point::global_coordinates *, - Kokkos::HostSpace> - coorg("coorg", ngnod); - - // Unit square control nodes [0,1] x [0,1] - coorg(0) = { 0.0, 0.0 }; // Bottom-left - coorg(1) = { 1.0, 0.0 }; // Bottom-right - coorg(2) = { 1.0, 1.0 }; // Top-right - coorg(3) = { 0.0, 1.0 }; // Top-left - - // Test point at center of unit square (0.5, 0.5) - // Should map to local coordinates (0, 0) - specfem::point::global_coordinates target = { - 0.5, 0.5 +// Create 2x2 grid of elements with 2x2 GLL points each +LocatePoint2D::ElementGeometry LocatePoint2D::create_2x2_grid_elements_2x2() { + std::vector > > element_coords = { + LocatePoint2D::create_unit_square(2, 0.0, 1.0, 0.0, 1.0)[0], // Element 0: + // bottom-left + LocatePoint2D::create_unit_square(2, 1.0, 2.0, 0.0, 1.0)[0], // Element 1: + // bottom-right + LocatePoint2D::create_unit_square(2, 0.0, 1.0, 1.0, 2.0)[0], // Element 2: + // top-left + LocatePoint2D::create_unit_square(2, 1.0, 2.0, 1.0, 2.0)[0] // Element 3: + // top-right }; - - type_real xi_initial = 0.1; // Start with slight offset - type_real gamma_initial = 0.1; - - auto [xi_final, gamma_final] = - specfem::algorithms::locate_point_impl::get_local_coordinates( - target, coorg, xi_initial, gamma_initial); - - // For a unit square, center point (0.5, 0.5) should map to (0, 0) in - // reference coords - EXPECT_TRUE(is_close(xi_final, type_real{ 0.0 })) - << expected_got(0.0, xi_final); - EXPECT_TRUE(is_close(gamma_final, type_real{ 0.0 })) - << expected_got(0.0, gamma_final); - - // Test corner point (0, 0) should map to (-1, -1) - target = { 0.0, 0.0 }; - std::tie(xi_final, gamma_final) = - specfem::algorithms::locate_point_impl::get_local_coordinates( - target, coorg, 0.0, 0.0); - - EXPECT_TRUE(is_close(xi_final, type_real{ -1.0 })) - << expected_got(-1.0, xi_final); - EXPECT_TRUE(is_close(gamma_final, type_real{ -1.0 })) - << expected_got(-1.0, gamma_final); - - // Test corner point (1, 1) should map to (1, 1) - target = { 1.0, 1.0 }; - std::tie(xi_final, gamma_final) = - specfem::algorithms::locate_point_impl::get_local_coordinates( - target, coorg, 0.0, 0.0); - - EXPECT_TRUE(is_close(xi_final, type_real{ 1.0 })) - << expected_got(1.0, xi_final); - EXPECT_TRUE(is_close(gamma_final, type_real{ 1.0 })) - << expected_got(1.0, gamma_final); -} - -// Test locate_point with 5x5 GLL points (realistic spectral element resolution) -TEST_F(LocatePoint2D, Core5x5UnitSquare) { - auto geom = create_single_unit_square_5x5(); - - // Test point at center of unit square (0.5, 0.5) - // Should map to local coordinates (0, 0) - specfem::point::global_coordinates target = { - 0.5, 0.5 + auto control_coords = std::vector > >{ + LocatePoint2D::create_control_nodes(4, 0.0, 1.0, 0.0, 1.0)[0], // Element 0 + LocatePoint2D::create_control_nodes(4, 1.0, 2.0, 0.0, 1.0)[0], // Element 1 + LocatePoint2D::create_control_nodes(4, 0.0, 1.0, 1.0, 2.0)[0], // Element 2 + LocatePoint2D::create_control_nodes(4, 1.0, 2.0, 1.0, 2.0)[0] // Element 3 }; - - auto result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - // Should find element 0 with local coordinates near (0, 0) for center point - EXPECT_EQ(result.ispec, 0); - EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) - << expected_got(0.0, result.xi); - EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) - << expected_got(0.0, result.gamma); - - // Test corner point (0, 0) should map to (-1, -1) - target = { 0.0, 0.0 }; - result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - EXPECT_EQ(result.ispec, 0); - EXPECT_TRUE(is_close(result.xi, type_real{ -1.0 })) - << expected_got(-1.0, result.xi); - EXPECT_TRUE(is_close(result.gamma, type_real{ -1.0 })) - << expected_got(-1.0, result.gamma); + return LocatePoint2D::create_element_geometry(element_coords, control_coords); } - -// Test locate_point with 9-node control elements -TEST_F(LocatePoint2D, Core9NodeElement) { - auto geom = create_single_unit_square_2x2_9node(); - - // Test point at center of unit square (0.5, 0.5) - // Should map to local coordinates (0, 0) - specfem::point::global_coordinates target = { - 0.5, 0.5 - }; - - auto result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - // Should find element 0 with local coordinates near (0, 0) for center point - EXPECT_EQ(result.ispec, 0); - EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) - << expected_got(0.0, result.xi); - EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) - << expected_got(0.0, result.gamma); +// Create a single unit square element [0,1] x [0,1] with 5x5 GLL points +LocatePoint2D::ElementGeometry LocatePoint2D::create_single_unit_square_5x5() { + auto element_coords = + LocatePoint2D::create_unit_square(5, 0.0, 1.0, 0.0, 1.0); + auto control_coords = + LocatePoint2D::create_control_nodes(4, 0.0, 1.0, 0.0, 1.0); + return LocatePoint2D::create_element_geometry(element_coords, control_coords); } - -// Test locate_point with 5x5 GLL points AND 9-node control elements (most -// realistic case) -TEST_F(LocatePoint2D, Core5x5With9Node) { - auto geom = create_single_unit_square_5x5_9node(); - - // Test point at center of unit square (0.5, 0.5) - // Should map to local coordinates (0, 0) - specfem::point::global_coordinates target = { - 0.5, 0.5 - }; - - auto result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - // Should find element 0 with local coordinates near (0, 0) for center point - EXPECT_EQ(result.ispec, 0); - EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) - << expected_got(0.0, result.xi); - EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) - << expected_got(0.0, result.gamma); - - // Test quarter point (0.25, 0.25) should map to (-0.5, -0.5) - target = { 0.25, 0.25 }; - result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - EXPECT_EQ(result.ispec, 0); - EXPECT_TRUE(is_close(result.xi, type_real{ -0.5 })) - << expected_got(-0.5, result.xi); - EXPECT_TRUE(is_close(result.gamma, type_real{ -0.5 })) - << expected_got(-0.5, result.gamma); +// Create a single unit square element [0,1] x [0,1] with 2x2 GLL points and 9 +// control nodes +LocatePoint2D::ElementGeometry +LocatePoint2D::create_single_unit_square_2x2_9node() { + auto element_coords = + LocatePoint2D::create_unit_square(2, 0.0, 1.0, 0.0, 1.0); + auto control_coords = + LocatePoint2D::create_control_nodes(9, 0.0, 1.0, 0.0, 1.0); + return LocatePoint2D::create_element_geometry(element_coords, control_coords); } -// Test locate_point with two adjacent 5x5 elements -TEST_F(LocatePoint2D, LocatePoint2DCoreTwoAdjacent5x5Elements) { - auto geom = create_two_adjacent_elements_5x5(); - - // Test point in left element (0.25, 0.25) - specfem::point::global_coordinates target = { - 0.25, 0.25 - }; - - auto result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - EXPECT_EQ(result.ispec, 0); - EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) - << expected_got(0.0, result.xi); - EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) - << expected_got(0.0, result.gamma); - - // Test point in right element (0.75, 0.25) - target = { 0.75, 0.25 }; - result = specfem::algorithms::locate_point_impl::locate_point_core( - target, geom.global_coords, geom.index_mapping, geom.control_nodes, - geom.ngnod, geom.ngllx); - - EXPECT_EQ(result.ispec, 1); - EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) - << expected_got(0.0, result.xi); - EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) - << expected_got(0.0, result.gamma); +// Create a single unit square element [0,1] x [0,1] with 5x5 GLL points and 9 +// control nodes +LocatePoint2D::ElementGeometry +LocatePoint2D::create_single_unit_square_5x5_9node() { + auto element_coords = + LocatePoint2D::create_unit_square(5, 0.0, 1.0, 0.0, 1.0); + auto control_coords = + LocatePoint2D::create_control_nodes(9, 0.0, 1.0, 0.0, 1.0); + return LocatePoint2D::create_element_geometry(element_coords, control_coords); } -int main(int argc, char *argv[]) { - ::testing::InitGoogleTest(&argc, argv); - ::testing::AddGlobalTestEnvironment(new MPIEnvironment); - ::testing::AddGlobalTestEnvironment(new KokkosEnvironment); - return RUN_ALL_TESTS(); +// Create two adjacent elements with 5x5 GLL points +LocatePoint2D::ElementGeometry +LocatePoint2D::create_two_adjacent_elements_5x5() { + std::vector > > element_coords = { + LocatePoint2D::create_unit_square(5, 0.0, 0.5, 0.0, 0.5)[0], // Left element + LocatePoint2D::create_unit_square(5, 0.5, 1.0, 0.0, 0.5)[0] // Right element + // (shares edge + // at x=0.5) + }; + auto control_coords = std::vector > >{ + LocatePoint2D::create_control_nodes(4, 0.0, 0.5, 0.0, 0.5)[0], // Left + // element + LocatePoint2D::create_control_nodes(4, 0.5, 1.0, 0.0, 0.5)[0] // Right + // element + }; + return LocatePoint2D::create_element_geometry(element_coords, control_coords); } diff --git a/tests/unit-tests/algorithms/dim2/locate_point_fixture.hpp b/tests/unit-tests/algorithms/dim2/locate_point_fixture.hpp new file mode 100644 index 000000000..f7c0bfd33 --- /dev/null +++ b/tests/unit-tests/algorithms/dim2/locate_point_fixture.hpp @@ -0,0 +1,83 @@ +#pragma once +#include "../../mesh_utilities/mapping.hpp" +#include "../../test_macros.hpp" +#include "Kokkos_Environment.hpp" +#include "MPI_environment.hpp" +#include "algorithms/locate_point.hpp" +#include "algorithms/locate_point_impl.hpp" +#include "kokkos_abstractions.h" +#include "specfem/point.hpp" +#include "utilities/utilities.hpp" +#include +#include + +// Use test-specific mesh utilities for coordinate generation +using namespace specfem::test::mesh_utilities; + +// Test fixture for 2D locate_point algorithms using tested mesh utilities +class LocatePoint2D : public ::testing::Test { +protected: + struct ElementGeometry { + Kokkos::View + global_coords; + Kokkos::View index_mapping; + Kokkos::View + control_nodes; + int nspec; + int ngllx; + int ngllz; + int ngnod; + int nglob; + type_real xmin, xmax, zmin, zmax; + }; + + void SetUp() override {} + + void TearDown() override {} + + // Helper to create unit square coordinates programmatically + std::vector > > + create_unit_square(int ngll, double xmin = -1.0, double xmax = 1.0, + double zmin = -1.0, double zmax = 1.0); + + // Helper to create control nodes for 4-node or 9-node elements + std::vector > > + create_control_nodes(int ngnod, double xmin = 0.0, double xmax = 1.0, + double zmin = 0.0, double zmax = 1.0); + + // Helper to create coordinate array from element corners and ngll points + HostView4d create_coordinate_array( + const std::vector > > + &element_coords); + + // Create element geometry using tested utility functions + ElementGeometry create_element_geometry( + const std::vector > > + &element_coords, + const std::vector > > + &control_coords); + + // Create a single unit square element [0,1] x [0,1] with 2x2 GLL points + ElementGeometry create_single_unit_square_2x2(); + + // Create two adjacent elements [0,0.5]x[0,0.5] and [0.5,1]x[0,0.5] with 2x2 + // GLL points + ElementGeometry create_two_adjacent_elements_2x2(); + + // Create 2x2 grid of elements with 2x2 GLL points each + ElementGeometry create_2x2_grid_elements_2x2(); + + // Create a single unit square element [0,1] x [0,1] with 5x5 GLL points + ElementGeometry create_single_unit_square_5x5(); + + // Create a single unit square element [0,1] x [0,1] with 2x2 GLL points and 9 + // control nodes + ElementGeometry create_single_unit_square_2x2_9node(); + + // Create a single unit square element [0,1] x [0,1] with 5x5 GLL points and 9 + // control nodes + ElementGeometry create_single_unit_square_5x5_9node(); + + // Create two adjacent elements with 5x5 GLL points + ElementGeometry create_two_adjacent_elements_5x5(); +}; diff --git a/tests/unit-tests/algorithms/dim2/locate_point_on_edge_test.cpp b/tests/unit-tests/algorithms/dim2/locate_point_on_edge_test.cpp new file mode 100644 index 000000000..60f2b3f17 --- /dev/null +++ b/tests/unit-tests/algorithms/dim2/locate_point_on_edge_test.cpp @@ -0,0 +1,126 @@ +#include "locate_point_fixture.hpp" + +using specfem::utilities::is_close; + +void populate_element_gcoord_array( + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> &coorg, + const Kokkos::View + &control_node_coord, + const int &ispec) { + const int ngnod = coorg.extent(0); + for (int i = 0; i < ngnod; i++) { + coorg(i).x = control_node_coord(0, ispec, i); + coorg(i).z = control_node_coord(1, ispec, i); + } +} + +// Test locate_point core functionality with single unit square +TEST_F(LocatePoint2D, LocateEdgeOnCoreUnitSquare) { + auto geom = create_single_unit_square_2x2(); + + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> + coorg("coorg", geom.ngnod); + populate_element_gcoord_array(coorg, geom.control_nodes, 0); + + // Test point at center of each edge + // Should map to local edge coordinate (0) + for (auto [side, target] : + std::vector > >{ + { specfem::mesh_entity::type::bottom, { 0.5, 0.0 } }, // Bottom edge + // center + { specfem::mesh_entity::type::right, { 1.0, 0.5 } }, // Right edge + // center + { specfem::mesh_entity::type::top, { 0.5, 1.0 } }, // Top edge center + { specfem::mesh_entity::type::left, { 0.0, 0.5 } } // Left edge + // center + }) { + + auto result = + specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + target, coorg, side, 0); + + // Should find element 0 with local coordinates near (0, ±1) or (±1, 0) + EXPECT_TRUE(is_close(result.first, type_real{ 0.0 })) + << expected_got(0.0, result.first); + EXPECT_TRUE(result.second); // inside edge (not out-of-bounds) + } + + // Test corner point (0, 0) should map to {left: -1, bottom: -1} + specfem::point::global_coordinates target = { + 0.0, 0.0 + }; + auto result = + specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + target, coorg, specfem::mesh_entity::type::bottom, 0); + + EXPECT_TRUE(is_close(result.first, type_real{ -1 })) + << expected_got(0.0, result.first); + EXPECT_TRUE(result.second); // inside edge (not out-of-bounds) + + result = specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + target, coorg, specfem::mesh_entity::type::left, 0); + EXPECT_TRUE(is_close(result.first, type_real{ -1 })) + << expected_got(0.0, result.first); + EXPECT_TRUE(result.second); // inside edge (not out-of-bounds) + + // Test corner point (1, 1) should map to {top: 1, right: 1} + target = { 1.0, 1.0 }; + result = specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + target, coorg, specfem::mesh_entity::type::right, 0); + EXPECT_TRUE(is_close(result.first, type_real{ 1 })) + << expected_got(0.0, result.first); + EXPECT_TRUE(result.second); // inside edge (not out-of-bounds) + result = specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + target, coorg, specfem::mesh_entity::type::top, 0); + EXPECT_TRUE(is_close(result.first, type_real{ 1 })) + << expected_got(0.0, result.first); + EXPECT_TRUE(result.second); // inside edge (not out-of-bounds) +} + +// Test error case: point outside mesh +TEST_F(LocatePoint2D, LocateEdgeOnCoreOutsideMesh) { + auto geom = create_single_unit_square_2x2(); + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> + coorg("coorg", geom.ngnod); + populate_element_gcoord_array(coorg, geom.control_nodes, 0); + + // Point away from edge (but distance minimized inside) should throw exception + specfem::point::global_coordinates target = { + 0.5, 0.5 + }; + + for (auto side : std::vector{ + specfem::mesh_entity::type::bottom, + specfem::mesh_entity::type::right, specfem::mesh_entity::type::top, + specfem::mesh_entity::type::left }) { + // target is center of element. Distance minimized on each edge at center, + // so exception should be thrown + EXPECT_THROW( + specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + target, coorg, side, 0), + std::runtime_error); + } + + // Test corner point (1.5, -0.5) should map to (2, -2), out-of-bounds + // for bottom, local coord will clamp to xi = 1, for right, gamma = -1 + target = { 1.5, -0.5 }; + auto result = + specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + target, coorg, specfem::mesh_entity::type::right, 0); + EXPECT_TRUE(is_close(result.first, type_real{ -1 })) + << expected_got(0.0, result.first); + EXPECT_FALSE(result.second); // inside edge (not out-of-bounds) + result = specfem::algorithms::locate_point_impl::get_local_edge_coordinate( + target, coorg, specfem::mesh_entity::type::bottom, 0); + EXPECT_TRUE(is_close(result.first, type_real{ 1 })) + << expected_got(0.0, result.first); + EXPECT_FALSE(result.second); // inside edge (not out-of-bounds) +} diff --git a/tests/unit-tests/algorithms/dim2/locate_point_test.cpp b/tests/unit-tests/algorithms/dim2/locate_point_test.cpp new file mode 100644 index 000000000..05c80f418 --- /dev/null +++ b/tests/unit-tests/algorithms/dim2/locate_point_test.cpp @@ -0,0 +1,392 @@ +#include "locate_point_fixture.hpp" + +using specfem::utilities::is_close; + +// Test locate_point core functionality with single unit square +TEST_F(LocatePoint2D, CoreUnitSquare) { + auto geom = create_single_unit_square_2x2(); + + // Test point at center of unit square (0.5, 0.5) + // Should map to local coordinates (0, 0) + specfem::point::global_coordinates target = { + 0.5, 0.5 + }; + + auto result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + // Should find element 0 with local coordinates near (0, 0) for center point + EXPECT_EQ(result.ispec, 0); + EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) + << expected_got(0.0, result.xi); + EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) + << expected_got(0.0, result.gamma); + + // Test corner point (0, 0) should map to (-1, -1) + target = { 0.0, 0.0 }; + result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + EXPECT_EQ(result.ispec, 0); + EXPECT_TRUE(is_close(result.xi, type_real{ -1.0 })) + << expected_got(-1.0, result.xi); + EXPECT_TRUE(is_close(result.gamma, type_real{ -1.0 })) + << expected_got(-1.0, result.gamma); + + // Test corner point (1, 1) should map to (1, 1) + target = { 1.0, 1.0 }; + result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + EXPECT_EQ(result.ispec, 0); + EXPECT_TRUE(is_close(result.xi, type_real{ 1.0 })) + << expected_got(1.0, result.xi); + EXPECT_TRUE(is_close(result.gamma, type_real{ 1.0 })) + << expected_got(1.0, result.gamma); +} + +// Test locate_point with two adjacent elements +TEST_F(LocatePoint2D, LocatePoint2DCoreTwoAdjacentElements) { + auto geom = create_two_adjacent_elements_2x2(); + + // Test point in left element (0.25, 0.25) + specfem::point::global_coordinates target = { + 0.25, 0.25 + }; + + auto result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + EXPECT_EQ(result.ispec, 0); + EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) + << expected_got(0.0, result.xi); + EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) + << expected_got(0.0, result.gamma); + + // Test point in right element (0.75, 0.25) + target = { 0.75, 0.25 }; + result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + EXPECT_EQ(result.ispec, 1); + EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) + << expected_got(0.0, result.xi); + EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) + << expected_got(0.0, result.gamma); + + // Test shared edge point (0.5, 0.25) - should find one of the elements + target = { 0.5, 0.25 }; + result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + EXPECT_TRUE(result.ispec == 0 || + result.ispec == 1); // Either element is valid + EXPECT_TRUE(std::abs(std::abs(result.xi) - 1.0) < 1e-6); // Should be at edge + // (±1) +} + +// Test locate_point with 2x2 grid of elements +TEST_F(LocatePoint2D, Core2x2Grid) { + auto geom = create_2x2_grid_elements_2x2(); + + // Test points in each element + + // Element 0: bottom-left (0.5, 0.5) + specfem::point::global_coordinates target = { + 0.5, 0.5 + }; + auto result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + EXPECT_EQ(result.ispec, 0); + + // Element 1: bottom-right (1.5, 0.5) + target = { 1.5, 0.5 }; + result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + EXPECT_EQ(result.ispec, 1); + + // Element 2: top-left (0.5, 1.5) + target = { 0.5, 1.5 }; + result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + EXPECT_EQ(result.ispec, 2); + + // Element 3: top-right (1.5, 1.5) + target = { 1.5, 1.5 }; + result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + EXPECT_EQ(result.ispec, 3); + + // Test shared corner point (1, 1) - should find one of the elements that + // share this corner + target = { 1.0, 1.0 }; + result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + EXPECT_TRUE(result.ispec >= 0 && result.ispec <= 3); // Should find one of the + // four elements + // At corner, should have local coordinates (±1, ±1) depending on element + EXPECT_TRUE(std::abs(std::abs(result.xi) - 1.0) < 1e-6); + EXPECT_TRUE(std::abs(std::abs(result.gamma) - 1.0) < 1e-6); +} + +// Test error case: point outside mesh +TEST_F(LocatePoint2D, CoreOutsideMesh) { + auto geom = create_single_unit_square_2x2(); + + // Point outside mesh should throw exception + specfem::point::global_coordinates target = { + 2.0, 2.0 + }; + + EXPECT_THROW(specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, + geom.control_nodes, geom.ngnod, geom.ngllx), + std::runtime_error); +} + +// Helper function tests - testing individual components of locate_point_core + +// Test rough_location helper function +TEST_F(LocatePoint2D, RoughLocationSimple) { + auto geom = create_two_adjacent_elements_2x2(); + + // Test point close to (0.1, 0.1) - should find element 0, point (0,0) + specfem::point::global_coordinates + test_point = { 0.1, 0.1 }; + + auto [ix, iz, ispec] = specfem::algorithms::locate_point_impl::rough_location( + test_point, geom.global_coords); + + EXPECT_EQ(ispec, 0); + EXPECT_EQ(ix, 0); + EXPECT_EQ(iz, 0); + + // Test point close to (0.75, 0.25) - should find element 1 (right element) + // Two adjacent elements: left [0,0.5]x[0,0.5] and right [0.5,1]x[0,0.5] + test_point = { 0.75, 0.25 }; + std::tie(ix, iz, ispec) = + specfem::algorithms::locate_point_impl::rough_location( + test_point, geom.global_coords); + + // Should find element 1 (right element) - but rough_location may find either + // element since they share the edge at x=0.5. The original test also had this + // ambiguity. + EXPECT_TRUE(ispec == 0 || ispec == 1); +} + +// Test get_best_candidates helper function +TEST_F(LocatePoint2D, GetBestCandidatesSimple) { + auto geom = create_two_adjacent_elements_2x2(); + + // Test with element 0 - should return both elements 0 and 1 since they share + // nodes + auto candidates = specfem::algorithms::locate_point_impl::get_best_candidates( + 0, geom.index_mapping); + + // Should return both elements since they share edge nodes + EXPECT_EQ(candidates.size(), 2); + EXPECT_EQ(candidates[0], 0); // Initial guess element + EXPECT_EQ(candidates[1], 1); // Neighboring element +} + +// Test get_local_coordinates helper function +TEST_F(LocatePoint2D, GetLocalCoordinatesUnitSquare) { + auto geom = create_single_unit_square_2x2(); + + // Create control node coordinates view for the single element + const int ngnod = 4; + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> + coorg("coorg", ngnod); + + // Unit square control nodes [0,1] x [0,1] + coorg(0) = { 0.0, 0.0 }; // Bottom-left + coorg(1) = { 1.0, 0.0 }; // Bottom-right + coorg(2) = { 1.0, 1.0 }; // Top-right + coorg(3) = { 0.0, 1.0 }; // Top-left + + // Test point at center of unit square (0.5, 0.5) + // Should map to local coordinates (0, 0) + specfem::point::global_coordinates target = { + 0.5, 0.5 + }; + + type_real xi_initial = 0.1; // Start with slight offset + type_real gamma_initial = 0.1; + + auto [xi_final, gamma_final] = + specfem::algorithms::locate_point_impl::get_local_coordinates( + target, coorg, xi_initial, gamma_initial); + + // For a unit square, center point (0.5, 0.5) should map to (0, 0) in + // reference coords + EXPECT_TRUE(is_close(xi_final, type_real{ 0.0 })) + << expected_got(0.0, xi_final); + EXPECT_TRUE(is_close(gamma_final, type_real{ 0.0 })) + << expected_got(0.0, gamma_final); + + // Test corner point (0, 0) should map to (-1, -1) + target = { 0.0, 0.0 }; + std::tie(xi_final, gamma_final) = + specfem::algorithms::locate_point_impl::get_local_coordinates( + target, coorg, 0.0, 0.0); + + EXPECT_TRUE(is_close(xi_final, type_real{ -1.0 })) + << expected_got(-1.0, xi_final); + EXPECT_TRUE(is_close(gamma_final, type_real{ -1.0 })) + << expected_got(-1.0, gamma_final); + + // Test corner point (1, 1) should map to (1, 1) + target = { 1.0, 1.0 }; + std::tie(xi_final, gamma_final) = + specfem::algorithms::locate_point_impl::get_local_coordinates( + target, coorg, 0.0, 0.0); + + EXPECT_TRUE(is_close(xi_final, type_real{ 1.0 })) + << expected_got(1.0, xi_final); + EXPECT_TRUE(is_close(gamma_final, type_real{ 1.0 })) + << expected_got(1.0, gamma_final); +} + +// Test locate_point with 5x5 GLL points (realistic spectral element resolution) +TEST_F(LocatePoint2D, Core5x5UnitSquare) { + auto geom = create_single_unit_square_5x5(); + + // Test point at center of unit square (0.5, 0.5) + // Should map to local coordinates (0, 0) + specfem::point::global_coordinates target = { + 0.5, 0.5 + }; + + auto result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + // Should find element 0 with local coordinates near (0, 0) for center point + EXPECT_EQ(result.ispec, 0); + EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) + << expected_got(0.0, result.xi); + EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) + << expected_got(0.0, result.gamma); + + // Test corner point (0, 0) should map to (-1, -1) + target = { 0.0, 0.0 }; + result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + EXPECT_EQ(result.ispec, 0); + EXPECT_TRUE(is_close(result.xi, type_real{ -1.0 })) + << expected_got(-1.0, result.xi); + EXPECT_TRUE(is_close(result.gamma, type_real{ -1.0 })) + << expected_got(-1.0, result.gamma); +} + +// Test locate_point with 9-node control elements +TEST_F(LocatePoint2D, Core9NodeElement) { + auto geom = create_single_unit_square_2x2_9node(); + + // Test point at center of unit square (0.5, 0.5) + // Should map to local coordinates (0, 0) + specfem::point::global_coordinates target = { + 0.5, 0.5 + }; + + auto result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + // Should find element 0 with local coordinates near (0, 0) for center point + EXPECT_EQ(result.ispec, 0); + EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) + << expected_got(0.0, result.xi); + EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) + << expected_got(0.0, result.gamma); +} + +// Test locate_point with 5x5 GLL points AND 9-node control elements (most +// realistic case) +TEST_F(LocatePoint2D, Core5x5With9Node) { + auto geom = create_single_unit_square_5x5_9node(); + + // Test point at center of unit square (0.5, 0.5) + // Should map to local coordinates (0, 0) + specfem::point::global_coordinates target = { + 0.5, 0.5 + }; + + auto result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + // Should find element 0 with local coordinates near (0, 0) for center point + EXPECT_EQ(result.ispec, 0); + EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) + << expected_got(0.0, result.xi); + EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) + << expected_got(0.0, result.gamma); + + // Test quarter point (0.25, 0.25) should map to (-0.5, -0.5) + target = { 0.25, 0.25 }; + result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + EXPECT_EQ(result.ispec, 0); + EXPECT_TRUE(is_close(result.xi, type_real{ -0.5 })) + << expected_got(-0.5, result.xi); + EXPECT_TRUE(is_close(result.gamma, type_real{ -0.5 })) + << expected_got(-0.5, result.gamma); +} + +// Test locate_point with two adjacent 5x5 elements +TEST_F(LocatePoint2D, LocatePoint2DCoreTwoAdjacent5x5Elements) { + auto geom = create_two_adjacent_elements_5x5(); + + // Test point in left element (0.25, 0.25) + specfem::point::global_coordinates target = { + 0.25, 0.25 + }; + + auto result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + EXPECT_EQ(result.ispec, 0); + EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) + << expected_got(0.0, result.xi); + EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) + << expected_got(0.0, result.gamma); + + // Test point in right element (0.75, 0.25) + target = { 0.75, 0.25 }; + result = specfem::algorithms::locate_point_impl::locate_point_core( + target, geom.global_coords, geom.index_mapping, geom.control_nodes, + geom.ngnod, geom.ngllx); + + EXPECT_EQ(result.ispec, 1); + EXPECT_TRUE(is_close(result.xi, type_real{ 0.0 })) + << expected_got(0.0, result.xi); + EXPECT_TRUE(is_close(result.gamma, type_real{ 0.0 })) + << expected_got(0.0, result.gamma); +} + +int main(int argc, char *argv[]) { + ::testing::InitGoogleTest(&argc, argv); + ::testing::AddGlobalTestEnvironment(new MPIEnvironment); + ::testing::AddGlobalTestEnvironment(new KokkosEnvironment); + return RUN_ALL_TESTS(); +} diff --git a/tests/unit-tests/assembly/check_jacobian/check_jacobian.cpp b/tests/unit-tests/assembly/check_jacobian/dim2/check_jacobian.cpp similarity index 93% rename from tests/unit-tests/assembly/check_jacobian/check_jacobian.cpp rename to tests/unit-tests/assembly/check_jacobian/dim2/check_jacobian.cpp index f1bb29c02..1e8886a42 100644 --- a/tests/unit-tests/assembly/check_jacobian/check_jacobian.cpp +++ b/tests/unit-tests/assembly/check_jacobian/dim2/check_jacobian.cpp @@ -1,4 +1,4 @@ -#include "../test_fixture/test_fixture.hpp" +#include "../../test_fixture/test_fixture.hpp" #include "specfem/assembly.hpp" #include "specfem/point.hpp" #include @@ -22,7 +22,7 @@ void test_check_jacobian( assembly.check_jacobian_matrix(); } -TEST_F(ASSEMBLY, CheckJacobian) { +TEST_F(Assembly2D, CheckJacobian) { for (auto parameters : *this) { const auto Test = std::get<0>(parameters); specfem::assembly::assembly assembly = diff --git a/tests/unit-tests/assembly/check_jacobian/dim3/check_jacobian.cpp b/tests/unit-tests/assembly/check_jacobian/dim3/check_jacobian.cpp new file mode 100644 index 000000000..5f552523c --- /dev/null +++ b/tests/unit-tests/assembly/check_jacobian/dim3/check_jacobian.cpp @@ -0,0 +1,44 @@ +#include "../../test_fixture/test_fixture.hpp" +#include "specfem/assembly.hpp" +#include "specfem/point.hpp" +#include + +void test_check_jacobian( + const specfem::assembly::assembly + &assembly) { + + const auto nspec = assembly.mesh.nspec; + + const specfem::point::index index( + static_cast(nspec / 2), 2, 2, 2); + + const specfem::point::jacobian_matrix + jacobian_matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, -0.5); + + specfem::assembly::store_on_host(index, jacobian_matrix, + assembly.jacobian_matrix); + + assembly.check_jacobian_matrix(); +} + +TEST_F(Assembly3D, CheckJacobian) { + for (auto parameters : *this) { + const auto Test = std::get<0>(parameters); + + std::cout << "Check Jacobian for " << Test.name << std::endl; + + specfem::assembly::assembly assembly = + std::get<5>(parameters); + + bool exception_thrown = false; + try { + test_check_jacobian(assembly); + } catch (const std::exception &e) { + exception_thrown = true; + } + EXPECT_TRUE(exception_thrown) + << "Expected an exception to be thrown for test in check_jacobian.cpp" + << " but none was thrown for test: " << Test.name; + } +} diff --git a/tests/unit-tests/assembly/compute_wavefield/compute_wavefield.cpp b/tests/unit-tests/assembly/compute_wavefield/compute_wavefield.cpp index 74fd5fb71..53a9af7e0 100644 --- a/tests/unit-tests/assembly/compute_wavefield/compute_wavefield.cpp +++ b/tests/unit-tests/assembly/compute_wavefield/compute_wavefield.cpp @@ -127,7 +127,7 @@ void test_compute_wavefield( } } -TEST_F(ASSEMBLY, compute_wavefield) { +TEST_F(Assembly2D, compute_wavefield) { for (auto parameters : *this) { const auto Test = std::get<0>(parameters); specfem::assembly::assembly assembly = diff --git a/tests/unit-tests/assembly/kernels/kernels.cpp b/tests/unit-tests/assembly/kernels/kernels.cpp index 23b3cacbf..0f5dd5fe4 100644 --- a/tests/unit-tests/assembly/kernels/kernels.cpp +++ b/tests/unit-tests/assembly/kernels/kernels.cpp @@ -287,7 +287,7 @@ add_value(const ViewType elements, } #endif -TEST_F(ASSEMBLY, kernels_access_functions) { +TEST_F(Assembly2D, kernels_access_functions) { for (auto parameters : *this) { auto Test = std::get<0>(parameters); auto mesh = std::get<1>(parameters); diff --git a/tests/unit-tests/assembly/locate/locate_point.cpp b/tests/unit-tests/assembly/locate/locate_point.cpp index e9b6aaecd..6ee116937 100644 --- a/tests/unit-tests/assembly/locate/locate_point.cpp +++ b/tests/unit-tests/assembly/locate/locate_point.cpp @@ -69,7 +69,7 @@ void test_locate_point( } } -TEST_F(ASSEMBLY, LocatePoint) { +TEST_F(Assembly2D, LocatePoint) { for (auto parameters : *this) { const auto Test = std::get<0>(parameters); specfem::assembly::assembly assembly = diff --git a/tests/unit-tests/assembly/locate/locate_point_on_edge.cpp b/tests/unit-tests/assembly/locate/locate_point_on_edge.cpp index 5603cf67c..a6363b06a 100644 --- a/tests/unit-tests/assembly/locate/locate_point_on_edge.cpp +++ b/tests/unit-tests/assembly/locate/locate_point_on_edge.cpp @@ -162,7 +162,7 @@ void test_locate_point_on_edge( } } -TEST_F(ASSEMBLY, LocatePointOnEdge) { +TEST_F(Assembly2D, LocatePointOnEdge) { for (auto parameters : *this) { const auto Test = std::get<0>(parameters); specfem::assembly::assembly assembly = diff --git a/tests/unit-tests/assembly/properties/properties.cpp b/tests/unit-tests/assembly/properties/properties.cpp index 191be89e4..40eee4831 100644 --- a/tests/unit-tests/assembly/properties/properties.cpp +++ b/tests/unit-tests/assembly/properties/properties.cpp @@ -242,7 +242,7 @@ void check_compute_to_mesh( }); } -TEST_F(ASSEMBLY, properties_access_functions) { +TEST_F(Assembly2D, properties_access_functions) { for (auto parameters : *this) { auto Test = std::get<0>(parameters); auto mesh = std::get<1>(parameters); @@ -320,7 +320,7 @@ TEST_F(ASSEMBLY, properties_access_functions) { } } -TEST_F(ASSEMBLY, properties_construction) { +TEST_F(Assembly2D, properties_construction) { for (auto parameters : *this) { auto Test = std::get<0>(parameters); auto mesh = std::get<1>(parameters); @@ -354,7 +354,7 @@ TEST_F(ASSEMBLY, properties_construction) { } } -TEST_F(ASSEMBLY, properties_io_routines) { +TEST_F(Assembly2D, properties_io_routines) { for (auto parameters : *this) { auto Test = std::get<0>(parameters); auto mesh = std::get<1>(parameters); diff --git a/tests/unit-tests/assembly/sources/locate_sources.cpp b/tests/unit-tests/assembly/sources/locate_sources.cpp index 491ecbe89..c71e667c8 100644 --- a/tests/unit-tests/assembly/sources/locate_sources.cpp +++ b/tests/unit-tests/assembly/sources/locate_sources.cpp @@ -12,7 +12,7 @@ #include "gtest/gtest.h" #include -TEST_F(ASSEMBLY, locate_sources) { +TEST_F(Assembly2D, locate_sources) { for (auto parameters : *this) { const auto Test = std::get<0>(parameters); const auto source_solution = Test.solutions.source; diff --git a/tests/unit-tests/assembly/sources/sources.cpp b/tests/unit-tests/assembly/sources/sources.cpp index a48bb26b0..964d253a1 100644 --- a/tests/unit-tests/assembly/sources/sources.cpp +++ b/tests/unit-tests/assembly/sources/sources.cpp @@ -310,7 +310,7 @@ void test_sources(specfem::assembly::assembly specfem::wavefield::simulation_field::forward>(assembly); }) } -TEST_F(ASSEMBLY, sources) { +TEST_F(Assembly2D, sources) { for (auto parameters : *this) { const auto Test = std::get<0>(parameters); auto sources = std::get<2>(parameters); diff --git a/tests/unit-tests/assembly/test_config.yaml b/tests/unit-tests/assembly/test_config.yaml index 0bc026e4e..56eae9866 100644 --- a/tests/unit-tests/assembly/test_config.yaml +++ b/tests/unit-tests/assembly/test_config.yaml @@ -1,183 +1,202 @@ Tests: + 2D: + - name : "Test 1: Simple mesh with flat topography (P_SV wave)" + description: > + Testing mesh reader on a simple mesh with flat topography. + config: + nproc : 1 + elastic_wave: "P_SV" + databases: + mesh : "data/dim2/simple_mesh_flat_topography/database.bin" + sources : "data/dim2/simple_mesh_flat_topography/sources.yaml" + stations : "data/dim2/simple_mesh_flat_topography/STATIONS" + suffix: "simple_topo_P_SV" + solutions: + source: + xi: 1.0 + gamma: 1.0 + ispec: 3969 + medium_tag: elastic_psv - - name : "Test 1: Simple mesh with flat topography (P_SV wave)" - description: > - Testing mesh reader on a simple mesh with flat topography. - config: - nproc : 1 - elastic_wave: "P_SV" - databases: - mesh : "data/mesh/simple_mesh_flat_topography/database.bin" - sources : "data/mesh/simple_mesh_flat_topography/sources.yaml" - stations : "data/mesh/simple_mesh_flat_topography/STATIONS" - suffix: "simple_topo_P_SV" - solutions: - source: - xi: 1.0 - gamma: 1.0 - ispec: 3969 - medium_tag: elastic_psv + - name : "Test 2: Simple mesh with flat topography (SH wave)" + description: > + Testing mesh reader on a simple mesh with flat topography. + config: + nproc : 1 + elastic_wave: "SH" + databases: + mesh : "data/dim2/simple_mesh_flat_topography/database.bin" + sources : "data/dim2/simple_mesh_flat_topography/sources.yaml" + stations : "data/dim2/simple_mesh_flat_topography/STATIONS" + suffix: "simple_topo_SH" + solutions: + source: + xi: 1.0 + gamma: 1.0 + ispec: 3969 + medium_tag: elastic_sh - - name : "Test 2: Simple mesh with flat topography (SH wave)" - description: > - Testing mesh reader on a simple mesh with flat topography. - config: - nproc : 1 - elastic_wave: "SH" - databases: - mesh : "data/mesh/simple_mesh_flat_topography/database.bin" - sources : "data/mesh/simple_mesh_flat_topography/sources.yaml" - stations : "data/mesh/simple_mesh_flat_topography/STATIONS" - suffix: "simple_topo_SH" - solutions: - source: - xi: 1.0 - gamma: 1.0 - ispec: 3969 - medium_tag: elastic_sh + - name : "Test 3: Simple mesh with curved topography" + description: > + Testing mesh reader on a simple mesh with curved topography. + config: + nproc : 1 + elastic_wave: "P_SV" + databases: + mesh : "data/dim2/simple_mesh_curved_topography/database.bin" + sources : "data/dim2/simple_mesh_curved_topography/sources.yaml" + stations : "data/dim2/simple_mesh_curved_topography/STATIONS" + suffix: "curved_topo_P_SV" + solutions: + source: + xi: 1.0 + gamma: -0.050847456 + ispec: 3889 + medium_tag: elastic_psv - - name : "Test 3: Simple mesh with curved topography" - description: > - Testing mesh reader on a simple mesh with curved topography. - config: - nproc : 1 - elastic_wave: "P_SV" - databases: - mesh : "data/mesh/simple_mesh_curved_topography/database.bin" - sources : "data/mesh/simple_mesh_curved_topography/sources.yaml" - stations : "data/mesh/simple_mesh_curved_topography/STATIONS" - suffix: "curved_topo_P_SV" - solutions: - source: - xi: 1.0 - gamma: -0.050847456 - ispec: 3889 - medium_tag: elastic_psv + - name : "Test 4: Simple mesh with flat ocean bottom" + description: > + Testing mesh reader on a simple mesh with flat ocean bottom. Fluid-solid interface is at the ocean bottom. + config: + nproc : 1 + elastic_wave: "P_SV" + databases: + mesh : "data/dim2/fluid_solid_mesh_flat_ocean_bottom/database.bin" + sources : "data/dim2/fluid_solid_mesh_flat_ocean_bottom/sources.yaml" + stations : "data/dim2/fluid_solid_mesh_flat_ocean_bottom/STATIONS" + suffix: "flat_ocean_bottom_P_SV" + solutions: + source: + xi: -0.12500772 + gamma: -0.50000995 + ispec: 9372 + medium_tag: acoustic - - name : "Test 4: Simple mesh with flat ocean bottom" - description: > - Testing mesh reader on a simple mesh with flat ocean bottom. Fluid-solid interface is at the ocean bottom. - config: - nproc : 1 - elastic_wave: "P_SV" - databases: - mesh : "data/mesh/fluid_solid_mesh_flat_ocean_bottom/database.bin" - sources : "data/mesh/fluid_solid_mesh_flat_ocean_bottom/sources.yaml" - stations : "data/mesh/fluid_solid_mesh_flat_ocean_bottom/STATIONS" - suffix: "flat_ocean_bottom_P_SV" - solutions: - source: - xi: -0.12500772 - gamma: -0.50000995 - ispec: 9372 - medium_tag: acoustic + - name : "Test 5: Simple mesh with curved ocean bottom" + description: > + Testing mesh reader on a simple mesh with curved ocean bottom. Fluid-solid interface is at the ocean bottom. + config: + nproc : 1 + elastic_wave: "P_SV" + databases: + mesh : "data/dim2/fluid_solid_mesh_curved_ocean_bottom/database.bin" + sources : "data/dim2/fluid_solid_mesh_curved_ocean_bottom/sources.yaml" + stations : "data/dim2/fluid_solid_mesh_curved_ocean_bottom/STATIONS" + suffix: "curved_ocean_bottom_P_SV" + solutions: + source: + xi: -0.12500234 + gamma: 0.54891706 + ispec: 9230 + medium_tag: acoustic - - name : "Test 5: Simple mesh with curved ocean bottom" - description: > - Testing mesh reader on a simple mesh with curved ocean bottom. Fluid-solid interface is at the ocean bottom. - config: - nproc : 1 - elastic_wave: "P_SV" - databases: - mesh : "data/mesh/fluid_solid_mesh_curved_ocean_bottom/database.bin" - sources : "data/mesh/fluid_solid_mesh_curved_ocean_bottom/sources.yaml" - stations : "data/mesh/fluid_solid_mesh_curved_ocean_bottom/STATIONS" - suffix: "curved_ocean_bottom_P_SV" - solutions: - source: - xi: -0.12500234 - gamma: 0.54891706 - ispec: 9230 - medium_tag: acoustic + - name : "Test 6: Gmesh Example" + description: > + Testing mesh reader on a Gmesh example mesh. + config: + nproc : 1 + elastic_wave: "P_SV" + databases: + mesh : "data/dim2/Gmesh_Example_Stacey/database.bin" + sources : "data/dim2/Gmesh_Example_Stacey/sources.yaml" + stations : "data/dim2/Gmesh_Example_Stacey/STATIONS" + suffix: "Gmesh_Example_P_SV" + solutions: + source: + xi: -0.98861307 + gamma: 0.80903608 + ispec: 1363 + medium_tag: acoustic - - name : "Test 6: Gmesh Example" - description: > - Testing mesh reader on a Gmesh example mesh. - config: - nproc : 1 - elastic_wave: "P_SV" - databases: - mesh : "data/mesh/Gmesh_Example_Stacey/database.bin" - sources : "data/mesh/Gmesh_Example_Stacey/sources.yaml" - stations : "data/mesh/Gmesh_Example_Stacey/STATIONS" - suffix: "Gmesh_Example_P_SV" - solutions: - source: - xi: -0.98861307 - gamma: 0.80903608 - ispec: 1363 - medium_tag: acoustic + - name : "Test 7: Homogeneous Elastic Anisotropic Material (P_SV wave)" + description: > + Testing the reading of a homogeneous elastic anisotropic material. + config: + nproc : 1 + elastic_wave: "P_SV" + databases: + mesh : "data/dim2/homogeneous_elastic_anisotropic/database.bin" + sources : "data/dim2/homogeneous_elastic_anisotropic/sources.yaml" + stations : "data/dim2/homogeneous_elastic_anisotropic/STATIONS" + suffix: "homogeneous_elastic_anisotropic_P_SV" + solutions: + source: + xi: 1.0 + gamma: 1.0 + ispec: 3969 + medium_tag: elastic_psv - - name : "Test 7: Homogeneous Elastic Anisotropic Material (P_SV wave)" - description: > - Testing the reading of a homogeneous elastic anisotropic material. - config: - nproc : 1 - elastic_wave: "P_SV" - databases: - mesh : "data/mesh/homogeneous_elastic_anisotropic/database.bin" - sources : "data/mesh/homogeneous_elastic_anisotropic/sources.yaml" - stations : "data/mesh/homogeneous_elastic_anisotropic/STATIONS" - suffix: "homogeneous_elastic_anisotropic_P_SV" - solutions: - source: - xi: 1.0 - gamma: 1.0 - ispec: 3969 - medium_tag: elastic_psv + - name : "Test 8: Homogeneous Elastic Anisotropic Material (SH wave)" + description: > + Testing the reading of a homogeneous elastic anisotropic material. + config: + nproc : 1 + elastic_wave: "SH" + databases: + mesh : "data/dim2/homogeneous_elastic_anisotropic/database.bin" + sources : "data/dim2/homogeneous_elastic_anisotropic/sources.yaml" + stations : "data/dim2/homogeneous_elastic_anisotropic/STATIONS" + suffix: "homogeneous_elastic_anisotropic_SH" + solutions: + source: + xi: 1.0 + gamma: 1.0 + ispec: 3969 + medium_tag: elastic_sh - - name : "Test 8: Homogeneous Elastic Anisotropic Material (SH wave)" - description: > - Testing the reading of a homogeneous elastic anisotropic material. - config: - nproc : 1 - elastic_wave: "SH" - databases: - mesh : "data/mesh/homogeneous_elastic_anisotropic/database.bin" - sources : "data/mesh/homogeneous_elastic_anisotropic/sources.yaml" - stations : "data/mesh/homogeneous_elastic_anisotropic/STATIONS" - suffix: "homogeneous_elastic_anisotropic_SH" - solutions: - source: - xi: 1.0 - gamma: 1.0 - ispec: 3969 - medium_tag: elastic_sh + - name : "Test 9: Homogeneous Poroelastic Isotropic Material (P_SV wave)" + description: > + Testing the reading of a homogeneous poroelastic isotropic material. + config: + nproc : 1 + elastic_wave: "P_SV" + databases: + mesh : "data/dim2/homogeneous_poroelastic_isotropic/database.bin" + sources : "data/dim2/homogeneous_poroelastic_isotropic/sources.yaml" + stations : "data/dim2/homogeneous_poroelastic_isotropic/STATIONS" + suffix: "homogeneous_poroelastic_isotropic_P_SV" + solutions: + source: + xi: 1.0 + gamma: 1.0 + ispec: 724 + medium_tag: poroelastic - - name : "Test 9: Homogeneous Poroelastic Isotropic Material (P_SV wave)" - description: > - Testing the reading of a homogeneous poroelastic isotropic material. - config: - nproc : 1 - elastic_wave: "P_SV" - databases: - mesh : "data/mesh/homogeneous_poroelastic_isotropic/database.bin" - sources : "data/mesh/homogeneous_poroelastic_isotropic/sources.yaml" - stations : "data/mesh/homogeneous_poroelastic_isotropic/STATIONS" - suffix: "homogeneous_poroelastic_isotropic_P_SV" - solutions: - source: - xi: 1.0 - gamma: 1.0 - ispec: 724 - medium_tag: poroelastic + # THE STATIONS FOR THIS HAVE NOT BEEN CHECKED/TESTED + - name : "Test 10: Cosserat Isotropic Homogeneous Material (P_SV wave)" + description: > + Testing the reading of a homogeneous elastic isotropic cosserat material. + config: + nproc : 1 + elastic_wave: "P_SV" + databases: + mesh : "data/dim2/cosserat_isotropic_homogeneous/database.bin" + sources : "data/dim2/cosserat_isotropic_homogeneous/sources.yaml" + stations : "data/dim2/cosserat_isotropic_homogeneous/STATIONS" + suffix: "cosserat_isotropic_homogeneous" + solutions: + source: + xi: -0.99767500162124634 + gamma: -0.99767500162124634 + ispec: 0 + medium_tag: elastic_psv_t - # THE STATIONS FOR THIS HAVE NOT BEEN CHECKED/TESTED - - name : "Test 10: Cosserat Isotropic Homogeneous Material (P_SV wave)" - description: > - Testing the reading of a homogeneous elastic isotropic cosserat material. - config: - nproc : 1 - elastic_wave: "P_SV" - databases: - mesh : "data/mesh/cosserat_isotropic_homogeneous/database.bin" - sources : "data/mesh/cosserat_isotropic_homogeneous/sources.yaml" - stations : "data/mesh/cosserat_isotropic_homogeneous/STATIONS" - suffix: "cosserat_isotropic_homogeneous" - solutions: - source: - xi: -0.99767500162124634 - gamma: -0.99767500162124634 - ispec: 0 - medium_tag: elastic_psv_t + 3D: + - name : "Homogeneous Halfspace Elastic Isotropic Force No ABC" + description: > + Testing mesh reader on a simple mesh with flat topography. + config: + nproc : 1 + databases: + mesh-database : "data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/DATABASES/proc000000_external_mesh.bin" + mesh-parameters: "data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/DATABASES/mesh_parameters.bin" + sources : "data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/force.yaml" + stations : "data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/STATIONS" + suffix: "homo_halfspace_elastic_is_force_no_abc" + solutions: + source: + xi: 1.0 + gamma: 1.0 + ispec: 27000 + medium_tag: elastic diff --git a/tests/unit-tests/assembly/test_fixture/test_fixture.cpp b/tests/unit-tests/assembly/test_fixture/test_fixture.cpp index c857813ba..c293e7caf 100644 --- a/tests/unit-tests/assembly/test_fixture/test_fixture.cpp +++ b/tests/unit-tests/assembly/test_fixture/test_fixture.cpp @@ -5,21 +5,26 @@ // ------------------------------------------------------------------------ // Reading test config -void parse_test_config(const YAML::Node &yaml, - std::vector &tests) { - YAML::Node all_tests = yaml["Tests"]; +template +void parse_test_config( + const YAML::Node &yaml, + std::vector > &tests, + const std::string &dimension) { + YAML::Node all_tests = yaml["Tests"][dimension]; assert(all_tests.IsSequence()); for (auto N : all_tests) - tests.push_back(test_configuration::Test(N)); + tests.push_back(test_configuration::Test(N)); return; } -ASSEMBLY::ASSEMBLY() { +// Template specialization for dim2 +template <> Assembly::Assembly() { std::string config_filename = "assembly/test_config.yaml"; - parse_test_config(YAML::LoadFile(config_filename), Tests); + parse_test_config( + YAML::LoadFile(config_filename), Tests, "2D"); specfem::MPI::MPI *mpi = MPIEnvironment::get_mpi(); @@ -47,7 +52,7 @@ ASSEMBLY::ASSEMBLY() { this->Sources.push_back(sources); - const auto receivers = specfem::io::read_receivers(stations_file, 0); + const auto receivers = specfem::io::read_2d_receivers(stations_file, 0); this->Stations.push_back(receivers); @@ -61,3 +66,67 @@ ASSEMBLY::ASSEMBLY() { 1, 1, specfem::simulation::type::forward, false, nullptr)); } } + +// Template specialization for dim3 +template <> Assembly::Assembly() { + + std::string config_filename = "assembly/test_config.yaml"; + parse_test_config( + YAML::LoadFile(config_filename), Tests, "3D"); + + specfem::MPI::MPI *mpi = MPIEnvironment::get_mpi(); + + const auto quadrature = []() { + specfem::quadrature::gll::gll gll{}; + return specfem::quadrature::quadratures(gll); + }(); + + for (auto &Test : Tests) { + const auto [mesh_parameters_file, mesh_database_file, sources_file] = + Test.get_databases(); + + // For 3D, we need different mesh and source reading functions + const auto mesh = specfem::io::read_3d_mesh(mesh_parameters_file, + mesh_database_file, mpi); + + this->Meshes.push_back(mesh); + this->suffixes.push_back(Test.suffix); + + std::cout << sources_file << std::endl; + + auto [sources, t0] = specfem::io::read_3d_sources( + sources_file, 1, 0, 0, specfem::simulation::type::forward); + + this->Sources.push_back(sources); + + std::cout << "Number of sources: " << sources.size() << std::endl; + + // -------------------------------------------------------------- + // Get receivers + // -------------------------------------------------------------- + // create single receiver receivers vector for now + std::vector > > + receivers; + + receivers.emplace_back( + std::make_shared< + specfem::receivers::receiver >( + "NET", "STA", 50000.0, 40000.0, 0.0)); + + this->Stations.push_back(receivers); + + std::cout << "Number of receivers: " << receivers.size() << std::endl; + + std::vector seismogram_types = { + specfem::wavefield::type::displacement + }; + + this->assemblies.push_back( + specfem::assembly::assembly( + mesh, quadrature, sources, receivers, seismogram_types, 1.0, 0.0, 1, + 1, 1, specfem::simulation::type::forward, false, nullptr)); + + std::cout << "Created assembly for " << Test.name << std::endl; + } +} diff --git a/tests/unit-tests/assembly/test_fixture/test_fixture.hpp b/tests/unit-tests/assembly/test_fixture/test_fixture.hpp index ec839239d..d195021cd 100644 --- a/tests/unit-tests/assembly/test_fixture/test_fixture.hpp +++ b/tests/unit-tests/assembly/test_fixture/test_fixture.hpp @@ -20,10 +20,28 @@ KOKKOS_FUNCTION get_index(const int ielement, const int num_elements, const int iz, const int ix); +template +KOKKOS_FUNCTION + specfem::point::index + get_index(const int ielement, const int num_elements, const int iz, + const int iy, const int ix); + // ------------------------------------------------------------------------ // Test configuration namespace test_configuration { -struct database { + +// Base database struct +template struct database { +public: + database() : sources(""), stations("") {}; + virtual ~database() = default; + + std::string sources; + std::string stations; +}; + +// 2D database specialization +template <> struct database { public: database() : mesh(""), sources(""), stations("") {}; database(const YAML::Node &Node) { @@ -41,6 +59,28 @@ struct database { std::string stations; }; +// 3D database specialization +template <> struct database { +public: + database() + : mesh_database(""), mesh_parameters(""), sources(""), stations("") {}; + database(const YAML::Node &Node) { + mesh_database = Node["mesh-database"].as(); + mesh_parameters = Node["mesh-parameters"].as(); + sources = Node["sources"].as(); + stations = Node["stations"].as(); + } + + std::tuple get_databases() { + return std::make_tuple(mesh_parameters, mesh_database, sources); + } + + std::string mesh_database; + std::string mesh_parameters; + std::string sources; + std::string stations; +}; + struct source_solution { public: source_solution() {}; @@ -74,12 +114,29 @@ struct solutions { source_solution source; }; -struct config { +// Base config struct +template struct config { +public: + config() : nproc(1) {}; + virtual ~config() = default; + + int get_nproc() { return nproc; } + +protected: + int nproc; +}; + +// 2D config specialization +template <> struct config { public: config() : nproc(1), elastic_wave("P_SV"), electromagnetic_wave("TE") {}; config(const YAML::Node &Node) { nproc = Node["nproc"].as(); - elastic_wave = Node["elastic_wave"].as(); + if (Node["elastic_wave"].IsDefined()) + elastic_wave = Node["elastic_wave"].as(); + else + // Default to P_SV if not defined + elastic_wave = "P_SV"; if (Node["electromagnetic_wave"].IsDefined()) electromagnetic_wave = Node["electromagnetic_wave"].as(); @@ -114,7 +171,19 @@ struct config { std::string electromagnetic_wave; }; -struct Test { +// 3D config specialization +template <> struct config { +public: + config() : nproc(1) {}; + config(const YAML::Node &Node) { nproc = Node["nproc"].as(); } + + int get_nproc() { return nproc; } + +private: + int nproc; +}; + +template struct Test { public: Test(const YAML::Node &Node) { name = Node["name"].as(); @@ -125,13 +194,64 @@ struct Test { YAML::Node solutions_node = Node["solutions"]; try { - database = test_configuration::database(databases); + database = test_configuration::database(databases); } catch (std::runtime_error &e) { throw std::runtime_error("Error in test configuration: " + name + "\n" + e.what()); } try { - config = test_configuration::config(configuration); + config = test_configuration::config(configuration); + } catch (std::runtime_error &e) { + throw std::runtime_error("Error in test configuration: " + name + "\n" + + e.what()); + } + + try { + solutions = test_configuration::solutions(solutions_node); + } catch (std::runtime_error &e) { + throw std::runtime_error("Error in test configuration: " + name + "\n" + + e.what()); + } + return; + } + + std::tuple get_databases() { + return database.get_databases(); + } + + int get_nproc() { return config.get_nproc(); } + + std::string get_suffix() { return suffix; } + + std::string name; + std::string description; + std::string suffix; + test_configuration::database database; + test_configuration::config config; + test_configuration::solutions solutions; +}; + +// 2D Test specialization with elastic wave methods +template <> struct Test { +public: + Test(const YAML::Node &Node) { + name = Node["name"].as(); + description = Node["description"].as(); + suffix = Node["suffix"].as(); + YAML::Node databases = Node["databases"]; + YAML::Node configuration = Node["config"]; + YAML::Node solutions_node = Node["solutions"]; + + try { + database = test_configuration::database( + databases); + } catch (std::runtime_error &e) { + throw std::runtime_error("Error in test configuration: " + name + "\n" + + e.what()); + } + try { + config = test_configuration::config( + configuration); } catch (std::runtime_error &e) { throw std::runtime_error("Error in test configuration: " + name + "\n" + e.what()); @@ -165,42 +285,41 @@ struct Test { std::string name; std::string description; std::string suffix; - test_configuration::database database; - test_configuration::config config; + test_configuration::database database; + test_configuration::config config; test_configuration::solutions solutions; }; } // namespace test_configuration // ------------------------------------------------------------------------ -class ASSEMBLY : public ::testing::Test { +template +class Assembly : public ::testing::Test { protected: class Iterator { public: Iterator( - test_configuration::Test *p_Test, - specfem::mesh::mesh *p_mesh, - std::vector > > + test_configuration::Test *p_Test, + specfem::mesh::mesh *p_mesh, + std::vector > > *p_sources, - std::vector > > + std::vector< + std::shared_ptr > > *p_stations, std::string *p_suffixes, - specfem::assembly::assembly *p_assembly) + specfem::assembly::assembly *p_assembly) : p_Test(p_Test), p_mesh(p_mesh), p_sources(p_sources), p_stations(p_stations), p_suffixes(p_suffixes), p_assembly(p_assembly) {} - std::tuple, - std::vector > >, - std::vector > >, - std::string, - specfem::assembly::assembly > + std::tuple< + test_configuration::Test, + specfem::mesh::mesh, + std::vector > >, + std::vector< + std::shared_ptr > >, + std::string, specfem::assembly::assembly > operator*() { std::cout << "-------------------------------------------------------\n" << "\033[0;32m[RUNNING]\033[0m " << p_Test->name << "\n" @@ -225,18 +344,17 @@ class ASSEMBLY : public ::testing::Test { } private: - test_configuration::Test *p_Test; - specfem::mesh::mesh *p_mesh; - std::vector > > *p_sources; - std::vector > > + test_configuration::Test *p_Test; + specfem::mesh::mesh *p_mesh; + std::vector > > + *p_sources; + std::vector > > *p_stations; std::string *p_suffixes; - specfem::assembly::assembly *p_assembly; + specfem::assembly::assembly *p_assembly; }; - ASSEMBLY(); + Assembly(); Iterator begin() { return Iterator(&Tests[0], &Meshes[0], &Sources[0], &Stations[0], @@ -249,15 +367,18 @@ class ASSEMBLY : public ::testing::Test { &suffixes[suffixes.size()], &assemblies[assemblies.size()]); } - std::vector Tests; - std::vector > Meshes; - std::vector > > > + std::vector > Tests; + std::vector > Meshes; + std::vector< + std::vector > > > Sources; - std::vector > > > + std::vector > > > Stations; std::vector suffixes; - std::vector > - assemblies; + std::vector > assemblies; }; + +// Template specializations +using Assembly2D = Assembly; +using Assembly3D = Assembly; diff --git a/tests/unit-tests/assembly/test_fixture/test_fixture.tpp b/tests/unit-tests/assembly/test_fixture/test_fixture.tpp index b2a24da5d..0ab7c7b52 100644 --- a/tests/unit-tests/assembly/test_fixture/test_fixture.tpp +++ b/tests/unit-tests/assembly/test_fixture/test_fixture.tpp @@ -1,5 +1,6 @@ #include "test_fixture.hpp" +// Dim2 specializations template <> KOKKOS_FUNCTION specfem::point::index get_index(const int ielement, const int num_elements, const int iz, @@ -15,3 +16,20 @@ get_index(const int ielement, const int num_elements, const int iz, return specfem::point::index(ielement, iz, ix); } + +// Dim3 specializations +template <> +KOKKOS_FUNCTION specfem::point::index +get_index(const int ielement, const int num_elements, const int iz, const int iy, + const int ix) { + return specfem::point::simd_index( + ielement, num_elements, iz, iy, ix); +} + +template <> +KOKKOS_FUNCTION specfem::point::index +get_index(const int ielement, const int num_elements, const int iz, const int iy, + const int ix) { + return specfem::point::index(ielement, iz, iy, + ix); +} diff --git a/tests/unit-tests/compute_coupling/acoustic_elastic.cpp b/tests/unit-tests/compute_coupling/acoustic_elastic.cpp new file mode 100644 index 000000000..76e39c030 --- /dev/null +++ b/tests/unit-tests/compute_coupling/acoustic_elastic.cpp @@ -0,0 +1,97 @@ +#include "medium/compute_coupling.hpp" +#include "specfem/point.hpp" +#include +#include + +struct AcousticElasticTestParams { + type_real edge_factor; + std::array normal; + std::array displacement_value; + type_real expected_result; + type_real tolerance; + std::string name; +}; + +std::ostream &operator<<(std::ostream &os, + const AcousticElasticTestParams ¶ms) { + os << params.name; + return os; +} + +class AcousticElasticCouplingTest + : public ::testing::TestWithParam {}; + +TEST_P(AcousticElasticCouplingTest, CouplingCalculation) { + const auto ¶ms = GetParam(); + + // Create interface data + specfem::point::coupled_interface< + specfem::dimension::type::dim2, + specfem::connections::type::weakly_conforming, + specfem::interface::interface_tag::acoustic_elastic, + specfem::element::boundary_tag::none> + interface_data(params.edge_factor, + { params.normal[0], params.normal[1] }); + + // Create coupled field (displacement from acoustic medium) + specfem::point::displacement + coupled_field; + coupled_field(0) = params.displacement_value[0]; + coupled_field(1) = params.displacement_value[1]; + + // Create self field (acceleration in elastic medium) + specfem::point::acceleration + self_field; + + // Perform coupling computation + specfem::medium::compute_coupling(interface_data, coupled_field, self_field); + + // Verify result + EXPECT_NEAR(self_field(0), params.expected_result, params.tolerance); +} + +INSTANTIATE_TEST_SUITE_P( + AcousticElasticVariations, AcousticElasticCouplingTest, + ::testing::Values( + // Basic coupling calculation + AcousticElasticTestParams{ 2.0, // edge_factor + { 0.6, 0.8 }, // normal + { 1.5, 1.5 }, // displacement_value + 4.2, // expected_result (2.0 * (0.6 * 1.5 + + // 0.8 * 1.5) = 4.2) + 1e-6, // tolerance + "BasicCouplingCalculation" }, + // Zero edge factor test + AcousticElasticTestParams{ 0.0, // edge_factor + { 1.0, 0.0 }, // normal + { 5.0, 5.0 }, // displacement_value + 0.0, // expected_result + 1e-12, // tolerance + "ZeroEdgeFactorTest" }, + // Zero displacement test + AcousticElasticTestParams{ 1.5, // edge_factor + { 0.8, 0.6 }, // normal + { 0.0, 0.0 }, // displacement_value + 0.0, // expected_result + 1e-12, // tolerance + "ZeroDisplacementTest" }, + // Negative values test + AcousticElasticTestParams{ -2.0, // edge_factor + { -0.6, 0.8 }, // normal + { -2.0, 0.0 }, // displacement_value + -2.4, // expected_result ((-2.0) * ((-0.6) * + // (-2.0) + (-2.0) * (0.8) * 0.0) = + // -2.4) + 1e-6, // tolerance + "NegativeValuesTest" }, + // Large values test + AcousticElasticTestParams{ + 1e6, // edge_factor + { 0.707106781, 0.707106781 }, // normal (1/sqrt(2), 1/sqrt(2)) + { 1e-6, 1e-6 }, // displacement_value + 1.414213562, // expected_result (1e6 * (0.707106781 * 1e-6 + + // 0.707106781 * 1e-6) = 1.414213562) + 1e-6, // tolerance (relaxed for large numbers) + "LargeValuesTest" })); diff --git a/tests/unit-tests/compute_coupling/elastic_acoustic.cpp b/tests/unit-tests/compute_coupling/elastic_acoustic.cpp new file mode 100644 index 000000000..93da71978 --- /dev/null +++ b/tests/unit-tests/compute_coupling/elastic_acoustic.cpp @@ -0,0 +1,106 @@ +#include "medium/compute_coupling.hpp" +#include "specfem/point.hpp" +#include +#include + +struct ElasticAcousticTestParams { + type_real edge_factor; + std::array normal; + type_real acceleration; + std::array expected_result; + type_real tolerance; + std::string name; +}; + +class ElasticAcousticCouplingTest + : public ::testing::TestWithParam {}; + +std::ostream &operator<<(std::ostream &os, + const ElasticAcousticTestParams ¶ms) { + os << params.name; + return os; +} + +TEST_P(ElasticAcousticCouplingTest, CouplingCalculation) { + const auto ¶ms = GetParam(); + + // Create interface data + specfem::point::coupled_interface< + specfem::dimension::type::dim2, + specfem::connections::type::weakly_conforming, + specfem::interface::interface_tag::elastic_acoustic, + specfem::element::boundary_tag::none> + interface_data(params.edge_factor, + { params.normal[0], params.normal[1] }); + + // Create coupled field (acceleration from elastic medium) + specfem::point::acceleration + coupled_field; + coupled_field(0) = params.acceleration; + + specfem::point::acceleration + self_field; + + // Perform coupling computation + specfem::medium::compute_coupling(interface_data, coupled_field, self_field); + + // Verify results + EXPECT_NEAR(self_field(0), params.expected_result[0], params.tolerance); + EXPECT_NEAR(self_field(1), params.expected_result[1], params.tolerance); +} + +INSTANTIATE_TEST_SUITE_P( + ElasticAcousticVariations, ElasticAcousticCouplingTest, + ::testing::Values( + // Basic coupling calculation + ElasticAcousticTestParams{ 1.5, // edge_factor + { 0.8, 0.6 }, // normal + 2.0, // acceleration + { 2.4, 1.8 }, // expected_result (1.5 * 0.8 + // * 2.0 = 2.4, 1.5 * 0.6 * 2.0 + // = 1.8) + 1e-6, // tolerance + "BasicCouplingCalculation" }, + // Zero edge factor test + ElasticAcousticTestParams{ 0.0, // edge_factor + { 1.0, 0.0 }, // normal + 3.0, // acceleration + { 0.0, 0.0 }, // expected_result + 1e-12, // tolerance + "ZeroEdgeFactorTest" }, + // Zero acceleration test + ElasticAcousticTestParams{ 2.5, // edge_factor + { 0.6, 0.8 }, // normal + 0.0, // acceleration (zero) + { 0.0, 0.0 }, // expected_result + 1e-12, // tolerance + "ZeroAccelerationTest" }, + // Negative values test + ElasticAcousticTestParams{ + -2.0, // edge_factor + { -0.8, 0.6 }, // normal + -1.5, // acceleration + { -2.4, 1.8 }, // expected_result ((-2.0) * (-0.8) * (-1.5) = -2.4, + // (-2.0) * 0.6 * (-1.5) = 1.8) + 1e-6, // tolerance + "NegativeValuesTest" }, + // Unit normal test (x-direction) + ElasticAcousticTestParams{ + 1.0, // edge_factor + { 1.0, 0.0 }, // normal (unit normal in x-direction) + 3.0, // acceleration + { 3.0, 0.0 }, // expected_result (1.0 * 1.0 * 3.0 = 3.0, 1.0 * 0.0 + // * 3.0 = 0.0) + 1e-6, // tolerance + "UnitNormalTest" }, + // Diagonal normal test (45 degrees) + ElasticAcousticTestParams{ + 1.0, // edge_factor + { 0.707106781, 0.707106781 }, // normal (√2/2, √2/2) + 2.0, // acceleration + { 1.414213562, 1.414213562 }, // expected_result (1.0 * 0.707106781 + // * 2.0 ≈ 1.414) + 1e-6, // tolerance (relaxed for floating point precision) + "DiagonalNormalTest" })); diff --git a/tests/unit-tests/data/mesh/.gitignore b/tests/unit-tests/data/dim2/.gitignore similarity index 100% rename from tests/unit-tests/data/mesh/.gitignore rename to tests/unit-tests/data/dim2/.gitignore diff --git a/tests/unit-tests/data/dim2/3_elem_nonconforming/README.md b/tests/unit-tests/data/dim2/3_elem_nonconforming/README.md new file mode 100644 index 000000000..98942fe50 --- /dev/null +++ b/tests/unit-tests/data/dim2/3_elem_nonconforming/README.md @@ -0,0 +1,19 @@ +# `3_elem_nonconforming` + +Two elements (50 x 50) are placed above a larger element (100 x 100), as below: + +```none +┌────┬────┐ +│ 2 │ 3 │ +├────┴────┤ +│ │ +│ 1 │ +└─────────┘ +``` + +To regenerate the database, convert the topography file into the files in `MESH` through `gmsh`, then run meshfem over `Par_file`: + +```bash +python scripts/gmshlayerbuilder simple_dg_topo.dat MESH +xmeshfem2D -p Par_file +``` diff --git a/tests/unit-tests/data/dim2/3_elem_nonconforming/database.bin b/tests/unit-tests/data/dim2/3_elem_nonconforming/database.bin new file mode 100644 index 000000000..c5e69d3b1 Binary files /dev/null and b/tests/unit-tests/data/dim2/3_elem_nonconforming/database.bin differ diff --git a/tests/unit-tests/data/mesh/circular_mesh/provenance/MESH/free_surface_file b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/free_surface similarity index 100% rename from tests/unit-tests/data/mesh/circular_mesh/provenance/MESH/free_surface_file rename to tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/free_surface diff --git a/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/materials b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/materials new file mode 100644 index 000000000..2ca3cd52f --- /dev/null +++ b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/materials @@ -0,0 +1,3 @@ +1 +2 +2 diff --git a/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/mesh b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/mesh new file mode 100644 index 000000000..df5093392 --- /dev/null +++ b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/mesh @@ -0,0 +1,4 @@ +3 + 14 15 23 22 24 8 9 7 4 + 16 25 12 18 26 3 11 5 2 + 25 17 19 12 13 6 10 3 1 diff --git a/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/nc_adjacencies b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/nc_adjacencies new file mode 100644 index 000000000..f16d3319c --- /dev/null +++ b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/nc_adjacencies @@ -0,0 +1,5 @@ +4 +1 2 3 3 +2 1 3 1 +1 3 3 3 +3 1 3 1 diff --git a/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/node_coords b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/node_coords new file mode 100644 index 000000000..d6ac7bdf2 --- /dev/null +++ b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/MESH/node_coords @@ -0,0 +1,27 @@ +26 + 74.9999999999 0.0000000000 124.9999999999 + 24.9999999999 0.0000000000 125.0000000000 + 49.9999999998 0.0000000000 125.0000000000 + 49.9999999999 0.0000000000 50.0000000000 + 0.0000000000 0.0000000000 125.0000000001 + 100.0000000000 0.0000000000 124.9999999997 + 0.0000000000 0.0000000000 50.0000000001 + 100.0000000000 0.0000000000 49.9999999999 + 49.9999999999 0.0000000000 100.0000000000 + 74.9999999999 0.0000000000 150.0000000000 + 24.9999999999 0.0000000000 150.0000000000 + 49.9999999998 0.0000000000 150.0000000000 + 74.9999999999 0.0000000000 100.0000000000 + 0.0000000000 0.0000000000 0.0000000000 + 100.0000000000 0.0000000000 0.0000000000 + 0.0000000000 0.0000000000 100.0000000000 + 100.0000000000 0.0000000000 100.0000000000 + 0.0000000000 0.0000000000 150.0000000000 + 100.0000000000 0.0000000000 150.0000000000 + 0.0000000000 0.0000000000 100.0000000000 + 100.0000000000 0.0000000000 100.0000000000 + 0.0000000000 0.0000000000 100.0000000000 + 100.0000000000 0.0000000000 100.0000000000 + 49.9999999999 0.0000000000 0.0000000000 + 49.9999999998 0.0000000000 100.0000000000 + 24.9999999999 0.0000000000 100.0000000000 diff --git a/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/Par_file b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/Par_file new file mode 100644 index 000000000..7443043e5 --- /dev/null +++ b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/Par_file @@ -0,0 +1,122 @@ +#----------------------------------------------------------- +# +# Simulation input parameters +# +#----------------------------------------------------------- + +# title of job +title = 3 element nonconforming mesh + +# parameters concerning partitioning +NPROC = 1 # number of processes + +# Output folder to store mesh related files +OUTPUT_FILES = OUTPUT_FILES + +#----------------------------------------------------------- +# +# Mesh +# +#----------------------------------------------------------- + +# Partitioning algorithm for decompose_mesh +PARTITIONING_TYPE = 3 # SCOTCH = 3, ascending order (very bad idea) = 1 + +# number of control nodes per element (4 or 9) +NGNOD = 9 + +# location to store the mesh +database_filename = ../database.bin + +#----------------------------------------------------------- +# +# Receivers +# +#----------------------------------------------------------- + +# use an existing STATION file found in ./DATA or create a new one from the receiver positions below in this Par_file +use_existing_STATIONS = .false. + +# number of receiver sets (i.e. number of receiver lines to create below) +nreceiversets = 1 + +# orientation +anglerec = 0.d0 # angle to rotate components at receivers +rec_normal_to_surface = .false. # base anglerec normal to surface (external mesh and curve file needed) + +# first receiver set (repeat these 6 lines and adjust nreceiversets accordingly) +nrec = 1 # number of receivers +xdeb = 0.d0 # first receiver x in meters +zdeb = 0.d0 # first receiver z in meters +xfin = 0.d0 # last receiver x in meters (ignored if only one receiver) +zfin = 0.d0 # last receiver z in meters (ignored if only one receiver) +record_at_surface_same_vertical = .false. # receivers inside the medium or at the surface + +# filename to store stations file +stations_filename = OUTPUT_FILES/STATIONS + +#----------------------------------------------------------- +# +# Velocity and density models +# +#----------------------------------------------------------- + +# number of model materials +nbmodels = 2 +# available material types (see user manual for more information) +# acoustic: model_number 1 rho Vp 0 0 0 QKappa Qmu 0 0 0 0 0 0 +# elastic: model_number 1 rho Vp Vs 0 0 QKappa Qmu 0 0 0 0 0 0 +# anistoropic: model_number 2 rho c11 c13 c15 c33 c35 c55 c12 c23 c25 0 0 0 +# poroelastic: model_number 3 rhos rhof phi c kxx kxz kzz Ks Kf Kfr etaf mufr Qmu +# tomo: model_number -1 0 9999 9999 A 0 0 9999 9999 0 0 0 0 0 +# +# The problem values are as follows: +# top: rho = 2.60 * 10^3 kg/m3, kappa= 5.2 * 10^10 Pa, mu =2.66 * 10^10 Pa +# bottom: rho = 3.38 * 10^3 kg/m3, kappa= 1.3 * 10^11 Pa, mu = 6.8 * 10^10 Pa +# After conversion to VP/VS we have following model values. +1 1 2600.d0 5859.90d0 3199.40d0 0 0 9999 9999 0 0 0 0 0 0 +2 1 2600.d0 5859.90d0 3199.40d0 0 0 9999 9999 0 0 0 0 0 0 + +# external tomography file +TOMOGRAPHY_FILE = ./DATA/tomo_file.xyz + +# use an external mesh created by an external meshing tool or use the internal mesher +read_external_mesh = .true. + +#----------------------------------------------------------- +# +# PARAMETERS FOR EXTERNAL MESHING +# +#----------------------------------------------------------- + +# data concerning mesh, when generated using third-party app (more info in README) +# (see also absorbing_conditions above) +mesh_file = ./MESH/mesh # file containing the mesh +nodes_coords_file = ./MESH/node_coords # file containing the nodes coordinates +materials_file = ./MESH/materials # file containing the material number for each element +free_surface_file = ./MESH/free_surface # file containing the free surface +axial_elements_file = dummy # file containing the axial elements if AXISYM is true +absorbing_surface_file = dummy # file containing the absorbing surface +acoustic_forcing_surface_file = dummy # file containing the acoustic forcing surface +absorbing_cpml_file = dummy # file containing the CPML element numbers +tangential_detection_curve_file = dummy # file containing the curve delimiting the velocity model +nonconforming_adjacencies_file = ./MESH/nc_adjacencies + +#----------------------------------------------------------- +# +# PARAMETERS FOR INTERNAL MESHING +# +#----------------------------------------------------------- + +STACEY_ABSORBING_CONDITIONS = .false. + + +#----------------------------------------------------------- +# +# Display parameters +# +#----------------------------------------------------------- + +# meshing output +output_grid_Gnuplot = .false. # generate a GNUPLOT file containing the grid, and a script to plot it +output_grid_ASCII = .false. # dump the grid in an ASCII text file consisting of a set of X,Y,Z points or not diff --git a/tmp/topography.dat b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/simple_dg_topo.dat similarity index 63% rename from tmp/topography.dat rename to tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/simple_dg_topo.dat index 9fa059dda..7252dcacb 100644 --- a/tmp/topography.dat +++ b/tests/unit-tests/data/dim2/3_elem_nonconforming/provenance/simple_dg_topo.dat @@ -1,25 +1,29 @@ # # number of interfaces # - 2 +3 # # for each interface below, we give the number of points and then x,z for each point # # # interface number 1 (bottom of the mesh) # - 2 - 0 0 - 400 0 -# interface number 2 (topography, top of the mesh) +2 +0 0 +100 0 # - 2 - 0 400 - 400 400 +# interface number 2 # -# for each layer, we give the number of spectral elements in the vertical direction +2 +0 100 +100 100 # +# interface number 3 (top of the mesh) # -# layer number 1 (bottom layer) +2 +0 150 +100 150 # - 30 +# for each layer, we give the number of spectral elements in the vertical direction +1 +1 diff --git a/tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Material_SqrCirc b/tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Material_SqrCirc similarity index 100% rename from tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Material_SqrCirc rename to tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Material_SqrCirc diff --git a/tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Mesh_SqrCirc b/tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Mesh_SqrCirc similarity index 100% rename from tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Mesh_SqrCirc rename to tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Mesh_SqrCirc diff --git a/tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Nodes_SqrCirc b/tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Nodes_SqrCirc similarity index 100% rename from tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Nodes_SqrCirc rename to tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Nodes_SqrCirc diff --git a/tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Surf_abs_SqrCirc b/tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Surf_abs_SqrCirc similarity index 100% rename from tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Surf_abs_SqrCirc rename to tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Surf_abs_SqrCirc diff --git a/tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Surf_free_SqrCirc b/tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Surf_free_SqrCirc similarity index 100% rename from tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Surf_free_SqrCirc rename to tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Surf_free_SqrCirc diff --git a/tests/unit-tests/data/mesh/Gmesh_Example_Stacey/Par_File b/tests/unit-tests/data/dim2/Gmesh_Example_Stacey/Par_File similarity index 92% rename from tests/unit-tests/data/mesh/Gmesh_Example_Stacey/Par_File rename to tests/unit-tests/data/dim2/Gmesh_Example_Stacey/Par_File index 96b9e96ec..2cf8aee3b 100644 --- a/tests/unit-tests/data/mesh/Gmesh_Example_Stacey/Par_File +++ b/tests/unit-tests/data/dim2/Gmesh_Example_Stacey/Par_File @@ -11,7 +11,7 @@ title = Simple GMSH Mesh NPROC = 1 # number of processes # Output folder to store mesh related files -OUTPUT_FILES = tests/unit-tests/data/mesh/Gmesh_Example_Stacey +OUTPUT_FILES = tests/unit-tests/data/dim2/Gmesh_Example_Stacey #----------------------------------------------------------- @@ -27,7 +27,7 @@ PARTITIONING_TYPE = 3 # SCOTCH = 3, ascending order ( NGNOD = 9 # location to store the mesh -database_filename = tests/unit-tests/data/mesh/Gmesh_Example_Stacey/database.bin +database_filename = tests/unit-tests/data/dim2/Gmesh_Example_Stacey/database.bin #----------------------------------------------------------- # @@ -54,7 +54,7 @@ zfin = 0.5 # last receiver z in meters (ig record_at_surface_same_vertical = .false. # receivers inside the medium or at the surface # filename to store stations file -stations_filename = tests/unit-tests/data/mesh/Gmesh_Example_Stacey/STATIONS +stations_filename = tests/unit-tests/data/dim2/Gmesh_Example_Stacey/STATIONS #----------------------------------------------------------- # @@ -96,12 +96,12 @@ read_external_mesh = .true. # data concerning mesh, when generated using third-party app (more info in README) # (see also absorbing_conditions above) -mesh_file = tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Mesh_SqrCirc # file containing the mesh -nodes_coords_file = tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Nodes_SqrCirc # file containing the nodes coordinates -materials_file = tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Material_SqrCirc # file containing the material number for each element -free_surface_file = tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Surf_free_SqrCirc # file containing the free surface +mesh_file = tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Mesh_SqrCirc # file containing the mesh +nodes_coords_file = tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Nodes_SqrCirc # file containing the nodes coordinates +materials_file = tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Material_SqrCirc # file containing the material number for each element +free_surface_file = tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Surf_free_SqrCirc # file containing the free surface axial_elements_file = dummy # file containing the axial elements if AXISYM is true -absorbing_surface_file = tests/unit-tests/data/mesh/Gmesh_Example_Stacey/MESH/Surf_abs_SqrCirc # file containing the absorbing surface +absorbing_surface_file = tests/unit-tests/data/dim2/Gmesh_Example_Stacey/MESH/Surf_abs_SqrCirc # file containing the absorbing surface acoustic_forcing_surface_file = dummy # file containing the acoustic forcing surface absorbing_cpml_file = dummy # file containing the CPML element numbers tangential_detection_curve_file = dummy # file containing the curve delimiting the velocity model diff --git a/tests/unit-tests/data/mesh/Gmesh_Example_Stacey/STATIONS b/tests/unit-tests/data/dim2/Gmesh_Example_Stacey/STATIONS similarity index 100% rename from tests/unit-tests/data/mesh/Gmesh_Example_Stacey/STATIONS rename to tests/unit-tests/data/dim2/Gmesh_Example_Stacey/STATIONS diff --git a/tests/unit-tests/data/mesh/Gmesh_Example_Stacey/database.bin b/tests/unit-tests/data/dim2/Gmesh_Example_Stacey/database.bin similarity index 100% rename from tests/unit-tests/data/mesh/Gmesh_Example_Stacey/database.bin rename to tests/unit-tests/data/dim2/Gmesh_Example_Stacey/database.bin diff --git a/tests/unit-tests/data/mesh/Gmesh_Example_Stacey/sources.yaml b/tests/unit-tests/data/dim2/Gmesh_Example_Stacey/sources.yaml similarity index 100% rename from tests/unit-tests/data/mesh/Gmesh_Example_Stacey/sources.yaml rename to tests/unit-tests/data/dim2/Gmesh_Example_Stacey/sources.yaml diff --git a/tests/unit-tests/data/mesh/circular_mesh/database.bin b/tests/unit-tests/data/dim2/circular_mesh/database.bin similarity index 100% rename from tests/unit-tests/data/mesh/circular_mesh/database.bin rename to tests/unit-tests/data/dim2/circular_mesh/database.bin diff --git a/tests/unit-tests/data/mesh/circular_mesh/provenance/MESH/absorbing_surface_file b/tests/unit-tests/data/dim2/circular_mesh/provenance/MESH/absorbing_surface_file similarity index 100% rename from tests/unit-tests/data/mesh/circular_mesh/provenance/MESH/absorbing_surface_file rename to tests/unit-tests/data/dim2/circular_mesh/provenance/MESH/absorbing_surface_file diff --git a/tests/unit-tests/data/dim2/circular_mesh/provenance/MESH/free_surface_file b/tests/unit-tests/data/dim2/circular_mesh/provenance/MESH/free_surface_file new file mode 100644 index 000000000..573541ac9 --- /dev/null +++ b/tests/unit-tests/data/dim2/circular_mesh/provenance/MESH/free_surface_file @@ -0,0 +1 @@ +0 diff --git a/tests/unit-tests/data/mesh/circular_mesh/provenance/MESH/materials_file b/tests/unit-tests/data/dim2/circular_mesh/provenance/MESH/materials_file similarity index 100% rename from tests/unit-tests/data/mesh/circular_mesh/provenance/MESH/materials_file rename to tests/unit-tests/data/dim2/circular_mesh/provenance/MESH/materials_file diff --git a/tests/unit-tests/data/mesh/circular_mesh/provenance/MESH/mesh_file b/tests/unit-tests/data/dim2/circular_mesh/provenance/MESH/mesh_file similarity index 100% rename from tests/unit-tests/data/mesh/circular_mesh/provenance/MESH/mesh_file rename to tests/unit-tests/data/dim2/circular_mesh/provenance/MESH/mesh_file diff --git a/tests/unit-tests/data/mesh/circular_mesh/provenance/MESH/nodes_coords_file b/tests/unit-tests/data/dim2/circular_mesh/provenance/MESH/nodes_coords_file similarity index 100% rename from tests/unit-tests/data/mesh/circular_mesh/provenance/MESH/nodes_coords_file rename to tests/unit-tests/data/dim2/circular_mesh/provenance/MESH/nodes_coords_file diff --git a/tests/unit-tests/data/mesh/circular_mesh/provenance/Par_file b/tests/unit-tests/data/dim2/circular_mesh/provenance/Par_file similarity index 100% rename from tests/unit-tests/data/mesh/circular_mesh/provenance/Par_file rename to tests/unit-tests/data/dim2/circular_mesh/provenance/Par_file diff --git a/tests/unit-tests/data/mesh/circular_mesh/provenance/cubit_mesh.jou b/tests/unit-tests/data/dim2/circular_mesh/provenance/cubit_mesh.jou similarity index 100% rename from tests/unit-tests/data/mesh/circular_mesh/provenance/cubit_mesh.jou rename to tests/unit-tests/data/dim2/circular_mesh/provenance/cubit_mesh.jou diff --git a/tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/STATIONS b/tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/STATIONS similarity index 100% rename from tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/STATIONS rename to tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/STATIONS diff --git a/tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/database.bin b/tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/database.bin similarity index 100% rename from tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/database.bin rename to tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/database.bin diff --git a/tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/Par_File b/tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/Par_File similarity index 99% rename from tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/Par_File rename to tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/Par_File index 6a40aad20..051268f17 100644 --- a/tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/Par_File +++ b/tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/Par_File @@ -115,7 +115,7 @@ read_external_mesh = .false. # data concerning mesh, when generated using third-party app (more info in README) # (see also absorbing_conditions above) -mesh_file = ./DATA/mesh_file # file containing the mesh +mesh_file = ./data/dim2_file # file containing the mesh nodes_coords_file = ./DATA/nodes_coords_file # file containing the nodes coordinates materials_file = ./DATA/materials_file # file containing the material number for each element free_surface_file = ./DATA/free_surface_file # file containing the free surface diff --git a/tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/README.md b/tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/README.md similarity index 100% rename from tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/README.md rename to tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/README.md diff --git a/tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/Snakefile b/tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/Snakefile similarity index 100% rename from tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/Snakefile rename to tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/Snakefile diff --git a/tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/geometry.png b/tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/geometry.png similarity index 100% rename from tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/geometry.png rename to tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/geometry.png diff --git a/tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/seismograms.png b/tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/seismograms.png similarity index 100% rename from tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/seismograms.png rename to tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/seismograms.png diff --git a/tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/source.yaml b/tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/source.yaml similarity index 100% rename from tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/source.yaml rename to tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/source.yaml diff --git a/tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/specfem_config.yaml b/tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/specfem_config.yaml similarity index 100% rename from tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/specfem_config.yaml rename to tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/specfem_config.yaml diff --git a/tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/topography.dat b/tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/topography.dat similarity index 100% rename from tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/provenance/topography.dat rename to tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/provenance/topography.dat diff --git a/tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/sources.yaml b/tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/sources.yaml similarity index 100% rename from tests/unit-tests/data/mesh/cosserat_isotropic_homogeneous/sources.yaml rename to tests/unit-tests/data/dim2/cosserat_isotropic_homogeneous/sources.yaml diff --git a/tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/DATA/Par_file b/tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/DATA/Par_file similarity index 100% rename from tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/DATA/Par_file rename to tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/DATA/Par_file diff --git a/tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/DATA/README.md b/tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/DATA/README.md similarity index 100% rename from tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/DATA/README.md rename to tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/DATA/README.md diff --git a/tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/DATA/SOURCE b/tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/DATA/SOURCE similarity index 100% rename from tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/DATA/SOURCE rename to tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/DATA/SOURCE diff --git a/tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/DATA/interfaces_GPR_AIR.dat b/tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/DATA/interfaces_GPR_AIR.dat similarity index 100% rename from tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/DATA/interfaces_GPR_AIR.dat rename to tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/DATA/interfaces_GPR_AIR.dat diff --git a/tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/README.md b/tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/README.md similarity index 100% rename from tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/README.md rename to tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/README.md diff --git a/tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/database.bin b/tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/database.bin similarity index 100% rename from tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/database.bin rename to tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/database.bin diff --git a/tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/sources.yaml b/tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/sources.yaml similarity index 100% rename from tests/unit-tests/data/mesh/electromagnetic_mesh_morency2020/sources.yaml rename to tests/unit-tests/data/dim2/electromagnetic_mesh_morency2020/sources.yaml diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/Par_File b/tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/Par_File similarity index 90% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/Par_File rename to tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/Par_File index 4cab1ddb0..67ac863b4 100644 --- a/tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/Par_File +++ b/tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/Par_File @@ -11,7 +11,7 @@ title = Flat fluid/solid interface NPROC = 1 # number of processes # Output folder to store mesh related files -OUTPUT_FILES = tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom +OUTPUT_FILES = tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom #----------------------------------------------------------- # @@ -26,7 +26,7 @@ PARTITIONING_TYPE = 3 # SCOTCH = 3, ascending order ( NGNOD = 9 # location to store the mesh -database_filename = tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/database.bin +database_filename = tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/database.bin #----------------------------------------------------------- # @@ -53,7 +53,7 @@ zfin = 3400 # last receiver z in meters (ignored if record_at_surface_same_vertical = .false. # receivers inside the medium or at the surface # filename to store stations file -stations_filename = tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/STATIONS +stations_filename = tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/STATIONS #----------------------------------------------------------- # @@ -86,12 +86,12 @@ read_external_mesh = .false. # data concerning mesh, when generated using third-party app (more info in README) # (see also absorbing_conditions above) -mesh_file = ./DATA/Mesh_canyon/canyon_mesh_file # file containing the mesh -nodes_coords_file = ./DATA/Mesh_canyon/canyon_nodes_coords_file # file containing the nodes coordinates -materials_file = ./DATA/Mesh_canyon/canyon_materials_file # file containing the material number for each element -free_surface_file = ./DATA/Mesh_canyon/canyon_free_surface_file # file containing the free surface +mesh_file = ./data/dim2_canyon/canyon_mesh_file # file containing the mesh +nodes_coords_file = ./data/dim2_canyon/canyon_nodes_coords_file # file containing the nodes coordinates +materials_file = ./data/dim2_canyon/canyon_materials_file # file containing the material number for each element +free_surface_file = ./data/dim2_canyon/canyon_free_surface_file # file containing the free surface axial_elements_file = ./DATA/axial_elements_file # file containing the axial elements if AXISYM is true -absorbing_surface_file = ./DATA/Mesh_canyon/canyon_absorbing_surface_file # file containing the absorbing surface +absorbing_surface_file = ./data/dim2_canyon/canyon_absorbing_surface_file # file containing the absorbing surface acoustic_forcing_surface_file = ./DATA/MSH/Surf_acforcing_Bottom_enforcing_mesh # file containing the acoustic forcing surface absorbing_cpml_file = ./DATA/absorbing_cpml_file # file containing the CPML element numbers tangential_detection_curve_file = ./DATA/courbe_eros_nodes # file containing the curve delimiting the velocity model @@ -103,7 +103,7 @@ tangential_detection_curve_file = ./DATA/courbe_eros_nodes # file containing th #----------------------------------------------------------- # file containing interfaces for internal mesh -interfacesfile = tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/topography.dat +interfacesfile = tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/topography.dat # geometry of the model (origin lower-left corner = 0,0) and mesh description xmin = 0.d0 # abscissa of left side of the model diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/STATIONS b/tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/STATIONS similarity index 100% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/STATIONS rename to tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/STATIONS diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/database.bin b/tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/database.bin similarity index 100% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/database.bin rename to tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/database.bin diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/gridfile.pdf b/tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/gridfile.pdf similarity index 100% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/gridfile.pdf rename to tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/gridfile.pdf diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/sources.yaml b/tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/sources.yaml similarity index 100% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/sources.yaml rename to tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/sources.yaml diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/topography.dat b/tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/topography.dat similarity index 100% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_curved_ocean_bottom/topography.dat rename to tests/unit-tests/data/dim2/fluid_solid_mesh_curved_ocean_bottom/topography.dat diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/Par_File b/tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/Par_File similarity index 90% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/Par_File rename to tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/Par_File index 818207a6a..e0473479a 100644 --- a/tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/Par_File +++ b/tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/Par_File @@ -11,7 +11,7 @@ title = Flat fluid/solid interface NPROC = 1 # number of processes # Output folder to store mesh related files -OUTPUT_FILES = tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom +OUTPUT_FILES = tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom #----------------------------------------------------------- # @@ -26,7 +26,7 @@ PARTITIONING_TYPE = 3 # SCOTCH = 3, ascending order ( NGNOD = 9 # location to store the mesh -database_filename = tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/database.bin +database_filename = tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/database.bin #----------------------------------------------------------- # @@ -53,7 +53,7 @@ zfin = 3400 # last receiver z in meters (ignored if record_at_surface_same_vertical = .false. # receivers inside the medium or at the surface # filename to store stations file -stations_filename = tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/STATIONS +stations_filename = tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/STATIONS #----------------------------------------------------------- # @@ -86,12 +86,12 @@ read_external_mesh = .false. # data concerning mesh, when generated using third-party app (more info in README) # (see also absorbing_conditions above) -mesh_file = ./DATA/Mesh_canyon/canyon_mesh_file # file containing the mesh -nodes_coords_file = ./DATA/Mesh_canyon/canyon_nodes_coords_file # file containing the nodes coordinates -materials_file = ./DATA/Mesh_canyon/canyon_materials_file # file containing the material number for each element -free_surface_file = ./DATA/Mesh_canyon/canyon_free_surface_file # file containing the free surface +mesh_file = ./data/dim2_canyon/canyon_mesh_file # file containing the mesh +nodes_coords_file = ./data/dim2_canyon/canyon_nodes_coords_file # file containing the nodes coordinates +materials_file = ./data/dim2_canyon/canyon_materials_file # file containing the material number for each element +free_surface_file = ./data/dim2_canyon/canyon_free_surface_file # file containing the free surface axial_elements_file = ./DATA/axial_elements_file # file containing the axial elements if AXISYM is true -absorbing_surface_file = ./DATA/Mesh_canyon/canyon_absorbing_surface_file # file containing the absorbing surface +absorbing_surface_file = ./data/dim2_canyon/canyon_absorbing_surface_file # file containing the absorbing surface acoustic_forcing_surface_file = ./DATA/MSH/Surf_acforcing_Bottom_enforcing_mesh # file containing the acoustic forcing surface absorbing_cpml_file = ./DATA/absorbing_cpml_file # file containing the CPML element numbers tangential_detection_curve_file = ./DATA/courbe_eros_nodes # file containing the curve delimiting the velocity model @@ -103,7 +103,7 @@ tangential_detection_curve_file = ./DATA/courbe_eros_nodes # file containing th #----------------------------------------------------------- # file containing interfaces for internal mesh -interfacesfile = tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/topography.dat +interfacesfile = tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/topography.dat # geometry of the model (origin lower-left corner = 0,0) and mesh description xmin = 0.d0 # abscissa of left side of the model diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/STATIONS b/tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/STATIONS similarity index 100% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/STATIONS rename to tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/STATIONS diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/database.bin b/tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/database.bin similarity index 100% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/database.bin rename to tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/database.bin diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/error_message000000.txt b/tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/error_message000000.txt similarity index 100% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/error_message000000.txt rename to tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/error_message000000.txt diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/gridfile.pdf b/tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/gridfile.pdf similarity index 100% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/gridfile.pdf rename to tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/gridfile.pdf diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/sources.yaml b/tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/sources.yaml similarity index 100% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/sources.yaml rename to tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/sources.yaml diff --git a/tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/topography.dat b/tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/topography.dat similarity index 100% rename from tests/unit-tests/data/mesh/fluid_solid_mesh_flat_ocean_bottom/topography.dat rename to tests/unit-tests/data/dim2/fluid_solid_mesh_flat_ocean_bottom/topography.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/provenance/Par_file b/tests/unit-tests/data/dim2/homogeneous_elastic_anisotropic/Par_file similarity index 99% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/provenance/Par_file rename to tests/unit-tests/data/dim2/homogeneous_elastic_anisotropic/Par_file index 1ad13b2d9..4a441fb01 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/provenance/Par_file +++ b/tests/unit-tests/data/dim2/homogeneous_elastic_anisotropic/Par_file @@ -296,7 +296,7 @@ read_external_mesh = .false. # data concerning mesh, when generated using third-party app (more info in README) # (see also absorbing_conditions above) -mesh_file = ./DATA/mesh_file # file containing the mesh +mesh_file = ./data/dim2_file # file containing the mesh nodes_coords_file = ./DATA/nodes_coords_file # file containing the nodes coordinates materials_file = ./DATA/materials_file # file containing the material number for each element free_surface_file = ./DATA/free_surface_file # file containing the free surface diff --git a/tests/unit-tests/data/mesh/homogeneous_elastic_anisotropic/SOURCE b/tests/unit-tests/data/dim2/homogeneous_elastic_anisotropic/SOURCE similarity index 100% rename from tests/unit-tests/data/mesh/homogeneous_elastic_anisotropic/SOURCE rename to tests/unit-tests/data/dim2/homogeneous_elastic_anisotropic/SOURCE diff --git a/tests/unit-tests/data/mesh/homogeneous_elastic_anisotropic/database.bin b/tests/unit-tests/data/dim2/homogeneous_elastic_anisotropic/database.bin similarity index 100% rename from tests/unit-tests/data/mesh/homogeneous_elastic_anisotropic/database.bin rename to tests/unit-tests/data/dim2/homogeneous_elastic_anisotropic/database.bin diff --git a/tests/unit-tests/data/mesh/homogeneous_elastic_anisotropic/sources.yaml b/tests/unit-tests/data/dim2/homogeneous_elastic_anisotropic/sources.yaml similarity index 100% rename from tests/unit-tests/data/mesh/homogeneous_elastic_anisotropic/sources.yaml rename to tests/unit-tests/data/dim2/homogeneous_elastic_anisotropic/sources.yaml diff --git a/tests/unit-tests/data/mesh/homogeneous_elastic_anisotropic/topography.dat b/tests/unit-tests/data/dim2/homogeneous_elastic_anisotropic/topography.dat similarity index 100% rename from tests/unit-tests/data/mesh/homogeneous_elastic_anisotropic/topography.dat rename to tests/unit-tests/data/dim2/homogeneous_elastic_anisotropic/topography.dat diff --git a/tests/unit-tests/data/mesh/homogeneous_poroelastic_isotropic/Par_file b/tests/unit-tests/data/dim2/homogeneous_poroelastic_isotropic/Par_file similarity index 100% rename from tests/unit-tests/data/mesh/homogeneous_poroelastic_isotropic/Par_file rename to tests/unit-tests/data/dim2/homogeneous_poroelastic_isotropic/Par_file diff --git a/tests/unit-tests/data/mesh/homogeneous_poroelastic_isotropic/SOURCE b/tests/unit-tests/data/dim2/homogeneous_poroelastic_isotropic/SOURCE similarity index 100% rename from tests/unit-tests/data/mesh/homogeneous_poroelastic_isotropic/SOURCE rename to tests/unit-tests/data/dim2/homogeneous_poroelastic_isotropic/SOURCE diff --git a/tests/unit-tests/data/mesh/homogeneous_poroelastic_isotropic/STATIONS b/tests/unit-tests/data/dim2/homogeneous_poroelastic_isotropic/STATIONS similarity index 100% rename from tests/unit-tests/data/mesh/homogeneous_poroelastic_isotropic/STATIONS rename to tests/unit-tests/data/dim2/homogeneous_poroelastic_isotropic/STATIONS diff --git a/tests/unit-tests/data/mesh/homogeneous_poroelastic_isotropic/database.bin b/tests/unit-tests/data/dim2/homogeneous_poroelastic_isotropic/database.bin similarity index 100% rename from tests/unit-tests/data/mesh/homogeneous_poroelastic_isotropic/database.bin rename to tests/unit-tests/data/dim2/homogeneous_poroelastic_isotropic/database.bin diff --git a/tests/unit-tests/data/mesh/homogeneous_poroelastic_isotropic/interfaces.dat b/tests/unit-tests/data/dim2/homogeneous_poroelastic_isotropic/interfaces.dat similarity index 100% rename from tests/unit-tests/data/mesh/homogeneous_poroelastic_isotropic/interfaces.dat rename to tests/unit-tests/data/dim2/homogeneous_poroelastic_isotropic/interfaces.dat diff --git a/tests/unit-tests/data/mesh/homogeneous_poroelastic_isotropic/sources.yaml b/tests/unit-tests/data/dim2/homogeneous_poroelastic_isotropic/sources.yaml similarity index 100% rename from tests/unit-tests/data/mesh/homogeneous_poroelastic_isotropic/sources.yaml rename to tests/unit-tests/data/dim2/homogeneous_poroelastic_isotropic/sources.yaml diff --git a/tests/unit-tests/data/mesh/regular_mesh/database.bin b/tests/unit-tests/data/dim2/regular_mesh/database.bin similarity index 100% rename from tests/unit-tests/data/mesh/regular_mesh/database.bin rename to tests/unit-tests/data/dim2/regular_mesh/database.bin diff --git a/tests/unit-tests/data/mesh/regular_mesh/provenance/Par_File b/tests/unit-tests/data/dim2/regular_mesh/provenance/Par_File similarity index 99% rename from tests/unit-tests/data/mesh/regular_mesh/provenance/Par_File rename to tests/unit-tests/data/dim2/regular_mesh/provenance/Par_File index ed5ac1d70..a3e6bcfcc 100644 --- a/tests/unit-tests/data/mesh/regular_mesh/provenance/Par_File +++ b/tests/unit-tests/data/dim2/regular_mesh/provenance/Par_File @@ -106,7 +106,7 @@ read_external_mesh = .false. # data concerning mesh, when generated using third-party app (more info in README) # (see also absorbing_conditions above) -mesh_file = ./DATA/mesh_file # file containing the mesh +mesh_file = ./data/dim2_file # file containing the mesh nodes_coords_file = ./DATA/nodes_coords_file # file containing the nodes coordinates materials_file = ./DATA/materials_file # file containing the material number for each element free_surface_file = ./DATA/free_surface_file # file containing the free surface diff --git a/tests/unit-tests/data/mesh/simple_mesh_curved_topography/Par_File b/tests/unit-tests/data/dim2/simple_mesh_curved_topography/Par_File similarity index 95% rename from tests/unit-tests/data/mesh/simple_mesh_curved_topography/Par_File rename to tests/unit-tests/data/dim2/simple_mesh_curved_topography/Par_File index fa8c88747..d30d7af4b 100644 --- a/tests/unit-tests/data/mesh/simple_mesh_curved_topography/Par_File +++ b/tests/unit-tests/data/dim2/simple_mesh_curved_topography/Par_File @@ -11,7 +11,7 @@ title = Simple Mesh Falt Topography NPROC = 1 # number of processes # Output folder to store mesh related files -OUTPUT_FILES = tests/unit-tests/data/mesh/simple_mesh_curved_topography +OUTPUT_FILES = tests/unit-tests/data/dim2/simple_mesh_curved_topography #----------------------------------------------------------- @@ -27,7 +27,7 @@ PARTITIONING_TYPE = 3 # SCOTCH = 3, ascending order ( NGNOD = 9 # location to store the mesh -database_filename = tests/unit-tests/data/mesh/simple_mesh_curved_topography/database.bin +database_filename = tests/unit-tests/data/dim2/simple_mesh_curved_topography/database.bin #----------------------------------------------------------- # @@ -62,7 +62,7 @@ zfin = 1900. # last receiver z in meters record_at_surface_same_vertical = .false. # receivers inside the medium or at the surface (z values are ignored if this is set to true, they are replaced with the topography height) # filename to store stations file -stations_filename = tests/unit-tests/data/mesh/simple_mesh_curved_topography/STATIONS +stations_filename = tests/unit-tests/data/dim2/simple_mesh_curved_topography/STATIONS #----------------------------------------------------------- # @@ -106,7 +106,7 @@ read_external_mesh = .false. # data concerning mesh, when generated using third-party app (more info in README) # (see also absorbing_conditions above) -mesh_file = ./DATA/mesh_file # file containing the mesh +mesh_file = ./data/dim2_file # file containing the mesh nodes_coords_file = ./DATA/nodes_coords_file # file containing the nodes coordinates materials_file = ./DATA/materials_file # file containing the material number for each element free_surface_file = ./DATA/free_surface_file # file containing the free surface @@ -123,7 +123,7 @@ tangential_detection_curve_file = ./DATA/courbe_eros_nodes # file containing th #----------------------------------------------------------- # file containing interfaces for internal mesh -interfacesfile = tests/unit-tests/data/mesh/simple_mesh_curved_topography/topography.dat +interfacesfile = tests/unit-tests/data/dim2/simple_mesh_curved_topography/topography.dat # geometry of the model (origin lower-left corner = 0,0) and mesh description xmin = 0.d0 # abscissa of left side of the model diff --git a/tests/unit-tests/data/mesh/simple_mesh_curved_topography/README.md b/tests/unit-tests/data/dim2/simple_mesh_curved_topography/README.md similarity index 75% rename from tests/unit-tests/data/mesh/simple_mesh_curved_topography/README.md rename to tests/unit-tests/data/dim2/simple_mesh_curved_topography/README.md index 535bb9028..41801f17f 100644 --- a/tests/unit-tests/data/mesh/simple_mesh_curved_topography/README.md +++ b/tests/unit-tests/data/dim2/simple_mesh_curved_topography/README.md @@ -16,8 +16,8 @@ cd $MESHFEM_PATH -p Par_File ## To generate the pdf -gunplot tests/unit-tests/data/mesh/simple_mesh_curved_topography/plot_gridfile.gnuplot -cd tests/unit-tests/data/mesh/simple_mesh_curved_topography/ +gunplot tests/unit-tests/data/dim2/simple_mesh_curved_topography/plot_gridfile.gnuplot +cd tests/unit-tests/data/dim2/simple_mesh_curved_topography/ ps2pdf gridfile.ps gridfile.pdf ``` diff --git a/tests/unit-tests/data/mesh/simple_mesh_curved_topography/STATIONS b/tests/unit-tests/data/dim2/simple_mesh_curved_topography/STATIONS similarity index 100% rename from tests/unit-tests/data/mesh/simple_mesh_curved_topography/STATIONS rename to tests/unit-tests/data/dim2/simple_mesh_curved_topography/STATIONS diff --git a/tests/unit-tests/data/mesh/simple_mesh_curved_topography/database.bin b/tests/unit-tests/data/dim2/simple_mesh_curved_topography/database.bin similarity index 100% rename from tests/unit-tests/data/mesh/simple_mesh_curved_topography/database.bin rename to tests/unit-tests/data/dim2/simple_mesh_curved_topography/database.bin diff --git a/tests/unit-tests/data/mesh/simple_mesh_curved_topography/gridfile.pdf b/tests/unit-tests/data/dim2/simple_mesh_curved_topography/gridfile.pdf similarity index 100% rename from tests/unit-tests/data/mesh/simple_mesh_curved_topography/gridfile.pdf rename to tests/unit-tests/data/dim2/simple_mesh_curved_topography/gridfile.pdf diff --git a/tests/unit-tests/data/mesh/simple_mesh_curved_topography/sources.yaml b/tests/unit-tests/data/dim2/simple_mesh_curved_topography/sources.yaml similarity index 100% rename from tests/unit-tests/data/mesh/simple_mesh_curved_topography/sources.yaml rename to tests/unit-tests/data/dim2/simple_mesh_curved_topography/sources.yaml diff --git a/tests/unit-tests/data/mesh/simple_mesh_curved_topography/topography.dat b/tests/unit-tests/data/dim2/simple_mesh_curved_topography/topography.dat similarity index 100% rename from tests/unit-tests/data/mesh/simple_mesh_curved_topography/topography.dat rename to tests/unit-tests/data/dim2/simple_mesh_curved_topography/topography.dat diff --git a/tests/unit-tests/data/mesh/simple_mesh_flat_topography/Par_File b/tests/unit-tests/data/dim2/simple_mesh_flat_topography/Par_File similarity index 95% rename from tests/unit-tests/data/mesh/simple_mesh_flat_topography/Par_File rename to tests/unit-tests/data/dim2/simple_mesh_flat_topography/Par_File index 9f252e49c..98deb18d4 100644 --- a/tests/unit-tests/data/mesh/simple_mesh_flat_topography/Par_File +++ b/tests/unit-tests/data/dim2/simple_mesh_flat_topography/Par_File @@ -11,7 +11,7 @@ title = Simple Mesh Falt Topography NPROC = 1 # number of processes # Output folder to store mesh related files -OUTPUT_FILES = tests/unit-tests/data/mesh/simple_mesh_flat_topography +OUTPUT_FILES = tests/unit-tests/data/dim2/simple_mesh_flat_topography #----------------------------------------------------------- @@ -27,7 +27,7 @@ PARTITIONING_TYPE = 3 # SCOTCH = 3, ascending order ( NGNOD = 9 # location to store the mesh -database_filename = tests/unit-tests/data/mesh/simple_mesh_flat_topography/database.bin +database_filename = tests/unit-tests/data/dim2/simple_mesh_flat_topography/database.bin #----------------------------------------------------------- # @@ -62,7 +62,7 @@ zfin = 1900. # last receiver z in meters record_at_surface_same_vertical = .false. # receivers inside the medium or at the surface (z values are ignored if this is set to true, they are replaced with the topography height) # filename to store stations file -stations_filename = tests/unit-tests/data/mesh/simple_mesh_flat_topography/STATIONS +stations_filename = tests/unit-tests/data/dim2/simple_mesh_flat_topography/STATIONS #----------------------------------------------------------- # @@ -106,7 +106,7 @@ read_external_mesh = .false. # data concerning mesh, when generated using third-party app (more info in README) # (see also absorbing_conditions above) -mesh_file = ./DATA/mesh_file # file containing the mesh +mesh_file = ./data/dim2_file # file containing the mesh nodes_coords_file = ./DATA/nodes_coords_file # file containing the nodes coordinates materials_file = ./DATA/materials_file # file containing the material number for each element free_surface_file = ./DATA/free_surface_file # file containing the free surface @@ -123,7 +123,7 @@ tangential_detection_curve_file = ./DATA/courbe_eros_nodes # file containing th #----------------------------------------------------------- # file containing interfaces for internal mesh -interfacesfile = tests/unit-tests/data/mesh/simple_mesh_flat_topography/topography.dat +interfacesfile = tests/unit-tests/data/dim2/simple_mesh_flat_topography/topography.dat # geometry of the model (origin lower-left corner = 0,0) and mesh description xmin = 0.d0 # abscissa of left side of the model diff --git a/tests/unit-tests/data/mesh/simple_mesh_flat_topography/README.md b/tests/unit-tests/data/dim2/simple_mesh_flat_topography/README.md similarity index 75% rename from tests/unit-tests/data/mesh/simple_mesh_flat_topography/README.md rename to tests/unit-tests/data/dim2/simple_mesh_flat_topography/README.md index e41a1e636..9bebd2161 100644 --- a/tests/unit-tests/data/mesh/simple_mesh_flat_topography/README.md +++ b/tests/unit-tests/data/dim2/simple_mesh_flat_topography/README.md @@ -16,8 +16,8 @@ cd $MESHFEM_PATH -p Par_File ## To generate the pdf -gunplot tests/unit-tests/data/mesh/simple_mesh_flat_topography/plot_gridfile.gnuplot -cd tests/unit-tests/data/mesh/simple_mesh_flat_topography/ +gunplot tests/unit-tests/data/dim2/simple_mesh_flat_topography/plot_gridfile.gnuplot +cd tests/unit-tests/data/dim2/simple_mesh_flat_topography/ ps2pdf gridfile.ps gridfile.pdf ``` diff --git a/tests/unit-tests/data/mesh/simple_mesh_flat_topography/STATIONS b/tests/unit-tests/data/dim2/simple_mesh_flat_topography/STATIONS similarity index 100% rename from tests/unit-tests/data/mesh/simple_mesh_flat_topography/STATIONS rename to tests/unit-tests/data/dim2/simple_mesh_flat_topography/STATIONS diff --git a/tests/unit-tests/data/mesh/simple_mesh_flat_topography/database.bin b/tests/unit-tests/data/dim2/simple_mesh_flat_topography/database.bin similarity index 100% rename from tests/unit-tests/data/mesh/simple_mesh_flat_topography/database.bin rename to tests/unit-tests/data/dim2/simple_mesh_flat_topography/database.bin diff --git a/tests/unit-tests/data/mesh/simple_mesh_flat_topography/gridfile.pdf b/tests/unit-tests/data/dim2/simple_mesh_flat_topography/gridfile.pdf similarity index 100% rename from tests/unit-tests/data/mesh/simple_mesh_flat_topography/gridfile.pdf rename to tests/unit-tests/data/dim2/simple_mesh_flat_topography/gridfile.pdf diff --git a/tests/unit-tests/data/mesh/simple_mesh_flat_topography/sources.yaml b/tests/unit-tests/data/dim2/simple_mesh_flat_topography/sources.yaml similarity index 100% rename from tests/unit-tests/data/mesh/simple_mesh_flat_topography/sources.yaml rename to tests/unit-tests/data/dim2/simple_mesh_flat_topography/sources.yaml diff --git a/tests/unit-tests/data/mesh/simple_mesh_flat_topography/topography.dat b/tests/unit-tests/data/dim2/simple_mesh_flat_topography/topography.dat similarity index 100% rename from tests/unit-tests/data/mesh/simple_mesh_flat_topography/topography.dat rename to tests/unit-tests/data/dim2/simple_mesh_flat_topography/topography.dat diff --git a/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/DATABASES/mesh_parameters.bin b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/DATABASES/mesh_parameters.bin new file mode 100644 index 000000000..0dbf2730e Binary files /dev/null and b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/DATABASES/mesh_parameters.bin differ diff --git a/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/DATABASES/proc000000_external_mesh.bin b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/DATABASES/proc000000_external_mesh.bin new file mode 100644 index 000000000..2eb962400 Binary files /dev/null and b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/DATABASES/proc000000_external_mesh.bin differ diff --git a/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/STATIONS b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/STATIONS new file mode 100644 index 000000000..975f7bc1b --- /dev/null +++ b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/STATIONS @@ -0,0 +1,9 @@ +X55 DB 40000.00 55000.00 0.0 0.0 +X60 DB 41000.00 60000.00 0.0 0.0 +X65 DB 42000.00 65000.00 0.0 0.0 +X70 DB 44000.00 70000.00 0.0 0.0 +X75 DB 48000.00 75000.00 0.0 0.0 +X80 DB 51000.00 80000.00 0.0 0.0 +X85 DB 54000.00 85000.00 0.0 0.0 +X90 DB 58000.00 90000.00 0.0 0.0 +X95 DB 62000.00 95000.00 0.0 0.0 diff --git a/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/force.yaml b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/force.yaml new file mode 100644 index 000000000..958750ef3 --- /dev/null +++ b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/force.yaml @@ -0,0 +1,14 @@ +number-of-sources: 1 +sources: + - force: + x : 50000.0 + y : 40000.0 + z : -30000.0 + source_surf: false + fx : 0.0 + fy : 0.0 + fz : 1.0 + Ricker: + factor: 1e14 + tshift: 0.0 + f0: 0.25 diff --git a/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/provenance/DATA/Par_File b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/provenance/DATA/Par_File new file mode 100644 index 000000000..63fb249b1 --- /dev/null +++ b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/provenance/DATA/Par_File @@ -0,0 +1,431 @@ +#----------------------------------------------------------- +# +# Simulation input parameters +# +#----------------------------------------------------------- + +# forward or adjoint simulation +# 1 = forward, 2 = adjoint, 3 = both simultaneously +SIMULATION_TYPE = 1 +# 0 = earthquake simulation, 1/2/3 = three steps in noise simulation +NOISE_TOMOGRAPHY = 0 +SAVE_FORWARD = .false. + +# solve a full FWI inverse problem from a single calling program with no I/Os, storing everything in memory, +# or run a classical forward or adjoint problem only and save the seismograms and/or sensitivity kernels to disk (with costlier I/Os) +INVERSE_FWI_FULL_PROBLEM = .false. + +# UTM projection parameters +# Use a negative zone number for the Southern hemisphere: +# The Northern hemisphere corresponds to zones +1 to +60, +# The Southern hemisphere corresponds to zones -1 to -60. +UTM_PROJECTION_ZONE = 11 +SUPPRESS_UTM_PROJECTION = .true. + +# number of MPI processors +NPROC = 1 + +# time step parameters +NSTEP = 1000 +DT = 0.04 + +# set to true to use local-time stepping (LTS) +LTS_MODE = .false. + +# Partitioning algorithm for decompose_mesh +# choose partitioner: 1==SCOTCH (default), 2==METIS, 3==PATOH, 4==ROWS_PART +PARTITIONING_TYPE = 1 + +#----------------------------------------------------------- +# +# LDDRK time scheme +# +#----------------------------------------------------------- +USE_LDDRK = .false. +INCREASE_CFL_FOR_LDDRK = .false. +RATIO_BY_WHICH_TO_INCREASE_IT = 1.4 + +#----------------------------------------------------------- +# +# Mesh +# +#----------------------------------------------------------- + +# Number of nodes for 2D and 3D shape functions for hexahedra. +# We use either 8-node mesh elements (bricks) or 27-node elements. +# If you use our internal mesher, the only option is 8-node bricks (27-node elements are not supported). +NGNOD = 8 + +# models: +# available options are: +# default (model parameters described by mesh properties) +# 1D models available are: +# 1d_prem,1d_socal,1d_cascadia +# 3D models available are: +# aniso,external,gll,salton_trough,tomo,SEP,coupled,... +MODEL = default + +# path for external model files (if MODEL = coupled) +COUPLED_MODEL_DIRECTORY = ./DATA/coupled_model/ + +# path for external tomographic models files +TOMOGRAPHY_PATH = ./DATA/tomo_files/ +# if you are using a SEP model (oil-industry format) +SEP_MODEL_DIRECTORY = ./DATA/my_SEP_model/ + +#----------------------------------------------------------- + +# parameters describing the model +APPROXIMATE_OCEAN_LOAD = .false. +TOPOGRAPHY = .false. +ATTENUATION = .false. +ANISOTROPY = .false. +GRAVITY = .false. + +# in case of attenuation, reference frequency in Hz at which the velocity values in the velocity model are given (unused otherwise) +ATTENUATION_f0_REFERENCE = 18.d0 + +# attenuation period range over which we try to mimic a constant Q factor +MIN_ATTENUATION_PERIOD = 999999998.d0 +MAX_ATTENUATION_PERIOD = 999999999.d0 +# ignore this range and ask the code to compute it automatically instead based on the estimated resolution of the mesh (use this unless you know what you are doing) +COMPUTE_FREQ_BAND_AUTOMATIC = .true. + +# Olsen's constant for Q_mu = constant * V_s attenuation rule +USE_OLSEN_ATTENUATION = .false. +OLSEN_ATTENUATION_RATIO = 0.05 + +#----------------------------------------------------------- +# +# Absorbing boundary conditions +# +#----------------------------------------------------------- + +# C-PML boundary conditions for a regional simulation +# (if set to .false., and STACEY_ABSORBING_CONDITIONS is also set to .false., you get a free surface instead +# in the case of elastic or viscoelastic mesh elements, and a rigid surface in the case of acoustic (fluid) elements +PML_CONDITIONS = .false. + +# C-PML top surface +PML_INSTEAD_OF_FREE_SURFACE = .false. + +# C-PML dominant frequency +f0_FOR_PML = 0.05555 + +# parameters used to rotate C-PML boundary conditions by a given angle (not completed yet) +# ROTATE_PML_ACTIVATE = .false. +# ROTATE_PML_ANGLE = 0. + +# absorbing boundary conditions for a regional simulation +# (if set to .false., and PML_CONDITIONS is also set to .false., you get a free surface instead +# in the case of elastic or viscoelastic mesh elements, and a rigid surface in the case of acoustic (fluid) elements +STACEY_ABSORBING_CONDITIONS = .false. + +# absorbing top surface (defined in mesh as 'free_surface_file') +STACEY_INSTEAD_OF_FREE_SURFACE = .false. + +# When STACEY_ABSORBING_CONDITIONS is set to .true. : +# absorbing conditions are defined in xmin, xmax, ymin, ymax and zmin +# this option BOTTOM_FREE_SURFACE can be set to .true. to +# make zmin free surface instead of absorbing condition +BOTTOM_FREE_SURFACE = .false. + +#----------------------------------------------------------- +# +# undoing attenuation and/or PMLs for sensitivity kernel calculations +# +#----------------------------------------------------------- + +# to undo attenuation and/or PMLs for sensitivity kernel calculations or forward runs with SAVE_FORWARD +# use the flag below. It performs undoing of attenuation and/or of PMLs in an exact way for sensitivity kernel calculations +# but requires disk space for temporary storage, and uses a significant amount of memory used as buffers for temporary storage. +# When that option is on the second parameter indicates how often the code dumps restart files to disk (if in doubt, use something between 100 and 1000). +UNDO_ATTENUATION_AND_OR_PML = .false. +NT_DUMP_ATTENUATION = 200 + +#----------------------------------------------------------- +# +# Visualization +# +#----------------------------------------------------------- + +# save AVS or OpenDX movies +# MOVIE_TYPE = 1 to show the top surface +# MOVIE_TYPE = 2 to show all the external faces of the mesh +CREATE_SHAKEMAP = .false. +MOVIE_SURFACE = .false. +MOVIE_TYPE = 1 +MOVIE_VOLUME = .false. +SAVE_DISPLACEMENT = .false. +MOVIE_VOLUME_STRESS = .false. +USE_HIGHRES_FOR_MOVIES = .false. +NTSTEP_BETWEEN_FRAMES = 200 +HDUR_MOVIE = 0.0 + +# save AVS or OpenDX mesh files to check the mesh +SAVE_MESH_FILES = .false. + +# path to store the local database file on each node +LOCAL_PATH = ./OUTPUT_FILES/DATABASES_MPI + +# interval at which we output time step info and max of norm of displacement +NTSTEP_BETWEEN_OUTPUT_INFO = 500 + +#----------------------------------------------------------- +# +# Sources +# +#----------------------------------------------------------- + +# sources and receivers Z coordinates given directly (i.e. as their true position) instead of as their depth +USE_SOURCES_RECEIVERS_Z = .false. + +# use a (tilted) FORCESOLUTION force point source (or several) instead of a CMTSOLUTION moment-tensor source. +# This can be useful e.g. for oil industry foothills simulations or asteroid simulations +# in which the source is a vertical force, normal force, tilted force, impact etc. +# If this flag is turned on, the FORCESOLUTION file must be edited by giving: +# - the corresponding time-shift parameter, +# - the half duration (hdur, in s) for Gaussian/Step function, dominant frequency (f0, in Hz) for Ricker, +# - the coordinates of the source, +# - the source time function type (0=Gaussian function, 1=Ricker wavelet, 2=Step function), +# - the magnitude of the force source, +# - the components of a (non necessarily unitary) direction vector for the force source in the E/N/Z_UP basis. +# The direction vector is made unitary internally in the code and thus only its direction matters here; +# its norm is ignored and the norm of the force used is the factor force source times the source time function. +USE_FORCE_POINT_SOURCE = .true. + +SOURCE_FILENAME = ./DATA/CMTSOLUTION + +# set to true to use a Ricker source time function instead of the source time functions set by default +# to represent a (tilted) FORCESOLUTION force point source or a CMTSOLUTION moment-tensor source. +USE_RICKER_TIME_FUNCTION = .false. + +# use an external source time function +# you must add a file with your source time function and the file name path +# relative to working directory at the end of CMTSOLUTION or FORCESOLUTION file +# (with multiple sources, one file per source is required). +# This file must have a single column containing the amplitudes of the source at all time steps; +# time step size used must be equal to DT as defined at the beginning of this Par_file. +# Be sure when this option is .false. to remove the name of stf file in CMTSOLUTION or FORCESOLUTION +USE_EXTERNAL_SOURCE_FILE = .false. + +# print source time function +PRINT_SOURCE_TIME_FUNCTION = .false. + +# source encoding +# (for acoustic simulations only for now) determines source encoding factor +/-1 depending on sign of moment tensor +# (see e.g. Krebs et al., 2009. Fast full-wavefield seismic inversion using encoded sources, Geophysics, 74 (6), WCC177-WCC188.) +USE_SOURCE_ENCODING = .false. + +#----------------------------------------------------------- +# +# Seismograms +# +#----------------------------------------------------------- + +# interval in time steps for writing of seismograms +NTSTEP_BETWEEN_OUTPUT_SEISMOS = 10000 + +# set to n to reduce the sampling rate of output seismograms by a factor of n +# defaults to 1, which means no down-sampling +NTSTEP_BETWEEN_OUTPUT_SAMPLE = 1 + +# decide if we save displacement, velocity, acceleration and/or pressure in forward runs (they can be set to true simultaneously) +# currently pressure seismograms are implemented in acoustic (i.e. fluid) elements only +SAVE_SEISMOGRAMS_DISPLACEMENT = .true. +SAVE_SEISMOGRAMS_VELOCITY = .false. +SAVE_SEISMOGRAMS_ACCELERATION = .false. +SAVE_SEISMOGRAMS_PRESSURE = .false. # currently implemented in acoustic (i.e. fluid) elements only + +# option to save strain seismograms +# this option is useful for strain Green's tensor +SAVE_SEISMOGRAMS_STRAIN = .false. + +# save seismograms also when running the adjoint runs for an inverse problem +# (usually they are unused and not very meaningful, leave this off in almost all cases) +SAVE_SEISMOGRAMS_IN_ADJOINT_RUN = .true. + +# save seismograms in binary or ASCII format (binary is smaller but may not be portable between machines) +USE_BINARY_FOR_SEISMOGRAMS = .false. + +# output seismograms in Seismic Unix format (binary with 240-byte-headers) +SU_FORMAT = .false. + +# output seismograms in ASDF (requires asdf-library) +ASDF_FORMAT = .false. + +# output seismograms in HDF5 (requires hdf5-library and WRITE_SEISMOGRAMS_BY_MAIN) +HDF5_FORMAT = .false. + +# decide if main process writes all the seismograms or if all processes do it in parallel +WRITE_SEISMOGRAMS_BY_MAIN = .false. + +# save all seismograms in one large combined file instead of one file per seismogram +# to avoid overloading shared non-local file systems such as LUSTRE or GPFS for instance +SAVE_ALL_SEISMOS_IN_ONE_FILE = .false. + +# use a trick to increase accuracy of pressure seismograms in fluid (acoustic) elements: +# use the second derivative of the source for the source time function instead of the source itself, +# and then record -potential_acoustic() as pressure seismograms instead of -potential_dot_dot_acoustic(); +# this is mathematically equivalent, but numerically significantly more accurate because in the explicit +# Newmark time scheme acceleration is accurate at zeroth order while displacement is accurate at second order, +# thus in fluid elements potential_dot_dot_acoustic() is accurate at zeroth order while potential_acoustic() +# is accurate at second order and thus contains significantly less numerical noise. +USE_TRICK_FOR_BETTER_PRESSURE = .false. + +#----------------------------------------------------------- +# +# Fault simulations +# +#----------------------------------------------------------- + +# Define if the simulation has kinematic or dynamic faults +HAS_FINITE_FAULT_SOURCE = .false. + +# File containing parameters of the fault +FAULT_PAR_FILE = dummy.txt + +# STATIONS in the fault plane +FAULT_STATIONS = dummy.txt + +# Specifications for heterogeneous stresses and friction for linear slip weakening friction parameters. To activate this feature set DATA/Par_file_faults name list&RUPTURE_SWITCHES, set TPV16=.TRUE.. +STRESS_FRICTION_FILE = dummy.txt + +# Heterogeneous stresses and friction input for rate and state friction. To activate this feature, in DATA/Par_file_faults name list&RUPTURE_SWITCHES, set RSF_HETE=.TRUE.. +RSF_HETE_FILE = dummy.txt + + +#----------------------------------------------------------- +# +# Energy calculation +# +#----------------------------------------------------------- + +# to plot energy curves, for instance to monitor how CPML absorbing layers behave; +# should be turned OFF in most cases because a bit expensive +OUTPUT_ENERGY = .false. +# every how many time steps we compute energy (which is a bit expensive to compute) +NTSTEP_BETWEEN_OUTPUT_ENERGY = 10 + +#----------------------------------------------------------- +# +# Adjoint kernel outputs +# +#----------------------------------------------------------- + +# interval in time steps for reading adjoint traces +# 0 = read the whole adjoint sources at start time +NTSTEP_BETWEEN_READ_ADJSRC = 0 + +# read adjoint sources using ASDF (requires asdf-library) +READ_ADJSRC_ASDF = .false. + +# this parameter must be set to .true. to compute anisotropic kernels +# in crust and mantle (related to the 21 Cij in geographical coordinates) +# default is .false. to compute isotropic kernels (related to alpha and beta) +ANISOTROPIC_KL = .false. + +# compute transverse isotropic kernels (alpha_v,alpha_h,beta_v,beta_h,eta,rho) +# rather than fully anisotropic kernels in case ANISOTROPIC_KL is set to .true. +SAVE_TRANSVERSE_KL = .false. + +# this parameter must be set to .true. to compute anisotropic kernels for +# cost function using velocity observable rather than displacement +ANISOTROPIC_VELOCITY_KL = .false. + +# outputs approximate Hessian for preconditioning +APPROXIMATE_HESS_KL = .false. + +# save Moho mesh and compute Moho boundary kernels +SAVE_MOHO_MESH = .false. + +#----------------------------------------------------------- +# +# Coupling with an injection technique (DSM, AxiSEM, or FK) +# +#----------------------------------------------------------- +COUPLE_WITH_INJECTION_TECHNIQUE = .false. +INJECTION_TECHNIQUE_TYPE = 3 # 1 = DSM, 2 = AxiSEM, 3 = FK +MESH_A_CHUNK_OF_THE_EARTH = .false. +TRACTION_PATH = ./DATA/AxiSEM_tractions/3/ +FKMODEL_FILE = FKmodel +RECIPROCITY_AND_KH_INTEGRAL = .false. # does not work yet + +#----------------------------------------------------------- +## +## Prescribed wavefield discontinuity on an interface +## +##----------------------------------------------------------- +IS_WAVEFIELD_DISCONTINUITY = .false. + +#----------------------------------------------------------- +# +# Run modes +# +#----------------------------------------------------------- + +# Simultaneous runs +# added the ability to run several calculations (several earthquakes) +# in an embarrassingly-parallel fashion from within the same run; +# this can be useful when using a very large supercomputer to compute +# many earthquakes in a catalog, in which case it can be better from +# a batch job submission point of view to start fewer and much larger jobs, +# each of them computing several earthquakes in parallel. +# To turn that option on, set parameter NUMBER_OF_SIMULTANEOUS_RUNS to a value greater than 1. +# To implement that, we create NUMBER_OF_SIMULTANEOUS_RUNS MPI sub-communicators, +# each of them being labeled "my_local_mpi_comm_world", and we use them +# in all the routines in "src/shared/parallel.f90", except in MPI_ABORT() because in that case +# we need to kill the entire run. +# When that option is on, of course the number of processor cores used to start +# the code in the batch system must be a multiple of NUMBER_OF_SIMULTANEOUS_RUNS, +# all the individual runs must use the same number of processor cores, +# which as usual is NPROC in the Par_file, +# and thus the total number of processor cores to request from the batch system +# should be NUMBER_OF_SIMULTANEOUS_RUNS * NPROC. +# All the runs to perform must be placed in directories called run0001, run0002, run0003 and so on +# (with exactly four digits). +# +# Imagine you have 10 independent calculations to do, each of them on 100 cores; you have three options: +# +# 1/ submit 10 jobs to the batch system +# +# 2/ submit a single job on 1000 cores to the batch, and in that script create a sub-array of jobs to start 10 jobs, +# each running on 100 cores (see e.g. http://www.schedmd.com/slurmdocs/job_array.html ) +# +# 3/ submit a single job on 1000 cores to the batch, start SPECFEM3D on 1000 cores, create 10 sub-communicators, +# cd into one of 10 subdirectories (called e.g. run0001, run0002,... run0010) depending on the sub-communicator +# your MPI rank belongs to, and run normally on 100 cores using that sub-communicator. +# +# The option below implements 3/. +# +NUMBER_OF_SIMULTANEOUS_RUNS = 1 + +# if we perform simultaneous runs in parallel, if only the source and receivers vary between these runs +# but not the mesh nor the model (velocity and density) then we can also read the mesh and model files +# from a single run in the beginning and broadcast them to all the others; for a large number of simultaneous +# runs for instance when solving inverse problems iteratively this can DRASTICALLY reduce I/Os to disk in the solver +# (by a factor equal to NUMBER_OF_SIMULTANEOUS_RUNS), and reducing I/Os is crucial in the case of huge runs. +# Thus, always set this option to .true. if the mesh and the model are the same for all simultaneous runs. +# In that case there is no need to duplicate the mesh and model file database (the content of the DATABASES_MPI +# directories) in each of the run0001, run0002,... directories, it is sufficient to have one in run0001 +# and the code will broadcast it to the others) +BROADCAST_SAME_MESH_AND_MODEL = .true. + +#----------------------------------------------------------- + +# set to true to use GPUs +GPU_MODE = .false. + +# ADIOS Options for I/Os +ADIOS_ENABLED = .false. +ADIOS_FOR_DATABASES = .false. +ADIOS_FOR_MESH = .false. +ADIOS_FOR_FORWARD_ARRAYS = .false. +ADIOS_FOR_KERNELS = .false. +ADIOS_FOR_UNDO_ATTENUATION = .false. + +# HDF5 Database I/O +# (note the flags for HDF5 and ADIOS are mutually exclusive, only one can be used) +HDF5_ENABLED = .false. +HDF5_FOR_MOVIES = .false. +HDF5_IO_NODES = 0 # HDF5 IO server with number of IO dedicated procs diff --git a/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/provenance/DATA/meshfem3D_files/Mesh_Par_file b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/provenance/DATA/meshfem3D_files/Mesh_Par_file new file mode 100644 index 000000000..f0d62d33f --- /dev/null +++ b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/provenance/DATA/meshfem3D_files/Mesh_Par_file @@ -0,0 +1,109 @@ +#----------------------------------------------------------- +# +# Meshing input parameters +# +#----------------------------------------------------------- + +MESH_A_CHUNK_OF_THE_EARTH = .false. +CHUNK_MESH_PAR_FILE = dummy.txt + +# coordinates of mesh block in latitude/longitude and depth in km +LATITUDE_MIN = 0.0 +LATITUDE_MAX = 80000.0 +LONGITUDE_MIN = 0.0 +LONGITUDE_MAX = 100000.0 +DEPTH_BLOCK_KM = 60.d0 +UTM_PROJECTION_ZONE = 11 +SUPPRESS_UTM_PROJECTION = .true. + +# file that contains the interfaces of the model / mesh +INTERFACES_FILE = ./DATA/meshfem3D_files/interfaces.txt + +# file that contains the cavity +CAVITY_FILE = no_cavity.dat + +# Number of nodes for 2D and 3D shape functions for hexahedra. +# We use either 8-node mesh elements (bricks) or 27-node elements. +# If you use our internal mesher, the only option is 8-node bricks (27-node elements are not supported). +NGNOD = 8 + +# number of elements at the surface along edges of the mesh at the surface +# (must be 8 * multiple of NPROC below if mesh is not regular and contains mesh doublings) +# (must be multiple of NPROC below if mesh is regular) +NEX_XI = 25 +NEX_ETA = 20 + +# number of MPI processors along xi and eta (can be different) +NPROC_XI = 1 +NPROC_ETA = 1 + +#----------------------------------------------------------- +# +# Doubling layers +# +#----------------------------------------------------------- + +# Regular/irregular mesh +USE_REGULAR_MESH = .true. +# Only for irregular meshes, number of doubling layers and their position +NDOUBLINGS = 0 +# NZ_DOUBLING_1 is the parameter to set up if there is only one doubling layer +# (more doubling entries can be added if needed to match NDOUBLINGS value) +NZ_DOUBLING_1 = 40 +NZ_DOUBLING_2 = 48 + +#----------------------------------------------------------- +# +# Visualization +# +#----------------------------------------------------------- + +# create mesh files for visualisation or further checking +CREATE_ABAQUS_FILES = .false. +CREATE_DX_FILES = .false. +CREATE_VTK_FILES = .true. + +# stores mesh files as cubit-exported files into directory MESH/ (for single process run) +SAVE_MESH_AS_CUBIT = .false. + +# path to store the databases files +LOCAL_PATH = ./OUTPUT_FILES/DATABASES_MPI + +#----------------------------------------------------------- +# +# CPML +# +#----------------------------------------------------------- + +# CPML perfectly matched absorbing layers +THICKNESS_OF_X_PML = 12.3d0 +THICKNESS_OF_Y_PML = 12.3d0 +THICKNESS_OF_Z_PML = 12.3d0 + +#----------------------------------------------------------- +# +# Domain materials +# +#----------------------------------------------------------- + +# number of materials +NMATERIALS = 1 +# define the different materials in the model as: +# #material_id #rho #vp #vs #Q_Kappa #Q_mu #anisotropy_flag #domain_id +# Q_Kappa : Q_Kappa attenuation quality factor +# Q_mu : Q_mu attenuation quality factor +# anisotropy_flag : 0 = no anisotropy / 1,2,... check the implementation in file aniso_model.f90 +# domain_id : 1 = acoustic / 2 = elastic +1 2300.0 2800.0 1500.0 2444.4 300.0 0 2 + +#----------------------------------------------------------- +# +# Domain regions +# +#----------------------------------------------------------- + +# number of regions +NREGIONS = 1 +# define the different regions of the model as : +#NEX_XI_BEGIN #NEX_XI_END #NEX_ETA_BEGIN #NEX_ETA_END #NZ_BEGIN #NZ_END #material_id +1 25 1 20 1 15 1 diff --git a/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/provenance/DATA/meshfem3D_files/interface1.txt b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/provenance/DATA/meshfem3D_files/interface1.txt new file mode 100644 index 000000000..44e0be8e3 --- /dev/null +++ b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/provenance/DATA/meshfem3D_files/interface1.txt @@ -0,0 +1,4 @@ +0 +0 +0 +0 diff --git a/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/provenance/DATA/meshfem3D_files/interfaces.txt b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/provenance/DATA/meshfem3D_files/interfaces.txt new file mode 100644 index 000000000..a1ce6bb7f --- /dev/null +++ b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/provenance/DATA/meshfem3D_files/interfaces.txt @@ -0,0 +1,16 @@ +# number of interfaces + 1 +# +# We describe each interface below, structured as a 2D-grid, with several parameters : +# number of points along XI and ETA, minimal XI ETA coordinates +# and spacing between points which must be constant. +# Then the records contain the Z coordinates of the NXI x NETA points. +# +# interface number 1 (topography, top of the mesh) + .true. 2 2 0.0 0.0 1000.0 1000.0 + /Users/lsawade/SPECFEMPP/benchmarks/build/release/dim3/homogeneous_halfspace/DATA/meshfem3D_files/interface1.txt +# +# for each layer, we give the number of spectral elements in the vertical direction +# +# layer number 1 (top layer) + 15 diff --git a/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/specfem_config.yaml b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/specfem_config.yaml new file mode 100644 index 000000000..e48bbb7d2 --- /dev/null +++ b/tests/unit-tests/data/dim3/HomogeneousHalfspaceElasticIsotropricForceNoABC/specfem_config.yaml @@ -0,0 +1,52 @@ +parameters: + + header: + ## Header information is used for logging. It is good practice to give your simulations explicit names + title: Isotropic Elastic simulation # name for your simulation + # A detailed description for your simulation + description: | + Material systems : Elastic domain (1) + Interfaces : None + Sources : Force source (1) + Boundary conditions : Neumann BCs on all edges + Debugging comment : This test tests elastic compute_forces routine + + simulation-setup: + ## quadrature setup + quadrature: + quadrature-type: GLL4 + + ## Solver setup + solver: + time-marching: + type-of-simulation: forward + time-scheme: + type: Newmark + dt: 4e-2 + nstep: 1000 + + simulation-mode: + forward: + writer: + seismogram: + format: ascii + directory: "." + + receivers: + stations: "displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/STATIONS" + angle: 0.0 + seismogram-type: + - displacement + nstep_between_samples: 1 + + ## Runtime setup + run-setup: + number-of-processors: 1 + number-of-runs: 1 + + ## databases + databases: + mesh-database: "displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/DATABASES_MPI/proc000000_external_mesh.bin" + mesh-parameters: "displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/DATABASES_MPI/mesh_parameters.bin" + + sources: "displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/force.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/newmark_tests.cpp b/tests/unit-tests/displacement_tests/Newmark/dim2/newmark_tests.cpp similarity index 97% rename from tests/unit-tests/displacement_tests/Newmark/newmark_tests.cpp rename to tests/unit-tests/displacement_tests/Newmark/dim2/newmark_tests.cpp index ae7eeeb1c..40af36d61 100644 --- a/tests/unit-tests/displacement_tests/Newmark/newmark_tests.cpp +++ b/tests/unit-tests/displacement_tests/Newmark/dim2/newmark_tests.cpp @@ -1,6 +1,6 @@ -#include "../../Kokkos_Environment.hpp" -#include "../../MPI_environment.hpp" -#include "../../utilities/include/interface.hpp" +#include "../../../Kokkos_Environment.hpp" +#include "../../../MPI_environment.hpp" +#include "../../../utilities/include/interface.hpp" #include "constants.hpp" #include "io/interface.hpp" #include "io/seismogram/reader.hpp" @@ -31,7 +31,8 @@ struct TestConfig { TestConfig config; // Create the test path by concatenating the base path with the test name - std::string test_path = "displacement_tests/Newmark/serial/" + test_name; + std::string test_path = + "displacement_tests/Newmark/serial/dim2/" + test_name; // Load config.yaml from the test directory std::string config_file = test_path + "/config.yaml"; @@ -92,7 +93,7 @@ class Newmark : public ::testing::TestWithParam { } }; -TEST_P(Newmark, Test) { +TEST_P(Newmark, 2D) { const std::string &test_path = GetParam(); // Load the test configuration from the directory @@ -141,7 +142,7 @@ TEST_P(Newmark, Test) { const auto stations_node = setup.get_stations(); const auto angle = setup.get_receiver_angle(); - auto receivers = specfem::io::read_receivers(stations_node, angle); + auto receivers = specfem::io::read_2d_receivers(stations_node, angle); std::cout << " Receiver information\n"; std::cout << "------------------------------" << std::endl; @@ -386,7 +387,7 @@ TEST_P(Newmark, Test) { // Load test directories and create parameterized test instances std::vector GetTestDirectories() { - std::string tests_filename = "displacement_tests/Newmark/tests.yaml"; + std::string tests_filename = "displacement_tests/Newmark/dim2/tests.yaml"; return parse_test_directories(tests_filename); } diff --git a/tests/unit-tests/displacement_tests/Newmark/tests.yaml b/tests/unit-tests/displacement_tests/Newmark/dim2/tests.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/tests.yaml rename to tests/unit-tests/displacement_tests/Newmark/dim2/tests.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/dim3/newmark_tests.cpp b/tests/unit-tests/displacement_tests/Newmark/dim3/newmark_tests.cpp new file mode 100644 index 000000000..8484b132c --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/dim3/newmark_tests.cpp @@ -0,0 +1,423 @@ +#include "../../../Kokkos_Environment.hpp" +#include "../../../MPI_environment.hpp" +#include "../../../utilities/include/interface.hpp" +#include "constants.hpp" +#include "io/interface.hpp" +#include "io/seismogram/reader.hpp" +#include "mesh/mesh.hpp" +#include "parameter_parser/interface.hpp" +#include "quadrature/interface.hpp" +#include "solver/solver.hpp" +#include "specfem/assembly.hpp" +#include "timescheme/timescheme.hpp" +#include "yaml-cpp/yaml.h" +#include +#include +#include + +// ------------------------------------- // +// ------- Test configuration ----------- // + +// Helper function to load test configuration from directory +struct TestConfig3D { + std::string name; + std::string id; + std::string description; + int number_of_processors; + type_real tolerance; + std::string specfem_config; + std::string traces; + + static TestConfig3D load_from_directory(const std::string &test_name) { + TestConfig3D config; + + // Create the test path by concatenating the base path with the test name + std::string test_path = + "displacement_tests/Newmark/serial/dim3/" + test_name; + + // Load config.yaml from the test directory + std::string config_file = test_path + "/config.yaml"; + + YAML::Node config_node; + try { + config_node = YAML::LoadFile(config_file); + } catch (const std::exception &e) { + throw std::runtime_error("Failed to load config file: " + config_file + + " - " + e.what()); + } + + config.id = config_node["id"].as(); + config.name = config_node["name"].as(); + config.description = config_node["description"].as(); + + // Load configuration + YAML::Node config_section = config_node["config"]; + config.number_of_processors = config_section["nproc"].as(); + config.tolerance = config_section["tolerance"].as(); + + // Load database paths and concatenate with test directory path + YAML::Node databases = config_node["databases"]; + config.specfem_config = + test_path + "/" + databases["specfem_config"].as(); + config.traces = test_path + "/" + databases["traces"].as(); + + return config; + } +}; + +// ------------------------------------- // + +// ----- Parse test directories ------------- // + +std::vector +parse_3D_test_directories(const std::string &tests_file) { + YAML::Node yaml = YAML::LoadFile(tests_file); + + std::vector test_names; + + for (const auto &test_node : yaml) { + std::string path = test_node.as(); + test_names.push_back(path); + } + + return test_names; +} + +// Parameterized test fixture for Newmark tests +class Newmark : public ::testing::TestWithParam { +protected: + void SetUp() override { + // Any setup needed for each test + } + + void TearDown() override { + // Any cleanup needed for each test + } +}; + +TEST_P(Newmark, 3D) { + const std::string &test_path = GetParam(); + + // Load the test configuration from the directory + TestConfig3D Test = TestConfig3D::load_from_directory(test_path); + + std::cout << "-------------------------------------------------------\n" + << "\033[0;32m[RUNNING]\033[0m Test: " << Test.name << "\n" + << "-------------------------------------------------------\n\n" + << std::endl; + + specfem::MPI::MPI *mpi = MPIEnvironment::get_mpi(); + + const auto parameter_file = Test.specfem_config; + + specfem::runtime_configuration::setup setup(parameter_file, __default_file__); + + const auto database_filename = setup.get_databases(); + const auto mesh_parameters_filename = setup.get_mesh_parameters(); + const auto source_node = setup.get_sources(); + + // Set up GLL quadrature points + const auto quadratures = setup.instantiate_quadrature(); + + // Read mesh generated MESHFEM + auto mesh = specfem::io::read_3d_mesh(mesh_parameters_filename, + database_filename, mpi); + const type_real dt = setup.get_dt(); + const int nsteps = setup.get_nsteps(); + + // Read sources + // if start time is not explicitly specified then t0 is determined using + // source frequencies and time shift + auto [sources, t0] = specfem::io::read_3d_sources( + source_node, nsteps, setup.get_t0(), dt, setup.get_simulation_type()); + + for (auto &source : sources) { + if (mpi->main_proc()) + std::cout << source->print() << std::endl; + } + + setup.update_t0(t0); + + // Instantiate the solver and timescheme + auto it = setup.instantiate_timescheme(); + + const auto stations_node = setup.get_stations(); + + // -------------------------------------------------------------- + // Get receivers + // -------------------------------------------------------------- + // create single receiver receivers vector for now + std::vector > > + receivers; + receivers.emplace_back( + std::make_shared< + specfem::receivers::receiver >( + "NET", "STA", 50000.0, 40000.0, 0.0)); + + mpi->cout("Receiver Information:"); + mpi->cout("-------------------------------"); + + if (mpi->main_proc()) { + std::cout << "Number of receivers : " << receivers.size() << "\n" + << std::endl; + } + + for (auto &receiver : receivers) { + mpi->cout(receiver->print()); + } + + const auto seismogram_types = setup.get_seismogram_types(); + + // Check only displacement seismogram types are being computed + + if (receivers.size() == 0) { + FAIL() << "--------------------------------------------------\n" + << "\033[0;31m[FAILED]\033[0m Test failed\n" + << " - Test: " << Test.name << "\n" + << " - Error: Stations file does not contain any receivers\n" + << "--------------------------------------------------\n\n" + << std::endl; + } + + const int max_sig_step = it->get_max_seismogram_step(); + const int nstep_between_samples = it->get_nstep_between_samples(); + specfem::assembly::assembly assembly( + mesh, quadratures, sources, receivers, setup.get_seismogram_types(), + setup.get_t0(), dt, nsteps, max_sig_step, nstep_between_samples, + setup.get_simulation_type(), setup.allocate_boundary_values(), + setup.instantiate_property_reader()); + + // it->link_assembly(assembly); + + // // User output + // if (mpi->main_proc()) + // std::cout << *it << std::endl; + + // std::shared_ptr solver = + // setup.instantiate_solver<5>(setup.get_dt(), assembly, it, {}); + + // solver->run(); + + // // -------------------------------------------------------------- + // // Write Seismograms + // // -------------------------------------------------------------- + + // auto seismograms = assembly.receivers; + + // seismograms.sync_seismograms(); + + // // -------------------------------------------------------------- + + // for (auto station_info : seismograms.stations()) { + + // // Get station and network names + // std::string network_name = station_info.network_name; + // std::string station_name = station_info.station_name; + + // // Initialize error and computed norm for each all seismogram types + // // that is each station + // type_real error = 0.0; + // type_real computed_norm = 0.0; + + // // Loop over all seismogram types for this station to compute the + // // total error and computed norm for a single station + // for (auto seismogram_type : station_info.get_seismogram_types()) { + + // // Initialize filenames vector to hold the seismogram filenames + // std::vector filenames; + + // switch (seismogram_type) { + // case specfem::wavefield::type::displacement: + // if (elastic_wave == specfem::enums::elastic_wave::sh) { + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.BXY.semd"); + // } else if (elastic_wave == specfem::enums::elastic_wave::psv) { + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.BXX.semd"); + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.BXZ.semd"); + // } + // break; + // case specfem::wavefield::type::velocity: + // if (elastic_wave == specfem::enums::elastic_wave::sh) { + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.BXY.semv"); + // } else if (elastic_wave == specfem::enums::elastic_wave::psv) { + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.BXX.semv"); + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.BXZ.semv"); + // } + // break; + // case specfem::wavefield::type::acceleration: + // if (elastic_wave == specfem::enums::elastic_wave::sh) { + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.BXY.sema"); + // } else if (elastic_wave == specfem::enums::elastic_wave::psv) { + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.BXX.sema"); + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.BXZ.sema"); + // } + // break; + // case specfem::wavefield::type::pressure: + // if (elastic_wave == specfem::enums::elastic_wave::sh) { + // FAIL() << "--------------------------------------------------\n" + // << "\033[0;31m[FAILED]\033[0m Test failed\n" + // << " - Test name: " << Test.name << "\n" + // << " - Error: Pressure seismograms are not supported for SH + // " + // "waves\n" + // << " - Network: " << network_name << "\n" + // << " - Station: " << station_name << "\n" + // << "--------------------------------------------------\n\n" + // << std::endl; + // } else if (elastic_wave == specfem::enums::elastic_wave::psv) { + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.PRE.semp"); + // } + // break; + // case specfem::wavefield::type::rotation: + // if (elastic_wave == specfem::enums::elastic_wave::sh) { + // FAIL() << "--------------------------------------------------\n" + // << "\033[0;31m[FAILED]\033[0m Test failed\n" + // << " - Test name: " << Test.name << "\n" + // << " - Error: Rotation seismograms are not supported for SH" + // "waves\n" + // << " - Network: " << network_name << "\n" + // << " - Station: " << station_name << "\n" + // << "--------------------------------------------------\n\n" + // << std::endl; + // } else if (elastic_wave == specfem::enums::elastic_wave::psv) { + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.BXY.semr"); + // } + // break; + // case specfem::wavefield::type::intrinsic_rotation: + // if (elastic_wave == specfem::enums::elastic_wave::sh) { + // FAIL() << "--------------------------------------------------\n" + // << "\033[0;31m[FAILED]\033[0m Test failed\n" + // << " - Test name: " << Test.name << "\n" + // << " - Error: Intrinsic Rotation seismograms " + // "are not supported for SH waves\n" + // << " - Network: " << network_name << "\n" + // << " - Station: " << station_name << "\n" + // << "--------------------------------------------------\n\n" + // << std::endl; + // } else if (elastic_wave == specfem::enums::elastic_wave::psv) { + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.BXY.semir"); + // } + // break; + // case specfem::wavefield::type::curl: + // if (elastic_wave == specfem::enums::elastic_wave::sh) { + // FAIL() << "--------------------------------------------------\n" + // << "\033[0;31m[FAILED]\033[0m Test failed\n" + // << " - Test name: " << Test.name << "\n" + // << " - Error: Curl seismograms are not supported for SH" + // "waves\n" + // << " - Network: " << network_name << "\n" + // << " - Station: " << station_name << "\n" + // << "--------------------------------------------------\n\n" + // << std::endl; + // } else if (elastic_wave == specfem::enums::elastic_wave::psv) { + // filenames.push_back(Test.traces + "/" + network_name + "." + + // station_name + ".S2.BXY.semc"); + // } + // break; + // default: + // FAIL() << "--------------------------------------------------\n" + // << "\033[0;31m[FAILED]\033[0m Test failed\n" + // << " - Test name: " << Test.name << "\n" + // << " - Error: Unknown seismogram type\n" + // << " - Network: " << network_name << "\n" + // << " - Station: " << station_name << "\n" + // << "--------------------------------------------------\n\n" + // << std::endl; + // break; + // } + + // // Get the number of components for this seismogram type + // const int ncomponents = filenames.size(); + + // Kokkos::View + // traces("traces", ncomponents, max_sig_step, 2); + + // for (int icomp = 0; icomp < ncomponents; icomp++) { + // const auto trace = + // Kokkos::subview(traces, icomp, Kokkos::ALL, Kokkos::ALL); + // specfem::io::seismogram_reader reader( + // filenames[icomp], specfem::enums::seismogram::format::ascii, + // trace); + // reader.read(); + // } + + // int count = 0; + // for (auto [time, value] : seismograms.get_seismogram( + // station_name, network_name, seismogram_type)) { + // for (int icomp = 0; icomp < ncomponents; icomp++) { + // const auto computed_time = traces(icomp, count, 0); + + // if (std::abs(time - computed_time) > 1e-3) { + // FAIL() << "--------------------------------------------------\n" + // << "\033[0;31m[FAILED]\033[0m Test failed\n" + // << " - Test name: " << Test.name << "\n" + // << " - Error: Times do not match\n" + // << " - Network: " << network_name << "\n" + // << " - Station: " << station_name << "\n" + // << " - Component: " << icomp << "\n" + // << " - Expected: " << time << "\n" + // << " - Computed: " << computed_time << "\n" + // << + // "--------------------------------------------------\n\n" + // << std::endl; + // } + + // const auto computed_value = traces(icomp, count, 1); + // error += std::sqrt((value[icomp] - computed_value) * + // (value[icomp] - computed_value)); + // computed_norm += std::sqrt(computed_value * computed_value); + // } + + // count++; + // } + // } + + // if (error / computed_norm > Test.tolerance || + // std::isnan(error / computed_norm)) { + // FAIL() << "--------------------------------------------------\n" + // << "\033[0;31m[FAILED]\033[0m Test failed\n" + // << " - Test: " << Test.name << "\n" + // << " - Error: Norm of the error is greater than 1e-3\n" + // << " - Station: " << station_name << "\n" + // << " - Network: " << network_name << "\n" + // << " - Error: " << error << "\n" + // << " - Norm: " << computed_norm << "\n" + // << "--------------------------------------------------\n\n" + // << std::endl; + // } + // } + + std::cout << "--------------------------------------------------\n" + << "\033[0;32m[PASSED]\033[0m Test name: " << Test.name << "\n" + << "--------------------------------------------------\n\n" + << std::endl; +} + +// Load test directories and create parameterized test instances +std::vector GetTestDirectories() { + std::string tests_filename = "displacement_tests/Newmark/dim3/tests.yaml"; + return parse_3D_test_directories(tests_filename); +} + +// Instantiate the parameterized test with all configurations +INSTANTIATE_TEST_SUITE_P(DisplacementTests, Newmark, + ::testing::ValuesIn(GetTestDirectories())); + +int main(int argc, char *argv[]) { + ::testing::InitGoogleTest(&argc, argv); + ::testing::AddGlobalTestEnvironment(new MPIEnvironment); + ::testing::AddGlobalTestEnvironment(new KokkosEnvironment); + return RUN_ALL_TESTS(); +} diff --git a/tests/unit-tests/displacement_tests/Newmark/dim3/tests.yaml b/tests/unit-tests/displacement_tests/Newmark/dim3/tests.yaml new file mode 100644 index 000000000..556290398 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/dim3/tests.yaml @@ -0,0 +1 @@ +- "HomogeneousHalfspaceSmallNoABCForceSource" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/provenance/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/provenance/Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/provenance/Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/provenance/Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/provenance/topography.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/provenance/topography.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/provenance/topography.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/provenance/topography.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/sources.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/sources.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/specfem_config.yaml similarity index 84% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/specfem_config.yaml index 2f35f65b5..d47063810 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/specfem_config.yaml @@ -37,7 +37,7 @@ parameters: directory: "." receivers: - stations: "displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -50,6 +50,6 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/database.bin" - sources: "displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/sources.yaml" + sources: "displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/sources.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0009.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0009.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0009.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0009.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0009.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0009.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0009.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0009.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0010.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0010.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0010.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0010.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0010.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0010.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0010.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0010.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0011.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0011.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0011.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0011.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0011.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0011.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomain/traces/AA.S0011.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomain/traces/AA.S0011.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/provenance/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/provenance/Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/provenance/Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/provenance/Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/sources.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/sources.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/specfem_config.yaml similarity index 84% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/specfem_config.yaml index 96c502705..55462ee64 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/specfem_config.yaml @@ -37,7 +37,7 @@ parameters: output-folder: "." receivers: - stations: "displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -50,8 +50,8 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/database.bin" - sources: "displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/sources.yaml" + mesh-database: "displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/database.bin" + sources: "displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/sources.yaml" seismogram: seismogram-format: ascii diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0009.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0009.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0009.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0009.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0009.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0009.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0009.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0009.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0010.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0010.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0010.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0010.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0010.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0010.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0010.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0010.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0011.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0011.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0011.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0011.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0011.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0011.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/AcousticElasticCoupledDomainVariant2/traces/AA.S0011.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/AcousticElasticCoupledDomainVariant2/traces/AA.S0011.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/provenance/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/provenance/Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/provenance/Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/provenance/Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/provenance/topography.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/provenance/topography.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/provenance/topography.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/provenance/topography.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/sources.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/sources.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/specfem_config.yaml similarity index 81% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/specfem_config.yaml index 191412991..0313b35fc 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/specfem_config.yaml @@ -33,7 +33,7 @@ parameters: output-folder: "." receivers: - stations: "displacement_tests/Newmark/serial/HomogeneousAcousticDomain/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -49,7 +49,7 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/HomogeneousAcousticDomain/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/database.bin" - sources: "displacement_tests/Newmark/serial/HomogeneousAcousticDomain/sources.yaml" + sources: "displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/sources.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0001.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0001.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0002.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0002.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0003.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0003.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0004.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0004.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0005.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0005.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0006.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0006.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0007.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0007.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0008.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0008.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0009.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0009.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0010.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0010.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0011.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0011.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0012.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0012.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0013.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0013.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0014.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0014.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomain/traces/AA.S0015.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomain/traces/AA.S0015.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/potential_acoustic.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/potential_acoustic.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/potential_acoustic.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/potential_acoustic.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/source.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/source.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/source.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/source.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/specfem_config.yaml similarity index 74% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/specfem_config.yaml index f28b4c29f..eefa95f5a 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/specfem_config.yaml @@ -32,7 +32,7 @@ parameters: output-folder: "." receivers: - stations: "displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -45,6 +45,6 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/database.bin" - sources: "displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/source.yaml" + sources: "displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/source.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0009.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0009.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0009.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0009.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0009.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0009.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0009.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0009.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0010.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0010.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0010.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0010.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0010.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0010.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0010.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0010.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0011.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0011.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0011.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0011.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0011.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0011.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0011.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0011.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0012.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0012.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0012.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0012.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0012.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0012.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0012.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0012.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0013.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0013.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0013.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0013.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0013.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0013.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0013.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0013.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0014.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0014.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0014.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0014.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0014.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0014.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0014.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0014.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0015.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0015.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0015.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0015.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0015.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0015.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0015.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0015.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0016.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0016.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0016.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0016.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0016.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0016.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0016.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0016.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0017.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0017.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0017.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0017.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0017.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0017.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0017.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0017.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0018.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0018.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0018.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0018.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0018.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0018.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0018.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0018.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0019.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0019.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0019.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0019.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0019.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0019.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0019.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0019.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0020.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0020.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0020.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0020.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0020.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0020.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0020.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0020.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0021.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0021.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0021.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0021.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0021.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0021.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0021.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0021.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0022.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0022.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0022.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0022.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0022.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0022.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0022.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0022.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0023.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0023.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0023.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0023.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0023.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0023.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0023.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0023.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0024.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0024.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0024.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0024.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0024.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0024.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0024.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0024.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0025.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0025.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0025.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0025.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0025.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0025.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0025.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0025.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0026.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0026.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0026.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0026.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0026.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0026.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0026.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0026.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0027.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0027.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0027.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0027.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0027.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0027.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0027.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0027.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0028.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0028.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0028.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0028.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0028.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0028.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0028.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0028.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0029.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0029.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0029.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0029.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0029.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0029.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0029.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0029.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0030.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0030.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0030.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0030.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0030.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0030.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0030.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0030.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0031.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0031.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0031.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0031.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0031.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0031.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0031.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0031.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0032.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0032.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0032.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0032.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0032.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0032.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0032.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0032.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0033.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0033.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0033.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0033.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0033.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0033.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0033.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0033.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0034.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0034.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0034.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0034.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0034.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0034.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0034.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0034.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0035.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0035.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0035.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0035.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0035.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0035.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0035.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0035.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0036.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0036.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0036.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0036.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0036.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0036.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0036.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0036.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0037.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0037.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0037.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0037.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0037.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0037.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0037.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0037.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0038.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0038.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0038.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0038.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0038.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0038.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0038.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0038.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0039.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0039.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0039.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0039.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0039.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0039.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0039.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0039.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0040.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0040.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0040.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0040.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0040.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0040.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0040.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0040.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0041.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0041.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0041.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0041.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0041.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0041.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0041.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0041.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0042.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0042.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0042.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0042.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0042.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0042.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0042.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0042.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0043.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0043.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0043.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0043.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0043.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0043.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0043.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0043.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0044.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0044.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0044.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0044.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0044.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0044.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0044.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0044.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0045.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0045.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0045.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0045.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0045.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0045.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0045.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0045.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0046.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0046.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0046.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0046.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0046.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0046.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0046.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0046.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0047.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0047.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0047.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0047.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0047.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0047.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0047.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0047.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0048.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0048.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0048.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0048.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0048.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0048.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0048.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0048.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0049.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0049.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0049.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0049.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0049.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0049.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0049.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0049.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0050.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0050.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0050.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0050.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0050.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0050.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0050.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0050.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0051.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0051.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0051.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0051.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0051.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0051.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0051.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0051.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0052.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0052.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0052.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0052.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0052.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0052.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0052.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0052.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0053.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0053.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0053.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0053.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0053.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0053.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0053.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0053.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0054.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0054.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0054.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0054.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0054.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0054.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0054.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0054.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0055.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0055.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0055.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0055.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0055.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0055.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0055.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0055.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0056.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0056.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0056.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0056.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0056.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0056.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0056.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0056.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0057.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0057.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0057.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0057.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0057.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0057.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0057.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0057.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0058.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0058.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0058.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0058.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0058.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0058.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0058.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0058.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0059.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0059.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0059.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0059.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0059.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0059.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0059.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0059.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0060.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0060.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0060.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0060.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0060.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0060.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0060.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainCompositeStaceyDirichletBC/traces/AA.S0060.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/provenance/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/provenance/Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/provenance/Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/provenance/Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/provenance/topography.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/provenance/topography.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/provenance/topography.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/provenance/topography.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/sources.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/sources.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/specfem_config.yaml similarity index 77% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/specfem_config.yaml index 6300898f7..c2ffbedaa 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/specfem_config.yaml @@ -33,7 +33,7 @@ parameters: output-folder: "." receivers: - stations: "displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -46,6 +46,6 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/database.bin" - sources: "displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/sources.yaml" + sources: "displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/sources.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0009.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0009.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0009.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0009.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0009.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0009.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0009.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0009.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0010.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0010.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0010.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0010.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0010.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0010.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0010.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0010.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0011.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0011.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0011.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0011.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0011.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0011.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0011.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0011.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0012.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0012.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0012.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0012.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0012.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0012.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0012.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0012.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0013.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0013.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0013.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0013.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0013.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0013.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0013.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0013.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0014.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0014.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0014.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0014.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0014.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0014.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0014.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0014.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0015.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0015.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0015.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0015.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0015.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0015.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0015.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0015.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0016.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0016.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0016.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0016.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0016.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0016.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0016.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0016.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0017.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0017.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0017.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0017.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0017.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0017.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0017.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0017.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0018.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0018.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0018.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0018.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0018.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0018.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0018.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0018.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0019.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0019.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0019.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0019.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0019.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0019.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0019.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0019.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0020.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0020.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0020.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0020.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0020.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0020.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0020.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0020.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0021.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0021.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0021.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0021.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0021.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0021.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0021.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0021.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0022.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0022.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0022.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0022.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0022.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0022.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0022.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0022.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0023.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0023.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0023.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0023.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0023.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0023.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0023.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0023.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0024.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0024.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0024.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0024.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0024.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0024.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0024.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0024.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0025.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0025.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0025.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0025.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0025.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0025.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0025.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0025.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0026.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0026.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0026.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0026.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0026.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0026.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0026.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0026.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0027.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0027.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0027.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0027.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0027.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0027.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0027.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0027.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0028.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0028.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0028.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0028.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0028.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0028.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0028.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0028.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0029.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0029.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0029.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0029.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0029.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0029.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0029.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0029.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0030.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0030.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0030.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0030.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0030.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0030.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0030.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0030.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0031.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0031.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0031.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0031.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0031.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0031.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0031.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0031.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0032.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0032.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0032.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0032.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0032.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0032.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0032.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0032.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0033.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0033.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0033.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0033.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0033.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0033.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0033.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0033.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0034.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0034.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0034.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0034.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0034.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0034.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0034.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0034.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0035.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0035.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0035.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0035.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0035.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0035.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0035.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0035.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0036.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0036.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0036.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0036.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0036.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0036.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0036.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0036.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0037.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0037.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0037.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0037.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0037.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0037.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0037.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0037.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0038.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0038.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0038.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0038.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0038.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0038.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0038.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0038.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0039.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0039.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0039.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0039.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0039.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0039.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0039.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0039.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0040.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0040.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0040.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0040.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0040.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0040.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0040.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0040.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0041.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0041.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0041.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0041.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0041.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0041.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0041.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0041.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0042.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0042.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0042.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0042.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0042.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0042.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0042.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0042.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0043.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0043.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0043.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0043.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0043.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0043.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0043.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0043.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0044.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0044.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0044.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0044.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0044.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0044.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0044.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0044.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0045.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0045.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0045.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0045.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0045.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0045.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0045.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0045.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0046.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0046.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0046.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0046.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0046.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0046.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0046.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0046.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0047.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0047.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0047.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0047.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0047.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0047.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0047.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0047.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0048.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0048.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0048.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0048.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0048.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0048.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0048.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0048.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0049.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0049.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0049.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0049.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0049.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0049.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0049.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0049.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0050.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0050.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0050.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0050.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0050.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0050.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0050.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0050.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0051.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0051.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0051.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0051.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0051.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0051.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0051.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0051.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0052.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0052.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0052.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0052.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0052.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0052.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0052.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0052.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0053.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0053.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0053.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0053.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0053.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0053.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0053.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0053.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0054.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0054.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0054.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0054.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0054.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0054.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0054.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0054.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0055.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0055.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0055.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0055.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0055.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0055.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0055.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0055.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0056.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0056.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0056.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0056.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0056.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0056.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0056.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0056.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0057.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0057.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0057.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0057.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0057.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0057.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0057.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0057.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0058.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0058.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0058.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0058.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0058.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0058.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0058.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0058.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0059.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0059.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0059.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0059.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0059.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0059.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0059.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0059.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0060.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0060.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0060.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0060.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0060.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0060.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousAcousticDomainDirichletBC/traces/AA.S0060.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousAcousticDomainDirichletBC/traces/AA.S0060.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/README.md b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/README.md similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/README.md rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/README.md diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/database.bin diff --git a/tests/unit-tests/data/mesh/homogeneous_elastic_anisotropic/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/provenance/Par_file similarity index 100% rename from tests/unit-tests/data/mesh/homogeneous_elastic_anisotropic/Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/provenance/Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/provenance/topography.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/provenance/topography.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/provenance/topography.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/provenance/topography.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/sources.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/sources.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/specfem_config.yaml similarity index 79% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/specfem_config.yaml index e99a4c92b..b8b61ed0d 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/specfem_config.yaml @@ -33,7 +33,7 @@ parameters: directory: "." receivers: - stations: "displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -49,6 +49,6 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/database.bin" - sources: "displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/sources.yaml" + sources: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/sources.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0001.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0002.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0003.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0004.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0005.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0006.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0007.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0008.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0009.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0010.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0011.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0012.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0013.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0014.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0015.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0016.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0017.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0018.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0019.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticAnisotropicDomain/traces/AA.S0020.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/provenance/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/provenance/Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/provenance/Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/provenance/Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/provenance/topography.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/provenance/topography.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/provenance/topography.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/provenance/topography.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/sources.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/sources.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/specfem_config.yaml similarity index 80% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/specfem_config.yaml index c4c092923..7af6f84ce 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/specfem_config.yaml @@ -33,7 +33,7 @@ parameters: directory: "." receivers: - stations: "displacement_tests/Newmark/serial/HomogeneousElasticDomain/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -49,6 +49,6 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/HomogeneousElasticDomain/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/database.bin" - sources: "displacement_tests/Newmark/serial/HomogeneousElasticDomain/sources.yaml" + sources: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/sources.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0001.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0001.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0002.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0002.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0003.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0003.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0004.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0004.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0005.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0005.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0006.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0006.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0007.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0007.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0008.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0008.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0009.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0009.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0010.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0010.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0011.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0011.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0012.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0012.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0013.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0013.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0014.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0014.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0015.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0015.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0016.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0016.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0017.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0017.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0018.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0018.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0019.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0019.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomain/traces/AA.S0020.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomain/traces/AA.S0020.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/provenance/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/provenance/Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/provenance/Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/provenance/Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/provenance/topography.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/provenance/topography.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/provenance/topography.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/provenance/topography.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/sources.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/sources.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/specfem_config.yaml similarity index 77% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/specfem_config.yaml index 2e1539ab3..26520d39b 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/specfem_config.yaml @@ -33,7 +33,7 @@ parameters: output-folder: "." receivers: - stations: "displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -46,6 +46,6 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/database.bin" - sources: "displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/sources.yaml" + sources: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/sources.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0009.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0009.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0009.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0009.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0009.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0009.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0009.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0009.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0010.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0010.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0010.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0010.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0010.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0010.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0010.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0010.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0011.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0011.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0011.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0011.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0011.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0011.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0011.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0011.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0012.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0012.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0012.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0012.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0012.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0012.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0012.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0012.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0013.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0013.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0013.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0013.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0013.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0013.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0013.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0013.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0014.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0014.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0014.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0014.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0014.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0014.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0014.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0014.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0015.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0015.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0015.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0015.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0015.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0015.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0015.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0015.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0016.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0016.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0016.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0016.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0016.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0016.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0016.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0016.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0017.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0017.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0017.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0017.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0017.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0017.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0017.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0017.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0018.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0018.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0018.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0018.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0018.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0018.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0018.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0018.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0019.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0019.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0019.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0019.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0019.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0019.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0019.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0019.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0020.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0020.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0020.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0020.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0020.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0020.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0020.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0020.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0021.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0021.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0021.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0021.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0021.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0021.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0021.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0021.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0022.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0022.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0022.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0022.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0022.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0022.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0022.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0022.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0023.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0023.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0023.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0023.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0023.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0023.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0023.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0023.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0024.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0024.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0024.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0024.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0024.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0024.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0024.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0024.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0025.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0025.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0025.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0025.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0025.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0025.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0025.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0025.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0026.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0026.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0026.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0026.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0026.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0026.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0026.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0026.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0027.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0027.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0027.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0027.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0027.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0027.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0027.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0027.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0028.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0028.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0028.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0028.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0028.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0028.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0028.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0028.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0029.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0029.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0029.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0029.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0029.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0029.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0029.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0029.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0030.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0030.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0030.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0030.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0030.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0030.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0030.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0030.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0031.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0031.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0031.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0031.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0031.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0031.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0031.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0031.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0032.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0032.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0032.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0032.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0032.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0032.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0032.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0032.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0033.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0033.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0033.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0033.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0033.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0033.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0033.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0033.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0034.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0034.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0034.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0034.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0034.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0034.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0034.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0034.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0035.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0035.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0035.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0035.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0035.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0035.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0035.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0035.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0036.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0036.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0036.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0036.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0036.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0036.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0036.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0036.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0037.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0037.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0037.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0037.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0037.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0037.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0037.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0037.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0038.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0038.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0038.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0038.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0038.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0038.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0038.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0038.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0039.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0039.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0039.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0039.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0039.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0039.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0039.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0039.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0040.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0040.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0040.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0040.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0040.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0040.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0040.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0040.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0041.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0041.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0041.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0041.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0041.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0041.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0041.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0041.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0042.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0042.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0042.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0042.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0042.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0042.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0042.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0042.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0043.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0043.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0043.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0043.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0043.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0043.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0043.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0043.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0044.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0044.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0044.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0044.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0044.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0044.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0044.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0044.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0045.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0045.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0045.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0045.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0045.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0045.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0045.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0045.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0046.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0046.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0046.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0046.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0046.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0046.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0046.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0046.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0047.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0047.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0047.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0047.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0047.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0047.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0047.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0047.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0048.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0048.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0048.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0048.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0048.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0048.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0048.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0048.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0049.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0049.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0049.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0049.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0049.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0049.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0049.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0049.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0050.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0050.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0050.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0050.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0050.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0050.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0050.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0050.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0051.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0051.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0051.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0051.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0051.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0051.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0051.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0051.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0052.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0052.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0052.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0052.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0052.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0052.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0052.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0052.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0053.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0053.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0053.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0053.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0053.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0053.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0053.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0053.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0054.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0054.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0054.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0054.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0054.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0054.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0054.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0054.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0055.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0055.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0055.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0055.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0055.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0055.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0055.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0055.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0056.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0056.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0056.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0056.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0056.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0056.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0056.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0056.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0057.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0057.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0057.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0057.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0057.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0057.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0057.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0057.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0058.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0058.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0058.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0058.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0058.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0058.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0058.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0058.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0059.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0059.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0059.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0059.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0059.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0059.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0059.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0059.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0060.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0060.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0060.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0060.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0060.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0060.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyBC/traces/AA.S0060.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyBC/traces/AA.S0060.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/provenance/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/provenance/Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/provenance/Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/provenance/Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/provenance/topography.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/provenance/topography.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/provenance/topography.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/provenance/topography.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/sources.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/sources.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/specfem_config.yaml similarity index 75% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/specfem_config.yaml index 97a6381f1..d7f44eaa9 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/specfem_config.yaml @@ -32,7 +32,7 @@ parameters: output-folder: "." receivers: - stations: "displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -45,6 +45,6 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/database.bin" - sources: "displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/sources.yaml" + sources: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/sources.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0009.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0009.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0009.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0009.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0009.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0009.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0009.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0009.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0010.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0010.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0010.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0010.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0010.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0010.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0010.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0010.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0011.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0011.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0011.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0011.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0011.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0011.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0011.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0011.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0012.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0012.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0012.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0012.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0012.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0012.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0012.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0012.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0013.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0013.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0013.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0013.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0013.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0013.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0013.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0013.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0014.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0014.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0014.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0014.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0014.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0014.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0014.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0014.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0015.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0015.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0015.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0015.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0015.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0015.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0015.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0015.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0016.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0016.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0016.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0016.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0016.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0016.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0016.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0016.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0017.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0017.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0017.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0017.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0017.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0017.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0017.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0017.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0018.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0018.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0018.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0018.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0018.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0018.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0018.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0018.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0019.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0019.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0019.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0019.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0019.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0019.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0019.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0019.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0020.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0020.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0020.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0020.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0020.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0020.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0020.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0020.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0021.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0021.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0021.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0021.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0021.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0021.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0021.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0021.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0022.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0022.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0022.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0022.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0022.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0022.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0022.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0022.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0023.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0023.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0023.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0023.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0023.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0023.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0023.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0023.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0024.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0024.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0024.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0024.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0024.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0024.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0024.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0024.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0025.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0025.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0025.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0025.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0025.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0025.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0025.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0025.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0026.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0026.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0026.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0026.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0026.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0026.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0026.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0026.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0027.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0027.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0027.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0027.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0027.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0027.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0027.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0027.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0028.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0028.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0028.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0028.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0028.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0028.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0028.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0028.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0029.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0029.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0029.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0029.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0029.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0029.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0029.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0029.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0030.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0030.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0030.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0030.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0030.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0030.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0030.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0030.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0031.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0031.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0031.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0031.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0031.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0031.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0031.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0031.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0032.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0032.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0032.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0032.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0032.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0032.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0032.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0032.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0033.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0033.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0033.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0033.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0033.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0033.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0033.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0033.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0034.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0034.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0034.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0034.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0034.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0034.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0034.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0034.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0035.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0035.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0035.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0035.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0035.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0035.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0035.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0035.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0036.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0036.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0036.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0036.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0036.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0036.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0036.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0036.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0037.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0037.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0037.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0037.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0037.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0037.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0037.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0037.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0038.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0038.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0038.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0038.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0038.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0038.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0038.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0038.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0039.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0039.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0039.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0039.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0039.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0039.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0039.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0039.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0040.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0040.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0040.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0040.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0040.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0040.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0040.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0040.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0041.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0041.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0041.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0041.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0041.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0041.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0041.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0041.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0042.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0042.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0042.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0042.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0042.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0042.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0042.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0042.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0043.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0043.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0043.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0043.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0043.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0043.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0043.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0043.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0044.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0044.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0044.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0044.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0044.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0044.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0044.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0044.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0045.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0045.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0045.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0045.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0045.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0045.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0045.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0045.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0046.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0046.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0046.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0046.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0046.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0046.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0046.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0046.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0047.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0047.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0047.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0047.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0047.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0047.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0047.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0047.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0048.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0048.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0048.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0048.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0048.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0048.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0048.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0048.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0049.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0049.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0049.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0049.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0049.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0049.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0049.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0049.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0050.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0050.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0050.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0050.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0050.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0050.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0050.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0050.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0051.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0051.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0051.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0051.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0051.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0051.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0051.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0051.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0052.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0052.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0052.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0052.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0052.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0052.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0052.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0052.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0053.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0053.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0053.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0053.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0053.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0053.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0053.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0053.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0054.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0054.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0054.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0054.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0054.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0054.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0054.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0054.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0055.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0055.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0055.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0055.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0055.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0055.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0055.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0055.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0056.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0056.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0056.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0056.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0056.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0056.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0056.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0056.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0057.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0057.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0057.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0057.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0057.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0057.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0057.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0057.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0058.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0058.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0058.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0058.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0058.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0058.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0058.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0058.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0059.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0059.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0059.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0059.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0059.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0059.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0059.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0059.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0060.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0060.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0060.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0060.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0060.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0060.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0060.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainStaceyDirichletBC/traces/AA.S0060.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/README.md b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/README.md similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/README.md rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/README.md diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/provenance/SPECFEM2D_Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/provenance/SPECFEM2D_Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/provenance/SPECFEM2D_Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/provenance/SPECFEM2D_Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/provenance/SPECFEMPP_Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/provenance/SPECFEMPP_Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/provenance/SPECFEMPP_Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/provenance/SPECFEMPP_Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/provenance/topography.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/provenance/topography.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/provenance/topography.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/provenance/topography.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/sources.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/sources.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/specfem_config.yaml similarity index 78% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/specfem_config.yaml index a53d9474f..d84dd1ad1 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/specfem_config.yaml @@ -33,7 +33,7 @@ parameters: directory: "." receivers: - stations: "displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -46,6 +46,6 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/database.bin" - sources: "displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/sources.yaml" + sources: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/sources.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0009.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0009.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0009.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0009.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0009.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0009.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0009.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0009.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0010.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0010.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0010.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0010.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0010.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0010.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0010.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0010.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0011.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0011.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0011.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0011.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0011.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0011.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0011.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0011.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0012.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0012.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0012.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0012.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0012.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0012.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0012.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0012.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0013.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0013.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0013.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0013.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0013.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0013.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0013.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0013.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0014.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0014.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0014.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0014.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0014.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0014.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0014.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0014.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0015.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0015.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0015.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0015.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0015.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0015.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0015.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0015.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0016.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0016.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0016.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0016.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0016.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0016.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0016.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0016.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0017.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0017.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0017.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0017.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0017.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0017.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0017.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0017.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0018.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0018.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0018.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0018.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0018.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0018.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0018.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0018.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0019.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0019.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0019.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0019.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0019.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0019.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0019.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0019.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0020.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0020.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0020.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0020.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0020.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0020.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0020.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticDomainWAdjacencyMap/traces/AA.S0020.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/provenance/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/provenance/Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/provenance/Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/provenance/Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/provenance/topography.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/provenance/topography.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/provenance/topography.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/provenance/topography.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/sources.yaml similarity index 90% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/sources.yaml index f02731593..d43523ec0 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/sources.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/sources.yaml @@ -9,5 +9,5 @@ sources: vz : 0.0 Ricker: f0: 10.0 - factor: 1e10 + factor: -1e10 tshift: 0.0 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/specfem_config.yaml similarity index 79% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/specfem_config.yaml index aa3187526..d01863ac3 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/specfem_config.yaml @@ -34,7 +34,7 @@ parameters: directory: "." receivers: - stations: "displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -49,6 +49,6 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/database.bin" - sources: "displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/sources.yaml" + sources: "displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/sources.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0001.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0002.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0003.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0004.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0005.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0006.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0007.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0008.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0009.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0010.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0011.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0012.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0013.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0014.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0015.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0016.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0017.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0018.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0019.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousElasticIsotropicDomainSH/traces/AA.S0020.S2.BXY.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/README.md b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/README.md similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/README.md rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/README.md diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/provenance/README.md b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/provenance/README.md similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/provenance/README.md rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/provenance/README.md diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/provenance/config.ini b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/provenance/config.ini similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/provenance/config.ini rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/provenance/config.ini diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/provenance/generate_model.py b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/provenance/generate_model.py similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/provenance/generate_model.py rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/provenance/generate_model.py diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/provenance/sources.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/provenance/sources.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/provenance/sources.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/provenance/sources.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/provenance/stations.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/provenance/stations.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/provenance/stations.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/provenance/stations.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/source.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/source.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/source.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/source.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/specfem_config.yaml similarity index 77% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/specfem_config.yaml index de1e99647..a68465237 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/specfem_config.yaml @@ -31,7 +31,7 @@ parameters: directory: "." receivers: - stations: "displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -47,7 +47,7 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/database.bin" ## sources - sources: "displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/source.yaml" + sources: "displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/source.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomain/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/README.md b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/README.md similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/README.md rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/README.md diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/meshfem/Par_File b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/meshfem/Par_File similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/meshfem/Par_File rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/meshfem/Par_File diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/meshfem/topography.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/meshfem/topography.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/meshfem/topography.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/meshfem/topography.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/README.md b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/README.md similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/README.md rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/README.md diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/config.ini b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/config.ini similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/config.ini rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/config.ini diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/generate_model.py b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/generate_model.py similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/generate_model.py rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/generate_model.py diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/sources.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/sources.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/sources.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/sources.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/stations.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/stations.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/stations.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/provenance/seispie/stations.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/source.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/source.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/source.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/source.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/specfem_config.yaml similarity index 74% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/specfem_config.yaml index b99ddb28f..e92458e91 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/specfem_config.yaml @@ -31,7 +31,7 @@ parameters: directory: "." receivers: - stations: "displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -45,7 +45,7 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/database.bin" ## sources - sources: "displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/source.yaml" + sources: "displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/source.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXY.semc b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXY.semc similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXY.semc rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXY.semc diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXY.semir b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXY.semir similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXY.semir rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXY.semir diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXY.semr b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXY.semr similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXY.semr rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXY.semr diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/README.md b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/README.md similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/README.md rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/README.md diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/provenance/.gitignore b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/provenance/.gitignore similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/provenance/.gitignore rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/provenance/.gitignore diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/provenance/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/provenance/Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/provenance/Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/provenance/Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/provenance/Par_file_database b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/provenance/Par_file_database similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/provenance/Par_file_database rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/provenance/Par_file_database diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/provenance/topography.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/provenance/topography.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/provenance/topography.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/provenance/topography.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/sources.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousElasticIsotropicDomainSH/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/sources.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/specfem_config.yaml similarity index 78% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/specfem_config.yaml index 19ec299ff..13144e6b4 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/specfem_config.yaml @@ -33,7 +33,7 @@ parameters: directory: "." receivers: - stations: "displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -49,6 +49,6 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/database.bin" - sources: "displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/sources.yaml" + sources: "displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/sources.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0001.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0002.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0003.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0004.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0005.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0006.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0007.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0008.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0009.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0010.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0011.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0012.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0013.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0014.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0015.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0016.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0017.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0018.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0019.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.PRE.semp b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.PRE.semp similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.PRE.semp rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/HomogeneousIsotropicCosseratDomainNu0/traces/AA.S0020.S2.PRE.semp diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/provenance/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/provenance/Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/provenance/Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/provenance/Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/provenance/interfaces.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/provenance/interfaces.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/provenance/interfaces.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/provenance/interfaces.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/sources.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/sources.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/specfem_config.yaml similarity index 80% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/specfem_config.yaml index e90caa770..3657b5b51 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/specfem_config.yaml @@ -34,7 +34,7 @@ parameters: directory: "." receivers: - stations: "displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/STATIONS" angle: 0.0 seismogram-type: - displacement @@ -49,6 +49,6 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/database.bin" - sources: "displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/sources.yaml" + sources: "displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/sources.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0001.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0002.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0003.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0004.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0005.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0006.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0007.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0008.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0009.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0010.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0011.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0012.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0013.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0014.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXX.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXX.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXX.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXX.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXX.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXX.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXX.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXX.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXX.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXX.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXX.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXZ.sema b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXZ.sema similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXZ.sema rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXZ.sema diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXZ.semd similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXZ.semd rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXZ.semd diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXZ.semv b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXZ.semv similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXZ.semv rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/PoroelasticCoupledDomainPSV/traces/AA.S0015.S2.BXZ.semv diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/STATIONS similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/STATIONS rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/STATIONS diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/config.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/config.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/database.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/database.bin similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/database.bin rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/database.bin diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/provenance/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/provenance/Par_file similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/provenance/Par_file rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/provenance/Par_file diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/provenance/SOURCE b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/provenance/SOURCE similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/provenance/SOURCE rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/provenance/SOURCE diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/provenance/interfaces_GPR_AIR.dat b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/provenance/interfaces_GPR_AIR.dat similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/provenance/interfaces_GPR_AIR.dat rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/provenance/interfaces_GPR_AIR.dat diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/sources.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/sources.yaml similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/sources.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/sources.yaml diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/specfem_config.yaml similarity index 79% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/specfem_config.yaml rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/specfem_config.yaml index 31e90efcb..30010faa6 100644 --- a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/specfem_config.yaml +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/specfem_config.yaml @@ -34,7 +34,7 @@ parameters: directory: "." receivers: - stations: "displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/STATIONS" + stations: "displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/STATIONS" angle: 0.0 seismogram-type: - electric-field @@ -47,6 +47,6 @@ parameters: ## databases databases: - mesh-database: "displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/database.bin" + mesh-database: "displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/database.bin" - sources: "displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/sources.yaml" + sources: "displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/sources.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0001.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0001.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0001.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0001.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0002.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0002.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0002.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0002.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0003.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0003.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0003.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0003.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0004.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0004.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0004.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0004.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0005.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0005.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0005.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0005.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0006.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0006.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0006.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0006.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0007.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0007.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0007.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0007.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0008.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0008.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0008.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0008.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0009.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0009.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0009.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0009.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0010.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0010.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0010.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0010.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0011.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0011.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0011.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0011.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0012.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0012.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0012.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0012.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0013.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0013.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0013.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0013.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0014.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0014.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0014.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0014.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0015.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0015.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0015.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0015.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0016.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0016.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0016.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0016.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0017.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0017.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0017.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0017.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0018.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0018.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0018.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0018.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0019.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0019.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0019.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0019.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0020.S2.BXY.seme b/tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0020.S2.BXY.seme similarity index 100% rename from tests/unit-tests/displacement_tests/Newmark/serial/TwoLayerElectromagneticDomain/traces/AA.S0020.S2.BXY.seme rename to tests/unit-tests/displacement_tests/Newmark/serial/dim2/TwoLayerElectromagneticDomain/traces/AA.S0020.S2.BXY.seme diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/DATABASES_MPI/mesh_parameters.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/DATABASES_MPI/mesh_parameters.bin new file mode 100644 index 000000000..0dbf2730e Binary files /dev/null and b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/DATABASES_MPI/mesh_parameters.bin differ diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/DATABASES_MPI/proc000000_external_mesh.bin b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/DATABASES_MPI/proc000000_external_mesh.bin new file mode 100644 index 000000000..2eb962400 Binary files /dev/null and b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/DATABASES_MPI/proc000000_external_mesh.bin differ diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/README.md b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/README.md new file mode 100644 index 000000000..da5be3d71 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/README.md @@ -0,0 +1,62 @@ +# Homogeneous halfspace with force source, small model, no ABC + +## Recreating the traces + +Use `provenance/fortran`. + +```bash +mkdir -p OUTPUT_FILES/DATABASES_MPI +``` + +Here, you'll have to create the `bin` folder and link the executables from your `specfem3d` compilation. + +```bash +mkdir -p bin +cd bin +SPECFEM3D="/path/to/your/compiled/specfem3d" +ln -s ${SPECFEM3D}/bin/xmeshfem3D +ln -s ${SPECFEM3D}/bin/xgenerate_databases +ln -s ${SPECFEM3D}/bin/xspecfem3D +cd - +``` + +Then, you can run the simulation with the following commands: + +```bash +mpirun -np 1 ./bin/xmeshfem3D +``` + +```bash +mpirun -np 1 ./bin/xgenerate_databases +``` + +```bash +mpirun -np 1 ./bin/xspecfem3D +``` + +Then move the traces from `OUTPUT_FILES` to the `traces` directory. + +## Recreatign The SPECFEM++ databases. + +Use `provenance/specfempp` + +Since the database is written slightly different from the fortran version you +will have to recreate the databases with the SPECFEM++ mesher. + +Add specfemmpp to your path +```bash +export PATH=path/to/specfempp/bin/:${PATH} +``` +```bash +cd provenance/specfempp +mkdir -p OUTPUT_FILES/DATABASES_MPI +mpirun -np 1 ./bin/xmeshfem3D -p DATA/Mesh_Par_file +mpirun -np 1 ./bin/xgenerate_databases -p DATA/Par_File +``` + +Which should populate `OUTPUT_FILES/DATABASES_MPI` + +Finally, to +`OUTPUT_FILES/DATABASES_MPI/mesh_parameters.bin` +`OUTPUT_FILES/DATABASES_MPI/proc000000_external_mesh.bin` to the test directory +under `HomogeneousHalfspaceSmallNoABCForceSource/DATABASES_MPI/` diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/STATIONS new file mode 100644 index 000000000..975f7bc1b --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/STATIONS @@ -0,0 +1,9 @@ +X55 DB 40000.00 55000.00 0.0 0.0 +X60 DB 41000.00 60000.00 0.0 0.0 +X65 DB 42000.00 65000.00 0.0 0.0 +X70 DB 44000.00 70000.00 0.0 0.0 +X75 DB 48000.00 75000.00 0.0 0.0 +X80 DB 51000.00 80000.00 0.0 0.0 +X85 DB 54000.00 85000.00 0.0 0.0 +X90 DB 58000.00 90000.00 0.0 0.0 +X95 DB 62000.00 95000.00 0.0 0.0 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/config.yaml new file mode 100644 index 000000000..91ee5209c --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/config.yaml @@ -0,0 +1,10 @@ +id : "HomogeneousHalfspaceSmallNoABCForceSource" +name : "Homogeneous elastic isotropic half space" +description: > + Testing newmark time-marching solver on a homogeneous elastic domain with no interfaces. Test is run on a single MPI process. +config: + nproc : 1 + tolerance : 1e-3 +databases: + specfem_config: "specfem_config.yaml" + traces: "traces" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/force.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/force.yaml new file mode 100644 index 000000000..958750ef3 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/force.yaml @@ -0,0 +1,14 @@ +number-of-sources: 1 +sources: + - force: + x : 50000.0 + y : 40000.0 + z : -30000.0 + source_surf: false + fx : 0.0 + fy : 0.0 + fz : 1.0 + Ricker: + factor: 1e14 + tshift: 0.0 + f0: 0.25 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/FORCESOLUTION b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/FORCESOLUTION new file mode 100644 index 000000000..04827be97 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/FORCESOLUTION @@ -0,0 +1,11 @@ +FORCE 001 +time shift: 0.0000 +hdurorf0: 0.25 +latorUTM: 40000.0 +longorUTM: 50000.0 +depth: 30.0 +source time function: 1 +factor force source: 1.d14 +component dir vect source E: 0.d0 +component dir vect source N: 0.d0 +component dir vect source Z_UP: 1.d0 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/Par_file new file mode 100644 index 000000000..6fde3dd74 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/Par_file @@ -0,0 +1,404 @@ +#----------------------------------------------------------- +# +# Simulation input parameters +# +#----------------------------------------------------------- + +# forward or adjoint simulation +# 1 = forward, 2 = adjoint, 3 = both simultaneously +SIMULATION_TYPE = 1 +# 0 = earthquake simulation, 1/2/3 = three steps in noise simulation +NOISE_TOMOGRAPHY = 0 +SAVE_FORWARD = .false. + +# solve a full FWI inverse problem from a single calling program with no I/Os, storing everything in memory, +# or run a classical forward or adjoint problem only and save the seismograms and/or sensitivity kernels to disk (with costlier I/Os) +INVERSE_FWI_FULL_PROBLEM = .false. + +# UTM projection parameters +# Use a negative zone number for the Southern hemisphere: +# The Northern hemisphere corresponds to zones +1 to +60, +# The Southern hemisphere corresponds to zones -1 to -60. +UTM_PROJECTION_ZONE = 11 +SUPPRESS_UTM_PROJECTION = .true. + +# number of MPI processors +NPROC = 1 + +# time step parameters +NSTEP = 250 +DT = 0.16 + +# set to true to use local-time stepping (LTS) +LTS_MODE = .false. + +# Partitioning algorithm for decompose_mesh +# choose partitioner: 1==SCOTCH (default), 2==METIS, 3==PATOH, 4==ROWS_PART +PARTITIONING_TYPE = 1 + +#----------------------------------------------------------- +# +# LDDRK time scheme +# +#----------------------------------------------------------- +USE_LDDRK = .false. +INCREASE_CFL_FOR_LDDRK = .false. +RATIO_BY_WHICH_TO_INCREASE_IT = 1.4 + +#----------------------------------------------------------- +# +# Mesh +# +#----------------------------------------------------------- + +# Number of nodes for 2D and 3D shape functions for hexahedra. +# We use either 8-node mesh elements (bricks) or 27-node elements. +# If you use our internal mesher, the only option is 8-node bricks (27-node elements are not supported). +NGNOD = 8 + +# models: +# available options are: +# default (model parameters described by mesh properties) +# 1D models available are: +# 1d_prem,1d_socal,1d_cascadia +# 3D models available are: +# aniso,external,gll,salton_trough,tomo,SEP,coupled,... +MODEL = default + +# path for external tomographic models files +TOMOGRAPHY_PATH = DATA/tomo_files/ +# if you are using a SEP model (oil-industry format) +SEP_MODEL_DIRECTORY = DATA/my_SEP_model/ + +#----------------------------------------------------------- + +# parameters describing the model +APPROXIMATE_OCEAN_LOAD = .false. +TOPOGRAPHY = .false. +ATTENUATION = .false. +ANISOTROPY = .false. +GRAVITY = .false. + +# in case of attenuation, reference frequency in Hz at which the velocity values in the velocity model are given (unused otherwise) +ATTENUATION_f0_REFERENCE = 18.d0 + +# attenuation period range over which we try to mimic a constant Q factor +MIN_ATTENUATION_PERIOD = 999999998.d0 +MAX_ATTENUATION_PERIOD = 999999999.d0 +# ignore this range and ask the code to compute it automatically instead based on the estimated resolution of the mesh (use this unless you know what you are doing) +COMPUTE_FREQ_BAND_AUTOMATIC = .true. + +# Olsen's constant for Q_mu = constant * V_s attenuation rule +USE_OLSEN_ATTENUATION = .false. +OLSEN_ATTENUATION_RATIO = 0.05 + +#----------------------------------------------------------- +# +# Absorbing boundary conditions +# +#----------------------------------------------------------- + +# C-PML boundary conditions for a regional simulation +# (if set to .false., and STACEY_ABSORBING_CONDITIONS is also set to .false., you get a free surface instead +# in the case of elastic or viscoelastic mesh elements, and a rigid surface in the case of acoustic (fluid) elements +PML_CONDITIONS = .false. + +# C-PML top surface +PML_INSTEAD_OF_FREE_SURFACE = .false. + +# C-PML dominant frequency +f0_FOR_PML = 0.05555 + +# parameters used to rotate C-PML boundary conditions by a given angle (not completed yet) +# ROTATE_PML_ACTIVATE = .false. +# ROTATE_PML_ANGLE = 0. + +# absorbing boundary conditions for a regional simulation +# (if set to .false., and PML_CONDITIONS is also set to .false., you get a free surface instead +# in the case of elastic or viscoelastic mesh elements, and a rigid surface in the case of acoustic (fluid) elements +STACEY_ABSORBING_CONDITIONS = .false. + +# absorbing top surface (defined in mesh as 'free_surface_file') +STACEY_INSTEAD_OF_FREE_SURFACE = .false. + +# When STACEY_ABSORBING_CONDITIONS is set to .true. : +# absorbing conditions are defined in xmin, xmax, ymin, ymax and zmin +# this option BOTTOM_FREE_SURFACE can be set to .true. to +# make zmin free surface instead of absorbing condition +BOTTOM_FREE_SURFACE = .false. + +#----------------------------------------------------------- +# +# undoing attenuation and/or PMLs for sensitivity kernel calculations +# +#----------------------------------------------------------- + +# to undo attenuation and/or PMLs for sensitivity kernel calculations or forward runs with SAVE_FORWARD +# use the flag below. It performs undoing of attenuation and/or of PMLs in an exact way for sensitivity kernel calculations +# but requires disk space for temporary storage, and uses a significant amount of memory used as buffers for temporary storage. +# When that option is on the second parameter indicates how often the code dumps restart files to disk (if in doubt, use something between 100 and 1000). +UNDO_ATTENUATION_AND_OR_PML = .false. +NT_DUMP_ATTENUATION = 200 + +#----------------------------------------------------------- +# +# Visualization +# +#----------------------------------------------------------- + +# save AVS or OpenDX movies +# MOVIE_TYPE = 1 to show the top surface +# MOVIE_TYPE = 2 to show all the external faces of the mesh +CREATE_SHAKEMAP = .false. +MOVIE_SURFACE = .false. +MOVIE_TYPE = 1 +MOVIE_VOLUME = .false. +SAVE_DISPLACEMENT = .false. +MOVIE_VOLUME_STRESS = .false. +USE_HIGHRES_FOR_MOVIES = .false. +NTSTEP_BETWEEN_FRAMES = 200 +HDUR_MOVIE = 0.0 + +# save AVS or OpenDX mesh files to check the mesh +SAVE_MESH_FILES = .true. + +# path to store the local database file on each node +LOCAL_PATH = OUTPUT_FILES/DATABASES_MPI + +# interval at which we output time step info and max of norm of displacement +NTSTEP_BETWEEN_OUTPUT_INFO = 500 + +#----------------------------------------------------------- +# +# Sources +# +#----------------------------------------------------------- + +# sources and receivers Z coordinates given directly (i.e. as their true position) instead of as their depth +USE_SOURCES_RECEIVERS_Z = .false. + +# use a (tilted) FORCESOLUTION force point source (or several) instead of a CMTSOLUTION moment-tensor source. +# This can be useful e.g. for oil industry foothills simulations or asteroid simulations +# in which the source is a vertical force, normal force, tilted force, impact etc. +# If this flag is turned on, the FORCESOLUTION file must be edited by giving: +# - the corresponding time-shift parameter, +# - the half duration (hdur, in s) for Gaussian/Step function, dominant frequency (f0, in Hz) for Ricker, +# - the coordinates of the source, +# - the source time function type (0=Gaussian function, 1=Ricker wavelet, 2=Step function), +# - the magnitude of the force source, +# - the components of a (non necessarily unitary) direction vector for the force source in the E/N/Z_UP basis. +# The direction vector is made unitary internally in the code and thus only its direction matters here; +# its norm is ignored and the norm of the force used is the factor force source times the source time function. +USE_FORCE_POINT_SOURCE = .true. + +# set to true to use a Ricker source time function instead of the source time functions set by default +# to represent a (tilted) FORCESOLUTION force point source or a CMTSOLUTION moment-tensor source. +USE_RICKER_TIME_FUNCTION = .false. + +# use an external source time function +# you must add a file with your source time function and the file name path +# relative to working directory at the end of CMTSOLUTION or FORCESOLUTION file +# (with multiple sources, one file per source is required). +# This file must have a single column containing the amplitudes of the source at all time steps; +# time step size used must be equal to DT as defined at the beginning of this Par_file. +# Be sure when this option is .false. to remove the name of stf file in CMTSOLUTION or FORCESOLUTION +USE_EXTERNAL_SOURCE_FILE = .false. + +# print source time function +PRINT_SOURCE_TIME_FUNCTION = .false. + +# source encoding +# (for acoustic simulations only for now) determines source encoding factor +/-1 depending on sign of moment tensor +# (see e.g. Krebs et al., 2009. Fast full-wavefield seismic inversion using encoded sources, Geophysics, 74 (6), WCC177-WCC188.) +USE_SOURCE_ENCODING = .false. + +#----------------------------------------------------------- +# +# Seismograms +# +#----------------------------------------------------------- + +# interval in time steps for writing of seismograms +NTSTEP_BETWEEN_OUTPUT_SEISMOS = 10000 + +# set to n to reduce the sampling rate of output seismograms by a factor of n +# defaults to 1, which means no down-sampling +NTSTEP_BETWEEN_OUTPUT_SAMPLE = 1 + +# decide if we save displacement, velocity, acceleration and/or pressure in forward runs (they can be set to true simultaneously) +# currently pressure seismograms are implemented in acoustic (i.e. fluid) elements only +SAVE_SEISMOGRAMS_DISPLACEMENT = .true. +SAVE_SEISMOGRAMS_VELOCITY = .false. +SAVE_SEISMOGRAMS_ACCELERATION = .false. +SAVE_SEISMOGRAMS_PRESSURE = .false. # currently implemented in acoustic (i.e. fluid) elements only + +# option to save strain seismograms +# this option is useful for strain Green's tensor +SAVE_SEISMOGRAMS_STRAIN = .false. + +# save seismograms also when running the adjoint runs for an inverse problem +# (usually they are unused and not very meaningful, leave this off in almost all cases) +SAVE_SEISMOGRAMS_IN_ADJOINT_RUN = .true. + +# save seismograms in binary or ASCII format (binary is smaller but may not be portable between machines) +USE_BINARY_FOR_SEISMOGRAMS = .false. + +# output seismograms in Seismic Unix format (binary with 240-byte-headers) +SU_FORMAT = .false. + +# output seismograms in ASDF (requires asdf-library) +ASDF_FORMAT = .false. + +# output seismograms in HDF5 (requires hdf5-library and WRITE_SEISMOGRAMS_BY_MAIN) +HDF5_FORMAT = .false. + +# decide if main process writes all the seismograms or if all processes do it in parallel +WRITE_SEISMOGRAMS_BY_MAIN = .false. + +# save all seismograms in one large combined file instead of one file per seismogram +# to avoid overloading shared non-local file systems such as LUSTRE or GPFS for instance +SAVE_ALL_SEISMOS_IN_ONE_FILE = .false. + +# use a trick to increase accuracy of pressure seismograms in fluid (acoustic) elements: +# use the second derivative of the source for the source time function instead of the source itself, +# and then record -potential_acoustic() as pressure seismograms instead of -potential_dot_dot_acoustic(); +# this is mathematically equivalent, but numerically significantly more accurate because in the explicit +# Newmark time scheme acceleration is accurate at zeroth order while displacement is accurate at second order, +# thus in fluid elements potential_dot_dot_acoustic() is accurate at zeroth order while potential_acoustic() +# is accurate at second order and thus contains significantly less numerical noise. +USE_TRICK_FOR_BETTER_PRESSURE = .false. + +#----------------------------------------------------------- +# +# Energy calculation +# +#----------------------------------------------------------- + +# to plot energy curves, for instance to monitor how CPML absorbing layers behave; +# should be turned OFF in most cases because a bit expensive +OUTPUT_ENERGY = .false. +# every how many time steps we compute energy (which is a bit expensive to compute) +NTSTEP_BETWEEN_OUTPUT_ENERGY = 10 + +#----------------------------------------------------------- +# +# Adjoint kernel outputs +# +#----------------------------------------------------------- + +# interval in time steps for reading adjoint traces +# 0 = read the whole adjoint sources at start time +NTSTEP_BETWEEN_READ_ADJSRC = 0 + +# read adjoint sources using ASDF (requires asdf-library) +READ_ADJSRC_ASDF = .false. + +# this parameter must be set to .true. to compute anisotropic kernels +# in crust and mantle (related to the 21 Cij in geographical coordinates) +# default is .false. to compute isotropic kernels (related to alpha and beta) +ANISOTROPIC_KL = .false. + +# compute transverse isotropic kernels (alpha_v,alpha_h,beta_v,beta_h,eta,rho) +# rather than fully anisotropic kernels in case ANISOTROPIC_KL is set to .true. +SAVE_TRANSVERSE_KL = .false. + +# this parameter must be set to .true. to compute anisotropic kernels for +# cost function using velocity observable rather than displacement +ANISOTROPIC_VELOCITY_KL = .false. + +# outputs approximate Hessian for preconditioning +APPROXIMATE_HESS_KL = .false. + +# save Moho mesh and compute Moho boundary kernels +SAVE_MOHO_MESH = .false. + +#----------------------------------------------------------- +# +# Coupling with an injection technique (DSM, AxiSEM, or FK) +# +#----------------------------------------------------------- +COUPLE_WITH_INJECTION_TECHNIQUE = .false. +INJECTION_TECHNIQUE_TYPE = 3 # 1 = DSM, 2 = AxiSEM, 3 = FK +MESH_A_CHUNK_OF_THE_EARTH = .false. +TRACTION_PATH = DATA/AxiSEM_tractions/3/ +FKMODEL_FILE = FKmodel +RECIPROCITY_AND_KH_INTEGRAL = .false. # does not work yet + +#----------------------------------------------------------- +## +## Prescribed wavefield discontinuity on an interface +## +##----------------------------------------------------------- +IS_WAVEFIELD_DISCONTINUITY = .false. + +#----------------------------------------------------------- +# +# Run modes +# +#----------------------------------------------------------- + +# Simultaneous runs +# added the ability to run several calculations (several earthquakes) +# in an embarrassingly-parallel fashion from within the same run; +# this can be useful when using a very large supercomputer to compute +# many earthquakes in a catalog, in which case it can be better from +# a batch job submission point of view to start fewer and much larger jobs, +# each of them computing several earthquakes in parallel. +# To turn that option on, set parameter NUMBER_OF_SIMULTANEOUS_RUNS to a value greater than 1. +# To implement that, we create NUMBER_OF_SIMULTANEOUS_RUNS MPI sub-communicators, +# each of them being labeled "my_local_mpi_comm_world", and we use them +# in all the routines in "src/shared/parallel.f90", except in MPI_ABORT() because in that case +# we need to kill the entire run. +# When that option is on, of course the number of processor cores used to start +# the code in the batch system must be a multiple of NUMBER_OF_SIMULTANEOUS_RUNS, +# all the individual runs must use the same number of processor cores, +# which as usual is NPROC in the Par_file, +# and thus the total number of processor cores to request from the batch system +# should be NUMBER_OF_SIMULTANEOUS_RUNS * NPROC. +# All the runs to perform must be placed in directories called run0001, run0002, run0003 and so on +# (with exactly four digits). +# +# Imagine you have 10 independent calculations to do, each of them on 100 cores; you have three options: +# +# 1/ submit 10 jobs to the batch system +# +# 2/ submit a single job on 1000 cores to the batch, and in that script create a sub-array of jobs to start 10 jobs, +# each running on 100 cores (see e.g. http://www.schedmd.com/slurmdocs/job_array.html ) +# +# 3/ submit a single job on 1000 cores to the batch, start SPECFEM3D on 1000 cores, create 10 sub-communicators, +# cd into one of 10 subdirectories (called e.g. run0001, run0002,... run0010) depending on the sub-communicator +# your MPI rank belongs to, and run normally on 100 cores using that sub-communicator. +# +# The option below implements 3/. +# +NUMBER_OF_SIMULTANEOUS_RUNS = 1 + +# if we perform simultaneous runs in parallel, if only the source and receivers vary between these runs +# but not the mesh nor the model (velocity and density) then we can also read the mesh and model files +# from a single run in the beginning and broadcast them to all the others; for a large number of simultaneous +# runs for instance when solving inverse problems iteratively this can DRASTICALLY reduce I/Os to disk in the solver +# (by a factor equal to NUMBER_OF_SIMULTANEOUS_RUNS), and reducing I/Os is crucial in the case of huge runs. +# Thus, always set this option to .true. if the mesh and the model are the same for all simultaneous runs. +# In that case there is no need to duplicate the mesh and model file database (the content of the DATABASES_MPI +# directories) in each of the run0001, run0002,... directories, it is sufficient to have one in run0001 +# and the code will broadcast it to the others) +BROADCAST_SAME_MESH_AND_MODEL = .true. + +#----------------------------------------------------------- + +# set to true to use GPUs +GPU_MODE = .false. + +# ADIOS Options for I/Os +ADIOS_ENABLED = .false. +ADIOS_FOR_DATABASES = .false. +ADIOS_FOR_MESH = .false. +ADIOS_FOR_FORWARD_ARRAYS = .false. +ADIOS_FOR_KERNELS = .false. +ADIOS_FOR_UNDO_ATTENUATION = .false. + +# HDF5 Database I/O +# (note the flags for HDF5 and ADIOS are mutually exclusive, only one can be used) +HDF5_ENABLED = .false. +HDF5_FOR_MOVIES = .false. +HDF5_IO_NODES = 0 # HDF5 IO server with number of IO dedicated procs diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/STATIONS b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/STATIONS new file mode 100644 index 000000000..b076a315a --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/STATIONS @@ -0,0 +1,9 @@ +X55 DB 40000.00 55000.00 0.0 0.0 +X60 DB 41000.00 60000.00 0.0 0.0 +X65 DB 42000.00 65000.00 0.0 0.0 +X70 DB 44000.00 70000.00 0.0 0.0 +X75 DB 46000.00 75000.00 0.0 0.0 +X80 DB 49000.00 80000.00 0.0 0.0 +X85 DB 52000.00 85000.00 0.0 0.0 +X90 DB 56000.00 90000.00 0.0 0.0 +X95 DB 60000.00 95000.00 0.0 0.0 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/meshfem3D_files/Mesh_Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/meshfem3D_files/Mesh_Par_file new file mode 100644 index 000000000..57cdecefa --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/meshfem3D_files/Mesh_Par_file @@ -0,0 +1,105 @@ +#----------------------------------------------------------- +# +# Meshing input parameters +# +#----------------------------------------------------------- + +# coordinates of mesh block in latitude/longitude and depth in km +LATITUDE_MIN = 0.0 +LATITUDE_MAX = 80000.0 +LONGITUDE_MIN = 0.0 +LONGITUDE_MAX = 100000.0 +DEPTH_BLOCK_KM = 60.d0 +UTM_PROJECTION_ZONE = 11 +SUPPRESS_UTM_PROJECTION = .true. + +# file that contains the interfaces of the model / mesh +INTERFACES_FILE = interfaces.txt + +# file that contains the cavity +CAVITY_FILE = no_cavity.dat + +# number of elements at the surface along edges of the mesh at the surface +# (must be 8 * multiple of NPROC below if mesh is not regular and contains mesh doublings) +# (must be multiple of NPROC below if mesh is regular) +NEX_XI = 15 +NEX_ETA = 12 + +# number of MPI processors along xi and eta (can be different) +NPROC_XI = 1 +NPROC_ETA = 1 + +#----------------------------------------------------------- +# +# Doubling layers +# +#----------------------------------------------------------- + +# Regular/irregular mesh +USE_REGULAR_MESH = .true. +# Only for irregular meshes, number of doubling layers and their position +NDOUBLINGS = 0 +# NZ_DOUBLING_1 is the parameter to set up if there is only one doubling layer +# (more doubling entries can be added if needed to match NDOUBLINGS value) +NZ_DOUBLING_1 = 40 +NZ_DOUBLING_2 = 48 + +#----------------------------------------------------------- +# +# Visualization +# +#----------------------------------------------------------- + +# create mesh files for visualisation or further checking +CREATE_ABAQUS_FILES = .false. +CREATE_DX_FILES = .false. +CREATE_VTK_FILES = .true. + +# stores mesh files as cubit-exported files into directory MESH/ (for single process run) +SAVE_MESH_AS_CUBIT = .false. + +# path to store the databases files +LOCAL_PATH = ./OUTPUT_FILES/DATABASES_MPI + +#----------------------------------------------------------- +# +# CPML +# +#----------------------------------------------------------- + +# CPML perfectly matched absorbing layers +THICKNESS_OF_X_PML = 12.3d0 +THICKNESS_OF_Y_PML = 12.3d0 +THICKNESS_OF_Z_PML = 12.3d0 + +# add PML layers as extra outer mesh layers +ADD_PML_AS_EXTRA_MESH_LAYERS = .false. +NUMBER_OF_PML_LAYERS_TO_ADD = 3 + +#----------------------------------------------------------- +# +# Domain materials +# +#----------------------------------------------------------- + +# number of materials +NMATERIALS = 1 +# define the different materials in the model as: +# #material_id #rho #vp #vs #Q_Kappa #Q_mu #anisotropy_flag #domain_id +# Q_Kappa : Q_Kappa attenuation quality factor +# Q_mu : Q_mu attenuation quality factor +# anisotropy_flag : 0 = no anisotropy / 1,2,... check the implementation in file aniso_model.f90 +# domain_id : 1 = acoustic / 2 = elastic +1 2300.0 2800.0 1500.0 2444.4 300.0 0 2 + +#----------------------------------------------------------- +# +# Domain regions +# +#----------------------------------------------------------- + +# number of regions +NREGIONS = 1 +# define the different regions of the model as : +#NEX_XI_BEGIN #NEX_XI_END #NEX_ETA_BEGIN #NEX_ETA_END #NZ_BEGIN #NZ_END #material_id +1 15 1 12 1 9 1 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/meshfem3D_files/interface1.txt b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/meshfem3D_files/interface1.txt new file mode 100644 index 000000000..44e0be8e3 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/meshfem3D_files/interface1.txt @@ -0,0 +1,4 @@ +0 +0 +0 +0 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/meshfem3D_files/interfaces.txt b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/meshfem3D_files/interfaces.txt new file mode 100644 index 000000000..9f749710d --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/meshfem3D_files/interfaces.txt @@ -0,0 +1,16 @@ +# number of interfaces + 1 +# +# We describe each interface below, structured as a 2D-grid, with several parameters : +# number of points along XI and ETA, minimal XI ETA coordinates +# and spacing between points which must be constant. +# Then the records contain the Z coordinates of the NXI x NETA points. +# +# interface number 1 (topography, top of the mesh) + .true. 2 2 0.0 0.0 1000.0 1000.0 + interface1.txt +# +# for each layer, we give the number of spectral elements in the vertical direction +# +# layer number 1 (top layer) + 9 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/observation_grid_to_use_for_gravity.txt b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/observation_grid_to_use_for_gravity.txt new file mode 100644 index 000000000..8cd23cb67 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/DATA/observation_grid_to_use_for_gravity.txt @@ -0,0 +1,4 @@ +13437.34 27329.12 13789.847 +7893.893 73523.342 1235.3524 +62341.3425 87283.35262 2178.3773 +98326.37287 53298.35626 3129.7183 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/plot_seismograms.py b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/plot_seismograms.py new file mode 100644 index 000000000..4eb1bc40f --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/fortran/plot_seismograms.py @@ -0,0 +1,215 @@ +import numpy as np +import matplotlib.pyplot as plt +import matplotlib.gridspec as gridspec +import glob +from matplotlib.patches import Circle + + +def read_stations(filename): + """Read STATIONS file""" + stations = [] + with open(filename, "r") as f: + for line in f: + if line.strip(): + parts = line.strip().split() + station = parts[0] + network = parts[1] + y = float(parts[2]) # latitude/UTM_Y + x = float(parts[3]) # longitude/UTM_X + elevation = float(parts[4]) + burial = float(parts[5]) + stations.append( + { + "station": station, + "network": network, + "x": x, + "y": y, + "elevation": elevation, + "burial": burial, + } + ) + return stations + + +def read_forcesolution(filename): + """Read FORCESOLUTION file""" + source = {} + with open(filename, "r") as f: + for line in f: + if line.strip(): + if "latorUTM:" in line: + source["y"] = float(line.split(":")[1].strip()) + elif "longorUTM:" in line: + source["x"] = float(line.split(":")[1].strip()) + elif "depth:" in line: + source["depth"] = float(line.split(":")[1].strip()) + return source + + +def read_seismogram(filename): + """Read seismogram file""" + data = np.loadtxt(filename) + return data[:, 0], data[:, 1] # time, displacement + + +def calculate_epicentral_distance(station_x, station_y, source_x, source_y): + """Calculate epicentral distance""" + return np.sqrt((station_x - source_x) ** 2 + (station_y - source_y) ** 2) + + +def main(): + # Read station and source data + stations = read_stations("DATA/STATIONS") + source = read_forcesolution("DATA/FORCESOLUTION") + + # Calculate epicentral distances and sort stations + for station in stations: + station["distance"] = calculate_epicentral_distance( + station["x"], station["y"], source["x"], source["y"] + ) + + stations_sorted = sorted(stations, key=lambda x: x["distance"]) + + # Create figure with gridspec for 1 row x 4 columns + fig = plt.figure(figsize=(20, 6)) + gs = gridspec.GridSpec(1, 4, width_ratios=[2, 1, 1, 1], hspace=0.3, wspace=0.3) + + # Subplot 1: Source-Station geometry with circular grid (larger) + ax1 = fig.add_subplot(gs[0, 0]) + + # Plot stations + for station in stations: + ax1.plot( + station["x"], + station["y"], + "rv", + markersize=8, + label="Stations" if station == stations[0] else "", + ) + ax1.text( + station["x"], + station["y"] + 1000, + station["station"], + ha="center", + va="bottom", + fontsize=8, + ) + + # Plot source + ax1.plot(source["x"], source["y"], "r*", markersize=15, label="Source") + + # Add circular distance grid + max_dist = max([s["distance"] for s in stations]) + circles = [5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000] + for radius in circles: + if radius <= max_dist * 1.2: + circle = Circle( + (source["x"], source["y"]), + radius, + fill=False, + linestyle="--", + alpha=0.3, + color="gray", + ) + ax1.add_patch(circle) + # Add distance labels + ax1.text( + source["x"] + radius * 0.7, + source["y"] + radius * 0.7, + f"{radius / 1000:.0f}km", + fontsize=8, + alpha=0.7, + ) + + ax1.set_xlabel("X (UTM)") + ax1.set_ylabel("Y (UTM)") + ax1.set_title("Source-Station Geometry") + ax1.legend() + ax1.grid(True, alpha=0.3) + ax1.set_aspect("equal") + + # Find seismogram files + seismogram_files = { + "BXX": sorted(glob.glob("OUTPUT_FILES/*.BXX.semd")), + "BXY": sorted(glob.glob("OUTPUT_FILES/*.BXY.semd")), + "BXZ": sorted(glob.glob("OUTPUT_FILES/*.BXZ.semd")), + } + + # Read all seismograms and find common time range + all_seismograms = {} + time_range = None + max_displacement = 0 + + for component in ["BXX", "BXY", "BXZ"]: + all_seismograms[component] = {} + for filename in seismogram_files[component]: + # Extract station name from filename + station_name = filename.split("/")[-1].split(".")[1] + time, displacement = read_seismogram(filename) + all_seismograms[component][station_name] = (time, displacement) + + # Update global ranges + if time_range is None: + time_range = (time.min(), time.max()) + else: + time_range = ( + min(time_range[0], time.min()), + max(time_range[1], time.max()), + ) + max_displacement = max(max_displacement, np.abs(displacement).max()) + + # Plot seismograms for each component + components = ["BXX", "BXY", "BXZ"] + + for i, component in enumerate(components): + ax = fig.add_subplot(gs[0, i + 1]) + + # Plot seismograms sorted by epicentral distance + y_spacing = max_displacement * 2.5 + + for j, station in enumerate(stations_sorted): + station_name = station["station"] + if station_name in all_seismograms[component]: + time, displacement = all_seismograms[component][station_name] + + # Normalize and offset displacement + normalized_disp = displacement / max_displacement * y_spacing * 0.8 + y_pos = j * y_spacing + + ax.plot(time, normalized_disp + y_pos, "k-", linewidth=0.8) + + # Add station label and distance + ax.text( + time_range[0] - (time_range[1] - time_range[0]) * 0.05, + y_pos, + f"{station_name}\n({station['distance'] / 1000:.1f}km)", + ha="right", + va="center", + fontsize=8, + ) + + ax.set_xlabel("Time (s)") + ax.set_title(f"Component {component}") + ax.set_xlim(time_range) + ax.grid(True, alpha=0.3) + + # Set y-axis limits to show all traces properly + if len(stations_sorted) > 0: + ax.set_ylim( + -y_spacing * 0.5, + (len(stations_sorted) - 1) * y_spacing + y_spacing * 0.5, + ) + + # Remove y-tick labels since they're just offsets + ax.set_yticklabels([]) + + # Set aspect ratio for seismogram plots to be consistent + ax.set_aspect("auto") + + plt.tight_layout() + plt.savefig("seismogram_plot.png", dpi=150, bbox_inches="tight") + plt.show() + + +if __name__ == "__main__": + main() diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/specfempp/DATA/Par_File b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/specfempp/DATA/Par_File new file mode 100644 index 000000000..cf1c1f406 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/specfempp/DATA/Par_File @@ -0,0 +1,431 @@ +#----------------------------------------------------------- +# +# Simulation input parameters +# +#----------------------------------------------------------- + +# forward or adjoint simulation +# 1 = forward, 2 = adjoint, 3 = both simultaneously +SIMULATION_TYPE = 1 +# 0 = earthquake simulation, 1/2/3 = three steps in noise simulation +NOISE_TOMOGRAPHY = 0 +SAVE_FORWARD = .false. + +# solve a full FWI inverse problem from a single calling program with no I/Os, storing everything in memory, +# or run a classical forward or adjoint problem only and save the seismograms and/or sensitivity kernels to disk (with costlier I/Os) +INVERSE_FWI_FULL_PROBLEM = .false. + +# UTM projection parameters +# Use a negative zone number for the Southern hemisphere: +# The Northern hemisphere corresponds to zones +1 to +60, +# The Southern hemisphere corresponds to zones -1 to -60. +UTM_PROJECTION_ZONE = 11 +SUPPRESS_UTM_PROJECTION = .true. + +# number of MPI processors +NPROC = 1 + +# time step parameters +NSTEP = 250 +DT = 0.16 + +# set to true to use local-time stepping (LTS) +LTS_MODE = .false. + +# Partitioning algorithm for decompose_mesh +# choose partitioner: 1==SCOTCH (default), 2==METIS, 3==PATOH, 4==ROWS_PART +PARTITIONING_TYPE = 1 + +#----------------------------------------------------------- +# +# LDDRK time scheme +# +#----------------------------------------------------------- +USE_LDDRK = .false. +INCREASE_CFL_FOR_LDDRK = .false. +RATIO_BY_WHICH_TO_INCREASE_IT = 1.4 + +#----------------------------------------------------------- +# +# Mesh +# +#----------------------------------------------------------- + +# Number of nodes for 2D and 3D shape functions for hexahedra. +# We use either 8-node mesh elements (bricks) or 27-node elements. +# If you use our internal mesher, the only option is 8-node bricks (27-node elements are not supported). +NGNOD = 8 + +# models: +# available options are: +# default (model parameters described by mesh properties) +# 1D models available are: +# 1d_prem,1d_socal,1d_cascadia +# 3D models available are: +# aniso,external,gll,salton_trough,tomo,SEP,coupled,... +MODEL = default + +# path for external model files (if MODEL = coupled) +COUPLED_MODEL_DIRECTORY = ./DATA/coupled_model/ + +# path for external tomographic models files +TOMOGRAPHY_PATH = ./DATA/tomo_files/ +# if you are using a SEP model (oil-industry format) +SEP_MODEL_DIRECTORY = ./DATA/my_SEP_model/ + +#----------------------------------------------------------- + +# parameters describing the model +APPROXIMATE_OCEAN_LOAD = .false. +TOPOGRAPHY = .false. +ATTENUATION = .false. +ANISOTROPY = .false. +GRAVITY = .false. + +# in case of attenuation, reference frequency in Hz at which the velocity values in the velocity model are given (unused otherwise) +ATTENUATION_f0_REFERENCE = 18.d0 + +# attenuation period range over which we try to mimic a constant Q factor +MIN_ATTENUATION_PERIOD = 999999998.d0 +MAX_ATTENUATION_PERIOD = 999999999.d0 +# ignore this range and ask the code to compute it automatically instead based on the estimated resolution of the mesh (use this unless you know what you are doing) +COMPUTE_FREQ_BAND_AUTOMATIC = .true. + +# Olsen's constant for Q_mu = constant * V_s attenuation rule +USE_OLSEN_ATTENUATION = .false. +OLSEN_ATTENUATION_RATIO = 0.05 + +#----------------------------------------------------------- +# +# Absorbing boundary conditions +# +#----------------------------------------------------------- + +# C-PML boundary conditions for a regional simulation +# (if set to .false., and STACEY_ABSORBING_CONDITIONS is also set to .false., you get a free surface instead +# in the case of elastic or viscoelastic mesh elements, and a rigid surface in the case of acoustic (fluid) elements +PML_CONDITIONS = .false. + +# C-PML top surface +PML_INSTEAD_OF_FREE_SURFACE = .false. + +# C-PML dominant frequency +f0_FOR_PML = 0.05555 + +# parameters used to rotate C-PML boundary conditions by a given angle (not completed yet) +# ROTATE_PML_ACTIVATE = .false. +# ROTATE_PML_ANGLE = 0. + +# absorbing boundary conditions for a regional simulation +# (if set to .false., and PML_CONDITIONS is also set to .false., you get a free surface instead +# in the case of elastic or viscoelastic mesh elements, and a rigid surface in the case of acoustic (fluid) elements +STACEY_ABSORBING_CONDITIONS = .false. + +# absorbing top surface (defined in mesh as 'free_surface_file') +STACEY_INSTEAD_OF_FREE_SURFACE = .false. + +# When STACEY_ABSORBING_CONDITIONS is set to .true. : +# absorbing conditions are defined in xmin, xmax, ymin, ymax and zmin +# this option BOTTOM_FREE_SURFACE can be set to .true. to +# make zmin free surface instead of absorbing condition +BOTTOM_FREE_SURFACE = .false. + +#----------------------------------------------------------- +# +# undoing attenuation and/or PMLs for sensitivity kernel calculations +# +#----------------------------------------------------------- + +# to undo attenuation and/or PMLs for sensitivity kernel calculations or forward runs with SAVE_FORWARD +# use the flag below. It performs undoing of attenuation and/or of PMLs in an exact way for sensitivity kernel calculations +# but requires disk space for temporary storage, and uses a significant amount of memory used as buffers for temporary storage. +# When that option is on the second parameter indicates how often the code dumps restart files to disk (if in doubt, use something between 100 and 1000). +UNDO_ATTENUATION_AND_OR_PML = .false. +NT_DUMP_ATTENUATION = 200 + +#----------------------------------------------------------- +# +# Visualization +# +#----------------------------------------------------------- + +# save AVS or OpenDX movies +# MOVIE_TYPE = 1 to show the top surface +# MOVIE_TYPE = 2 to show all the external faces of the mesh +CREATE_SHAKEMAP = .false. +MOVIE_SURFACE = .false. +MOVIE_TYPE = 1 +MOVIE_VOLUME = .false. +SAVE_DISPLACEMENT = .false. +MOVIE_VOLUME_STRESS = .false. +USE_HIGHRES_FOR_MOVIES = .false. +NTSTEP_BETWEEN_FRAMES = 200 +HDUR_MOVIE = 0.0 + +# save AVS or OpenDX mesh files to check the mesh +SAVE_MESH_FILES = .false. + +# path to store the local database file on each node +LOCAL_PATH = ./OUTPUT_FILES/DATABASES_MPI + +# interval at which we output time step info and max of norm of displacement +NTSTEP_BETWEEN_OUTPUT_INFO = 500 + +#----------------------------------------------------------- +# +# Sources +# +#----------------------------------------------------------- + +# sources and receivers Z coordinates given directly (i.e. as their true position) instead of as their depth +USE_SOURCES_RECEIVERS_Z = .false. + +# use a (tilted) FORCESOLUTION force point source (or several) instead of a CMTSOLUTION moment-tensor source. +# This can be useful e.g. for oil industry foothills simulations or asteroid simulations +# in which the source is a vertical force, normal force, tilted force, impact etc. +# If this flag is turned on, the FORCESOLUTION file must be edited by giving: +# - the corresponding time-shift parameter, +# - the half duration (hdur, in s) for Gaussian/Step function, dominant frequency (f0, in Hz) for Ricker, +# - the coordinates of the source, +# - the source time function type (0=Gaussian function, 1=Ricker wavelet, 2=Step function), +# - the magnitude of the force source, +# - the components of a (non necessarily unitary) direction vector for the force source in the E/N/Z_UP basis. +# The direction vector is made unitary internally in the code and thus only its direction matters here; +# its norm is ignored and the norm of the force used is the factor force source times the source time function. +USE_FORCE_POINT_SOURCE = .true. + +SOURCE_FILENAME = ./DATA/CMTSOLUTION + +# set to true to use a Ricker source time function instead of the source time functions set by default +# to represent a (tilted) FORCESOLUTION force point source or a CMTSOLUTION moment-tensor source. +USE_RICKER_TIME_FUNCTION = .false. + +# use an external source time function +# you must add a file with your source time function and the file name path +# relative to working directory at the end of CMTSOLUTION or FORCESOLUTION file +# (with multiple sources, one file per source is required). +# This file must have a single column containing the amplitudes of the source at all time steps; +# time step size used must be equal to DT as defined at the beginning of this Par_file. +# Be sure when this option is .false. to remove the name of stf file in CMTSOLUTION or FORCESOLUTION +USE_EXTERNAL_SOURCE_FILE = .false. + +# print source time function +PRINT_SOURCE_TIME_FUNCTION = .false. + +# source encoding +# (for acoustic simulations only for now) determines source encoding factor +/-1 depending on sign of moment tensor +# (see e.g. Krebs et al., 2009. Fast full-wavefield seismic inversion using encoded sources, Geophysics, 74 (6), WCC177-WCC188.) +USE_SOURCE_ENCODING = .false. + +#----------------------------------------------------------- +# +# Seismograms +# +#----------------------------------------------------------- + +# interval in time steps for writing of seismograms +NTSTEP_BETWEEN_OUTPUT_SEISMOS = 10000 + +# set to n to reduce the sampling rate of output seismograms by a factor of n +# defaults to 1, which means no down-sampling +NTSTEP_BETWEEN_OUTPUT_SAMPLE = 1 + +# decide if we save displacement, velocity, acceleration and/or pressure in forward runs (they can be set to true simultaneously) +# currently pressure seismograms are implemented in acoustic (i.e. fluid) elements only +SAVE_SEISMOGRAMS_DISPLACEMENT = .true. +SAVE_SEISMOGRAMS_VELOCITY = .false. +SAVE_SEISMOGRAMS_ACCELERATION = .false. +SAVE_SEISMOGRAMS_PRESSURE = .false. # currently implemented in acoustic (i.e. fluid) elements only + +# option to save strain seismograms +# this option is useful for strain Green's tensor +SAVE_SEISMOGRAMS_STRAIN = .false. + +# save seismograms also when running the adjoint runs for an inverse problem +# (usually they are unused and not very meaningful, leave this off in almost all cases) +SAVE_SEISMOGRAMS_IN_ADJOINT_RUN = .true. + +# save seismograms in binary or ASCII format (binary is smaller but may not be portable between machines) +USE_BINARY_FOR_SEISMOGRAMS = .false. + +# output seismograms in Seismic Unix format (binary with 240-byte-headers) +SU_FORMAT = .false. + +# output seismograms in ASDF (requires asdf-library) +ASDF_FORMAT = .false. + +# output seismograms in HDF5 (requires hdf5-library and WRITE_SEISMOGRAMS_BY_MAIN) +HDF5_FORMAT = .false. + +# decide if main process writes all the seismograms or if all processes do it in parallel +WRITE_SEISMOGRAMS_BY_MAIN = .false. + +# save all seismograms in one large combined file instead of one file per seismogram +# to avoid overloading shared non-local file systems such as LUSTRE or GPFS for instance +SAVE_ALL_SEISMOS_IN_ONE_FILE = .false. + +# use a trick to increase accuracy of pressure seismograms in fluid (acoustic) elements: +# use the second derivative of the source for the source time function instead of the source itself, +# and then record -potential_acoustic() as pressure seismograms instead of -potential_dot_dot_acoustic(); +# this is mathematically equivalent, but numerically significantly more accurate because in the explicit +# Newmark time scheme acceleration is accurate at zeroth order while displacement is accurate at second order, +# thus in fluid elements potential_dot_dot_acoustic() is accurate at zeroth order while potential_acoustic() +# is accurate at second order and thus contains significantly less numerical noise. +USE_TRICK_FOR_BETTER_PRESSURE = .false. + +#----------------------------------------------------------- +# +# Fault simulations +# +#----------------------------------------------------------- + +# Define if the simulation has kinematic or dynamic faults +HAS_FINITE_FAULT_SOURCE = .false. + +# File containing parameters of the fault +FAULT_PAR_FILE = dummy.txt + +# STATIONS in the fault plane +FAULT_STATIONS = dummy.txt + +# Specifications for heterogeneous stresses and friction for linear slip weakening friction parameters. To activate this feature set DATA/Par_file_faults name list&RUPTURE_SWITCHES, set TPV16=.TRUE.. +STRESS_FRICTION_FILE = dummy.txt + +# Heterogeneous stresses and friction input for rate and state friction. To activate this feature, in DATA/Par_file_faults name list&RUPTURE_SWITCHES, set RSF_HETE=.TRUE.. +RSF_HETE_FILE = dummy.txt + + +#----------------------------------------------------------- +# +# Energy calculation +# +#----------------------------------------------------------- + +# to plot energy curves, for instance to monitor how CPML absorbing layers behave; +# should be turned OFF in most cases because a bit expensive +OUTPUT_ENERGY = .false. +# every how many time steps we compute energy (which is a bit expensive to compute) +NTSTEP_BETWEEN_OUTPUT_ENERGY = 10 + +#----------------------------------------------------------- +# +# Adjoint kernel outputs +# +#----------------------------------------------------------- + +# interval in time steps for reading adjoint traces +# 0 = read the whole adjoint sources at start time +NTSTEP_BETWEEN_READ_ADJSRC = 0 + +# read adjoint sources using ASDF (requires asdf-library) +READ_ADJSRC_ASDF = .false. + +# this parameter must be set to .true. to compute anisotropic kernels +# in crust and mantle (related to the 21 Cij in geographical coordinates) +# default is .false. to compute isotropic kernels (related to alpha and beta) +ANISOTROPIC_KL = .false. + +# compute transverse isotropic kernels (alpha_v,alpha_h,beta_v,beta_h,eta,rho) +# rather than fully anisotropic kernels in case ANISOTROPIC_KL is set to .true. +SAVE_TRANSVERSE_KL = .false. + +# this parameter must be set to .true. to compute anisotropic kernels for +# cost function using velocity observable rather than displacement +ANISOTROPIC_VELOCITY_KL = .false. + +# outputs approximate Hessian for preconditioning +APPROXIMATE_HESS_KL = .false. + +# save Moho mesh and compute Moho boundary kernels +SAVE_MOHO_MESH = .false. + +#----------------------------------------------------------- +# +# Coupling with an injection technique (DSM, AxiSEM, or FK) +# +#----------------------------------------------------------- +COUPLE_WITH_INJECTION_TECHNIQUE = .false. +INJECTION_TECHNIQUE_TYPE = 3 # 1 = DSM, 2 = AxiSEM, 3 = FK +MESH_A_CHUNK_OF_THE_EARTH = .false. +TRACTION_PATH = ./DATA/AxiSEM_tractions/3/ +FKMODEL_FILE = FKmodel +RECIPROCITY_AND_KH_INTEGRAL = .false. # does not work yet + +#----------------------------------------------------------- +## +## Prescribed wavefield discontinuity on an interface +## +##----------------------------------------------------------- +IS_WAVEFIELD_DISCONTINUITY = .false. + +#----------------------------------------------------------- +# +# Run modes +# +#----------------------------------------------------------- + +# Simultaneous runs +# added the ability to run several calculations (several earthquakes) +# in an embarrassingly-parallel fashion from within the same run; +# this can be useful when using a very large supercomputer to compute +# many earthquakes in a catalog, in which case it can be better from +# a batch job submission point of view to start fewer and much larger jobs, +# each of them computing several earthquakes in parallel. +# To turn that option on, set parameter NUMBER_OF_SIMULTANEOUS_RUNS to a value greater than 1. +# To implement that, we create NUMBER_OF_SIMULTANEOUS_RUNS MPI sub-communicators, +# each of them being labeled "my_local_mpi_comm_world", and we use them +# in all the routines in "src/shared/parallel.f90", except in MPI_ABORT() because in that case +# we need to kill the entire run. +# When that option is on, of course the number of processor cores used to start +# the code in the batch system must be a multiple of NUMBER_OF_SIMULTANEOUS_RUNS, +# all the individual runs must use the same number of processor cores, +# which as usual is NPROC in the Par_file, +# and thus the total number of processor cores to request from the batch system +# should be NUMBER_OF_SIMULTANEOUS_RUNS * NPROC. +# All the runs to perform must be placed in directories called run0001, run0002, run0003 and so on +# (with exactly four digits). +# +# Imagine you have 10 independent calculations to do, each of them on 100 cores; you have three options: +# +# 1/ submit 10 jobs to the batch system +# +# 2/ submit a single job on 1000 cores to the batch, and in that script create a sub-array of jobs to start 10 jobs, +# each running on 100 cores (see e.g. http://www.schedmd.com/slurmdocs/job_array.html ) +# +# 3/ submit a single job on 1000 cores to the batch, start SPECFEM3D on 1000 cores, create 10 sub-communicators, +# cd into one of 10 subdirectories (called e.g. run0001, run0002,... run0010) depending on the sub-communicator +# your MPI rank belongs to, and run normally on 100 cores using that sub-communicator. +# +# The option below implements 3/. +# +NUMBER_OF_SIMULTANEOUS_RUNS = 1 + +# if we perform simultaneous runs in parallel, if only the source and receivers vary between these runs +# but not the mesh nor the model (velocity and density) then we can also read the mesh and model files +# from a single run in the beginning and broadcast them to all the others; for a large number of simultaneous +# runs for instance when solving inverse problems iteratively this can DRASTICALLY reduce I/Os to disk in the solver +# (by a factor equal to NUMBER_OF_SIMULTANEOUS_RUNS), and reducing I/Os is crucial in the case of huge runs. +# Thus, always set this option to .true. if the mesh and the model are the same for all simultaneous runs. +# In that case there is no need to duplicate the mesh and model file database (the content of the DATABASES_MPI +# directories) in each of the run0001, run0002,... directories, it is sufficient to have one in run0001 +# and the code will broadcast it to the others) +BROADCAST_SAME_MESH_AND_MODEL = .true. + +#----------------------------------------------------------- + +# set to true to use GPUs +GPU_MODE = .false. + +# ADIOS Options for I/Os +ADIOS_ENABLED = .false. +ADIOS_FOR_DATABASES = .false. +ADIOS_FOR_MESH = .false. +ADIOS_FOR_FORWARD_ARRAYS = .false. +ADIOS_FOR_KERNELS = .false. +ADIOS_FOR_UNDO_ATTENUATION = .false. + +# HDF5 Database I/O +# (note the flags for HDF5 and ADIOS are mutually exclusive, only one can be used) +HDF5_ENABLED = .false. +HDF5_FOR_MOVIES = .false. +HDF5_IO_NODES = 0 # HDF5 IO server with number of IO dedicated procs diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/specfempp/DATA/meshfem3D_files/Mesh_Par_file b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/specfempp/DATA/meshfem3D_files/Mesh_Par_file new file mode 100644 index 000000000..6681db729 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/specfempp/DATA/meshfem3D_files/Mesh_Par_file @@ -0,0 +1,109 @@ +#----------------------------------------------------------- +# +# Meshing input parameters +# +#----------------------------------------------------------- + +MESH_A_CHUNK_OF_THE_EARTH = .false. +CHUNK_MESH_PAR_FILE = dummy.txt + +# coordinates of mesh block in latitude/longitude and depth in km +LATITUDE_MIN = 0.0 +LATITUDE_MAX = 80000.0 +LONGITUDE_MIN = 0.0 +LONGITUDE_MAX = 100000.0 +DEPTH_BLOCK_KM = 60.d0 +UTM_PROJECTION_ZONE = 11 +SUPPRESS_UTM_PROJECTION = .true. + +# file that contains the interfaces of the model / mesh +INTERFACES_FILE = ./DATA/meshfem3D_files/interfaces.txt + +# file that contains the cavity +CAVITY_FILE = no_cavity.dat + +# Number of nodes for 2D and 3D shape functions for hexahedra. +# We use either 8-node mesh elements (bricks) or 27-node elements. +# If you use our internal mesher, the only option is 8-node bricks (27-node elements are not supported). +NGNOD = 8 + +# number of elements at the surface along edges of the mesh at the surface +# (must be 8 * multiple of NPROC below if mesh is not regular and contains mesh doublings) +# (must be multiple of NPROC below if mesh is regular) +NEX_XI = 15 +NEX_ETA = 12 + +# number of MPI processors along xi and eta (can be different) +NPROC_XI = 1 +NPROC_ETA = 1 + +#----------------------------------------------------------- +# +# Doubling layers +# +#----------------------------------------------------------- + +# Regular/irregular mesh +USE_REGULAR_MESH = .true. +# Only for irregular meshes, number of doubling layers and their position +NDOUBLINGS = 0 +# NZ_DOUBLING_1 is the parameter to set up if there is only one doubling layer +# (more doubling entries can be added if needed to match NDOUBLINGS value) +NZ_DOUBLING_1 = 40 +NZ_DOUBLING_2 = 48 + +#----------------------------------------------------------- +# +# Visualization +# +#----------------------------------------------------------- + +# create mesh files for visualisation or further checking +CREATE_ABAQUS_FILES = .false. +CREATE_DX_FILES = .false. +CREATE_VTK_FILES = .true. + +# stores mesh files as cubit-exported files into directory MESH/ (for single process run) +SAVE_MESH_AS_CUBIT = .false. + +# path to store the databases files +LOCAL_PATH = ./OUTPUT_FILES/DATABASES_MPI + +#----------------------------------------------------------- +# +# CPML +# +#----------------------------------------------------------- + +# CPML perfectly matched absorbing layers +THICKNESS_OF_X_PML = 12.3d0 +THICKNESS_OF_Y_PML = 12.3d0 +THICKNESS_OF_Z_PML = 12.3d0 + +#----------------------------------------------------------- +# +# Domain materials +# +#----------------------------------------------------------- + +# number of materials +NMATERIALS = 1 +# define the different materials in the model as: +# #material_id #rho #vp #vs #Q_Kappa #Q_mu #anisotropy_flag #domain_id +# Q_Kappa : Q_Kappa attenuation quality factor +# Q_mu : Q_mu attenuation quality factor +# anisotropy_flag : 0 = no anisotropy / 1,2,... check the implementation in file aniso_model.f90 +# domain_id : 1 = acoustic / 2 = elastic +1 2300.0 2800.0 1500.0 2444.4 300.0 0 2 + +#----------------------------------------------------------- +# +# Domain regions +# +#----------------------------------------------------------- + +# number of regions +NREGIONS = 1 +# define the different regions of the model as : +#NEX_XI_BEGIN #NEX_XI_END #NEX_ETA_BEGIN #NEX_ETA_END #NZ_BEGIN #NZ_END #material_id +1 15 1 12 1 9 1 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/specfempp/DATA/meshfem3D_files/interface1.txt b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/specfempp/DATA/meshfem3D_files/interface1.txt new file mode 100644 index 000000000..44e0be8e3 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/specfempp/DATA/meshfem3D_files/interface1.txt @@ -0,0 +1,4 @@ +0 +0 +0 +0 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/specfempp/DATA/meshfem3D_files/interfaces.txt b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/specfempp/DATA/meshfem3D_files/interfaces.txt new file mode 100644 index 000000000..863517666 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/provenance/specfempp/DATA/meshfem3D_files/interfaces.txt @@ -0,0 +1,16 @@ +# number of interfaces + 1 +# +# We describe each interface below, structured as a 2D-grid, with several parameters : +# number of points along XI and ETA, minimal XI ETA coordinates +# and spacing between points which must be constant. +# Then the records contain the Z coordinates of the NXI x NETA points. +# +# interface number 1 (topography, top of the mesh) + .true. 2 2 0.0 0.0 1000.0 1000.0 + /Users/lsawade/SPECFEMPP/benchmarks/build/release/dim3/homogeneous_halfspace/DATA/meshfem3D_files/interface1.txt +# +# for each layer, we give the number of spectral elements in the vertical direction +# +# layer number 1 (top layer) + 9 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/specfem_config.yaml b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/specfem_config.yaml new file mode 100644 index 000000000..e48bbb7d2 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/specfem_config.yaml @@ -0,0 +1,52 @@ +parameters: + + header: + ## Header information is used for logging. It is good practice to give your simulations explicit names + title: Isotropic Elastic simulation # name for your simulation + # A detailed description for your simulation + description: | + Material systems : Elastic domain (1) + Interfaces : None + Sources : Force source (1) + Boundary conditions : Neumann BCs on all edges + Debugging comment : This test tests elastic compute_forces routine + + simulation-setup: + ## quadrature setup + quadrature: + quadrature-type: GLL4 + + ## Solver setup + solver: + time-marching: + type-of-simulation: forward + time-scheme: + type: Newmark + dt: 4e-2 + nstep: 1000 + + simulation-mode: + forward: + writer: + seismogram: + format: ascii + directory: "." + + receivers: + stations: "displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/STATIONS" + angle: 0.0 + seismogram-type: + - displacement + nstep_between_samples: 1 + + ## Runtime setup + run-setup: + number-of-processors: 1 + number-of-runs: 1 + + ## databases + databases: + mesh-database: "displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/DATABASES_MPI/proc000000_external_mesh.bin" + mesh-parameters: "displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/DATABASES_MPI/mesh_parameters.bin" + + sources: "displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/force.yaml" diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X55.MXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X55.MXX.semd new file mode 100644 index 000000000..5e052a98b --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X55.MXX.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 3.88887454E-21 + -7.03999996 9.20448363E-16 + -6.88000011 -2.78576367E-15 + -6.71999979 -2.79760498E-14 + -6.55999994 -2.96394235E-15 + -6.40000010 4.33661109E-13 + -6.23999977 1.63761702E-12 + -6.07999992 2.42855432E-12 + -5.92000008 -1.26271259E-12 + -5.76000023 -1.30975075E-11 + -5.59999990 -2.67584913E-11 + -5.44000006 -2.05538312E-11 + -5.28000021 2.57067648E-11 + -5.11999989 9.28846444E-11 + -4.96000004 1.05981897E-10 + -4.80000019 -1.00104031E-11 + -4.63999987 -2.21616114E-10 + -4.48000002 -3.45833334E-10 + -4.32000017 -1.86311092E-10 + -4.15999985 2.27038180E-10 + -4.00000000 5.57244972E-10 + -3.83999991 4.19830060E-10 + -3.68000007 -2.03663850E-10 + -3.51999998 -8.48830006E-10 + -3.35999990 -9.57049107E-10 + -3.20000005 -3.99482281E-10 + -3.03999996 4.49690729E-10 + -2.88000011 1.14655130E-09 + -2.72000003 1.49658863E-09 + -2.55999994 1.30127631E-09 + -2.40000010 4.58996313E-11 + -2.24000001 -2.53363797E-09 + -2.07999992 -5.21087840E-09 + -1.91999996 -5.14352738E-09 + -1.75999999 -2.23697241E-10 + -1.60000002 7.67560770E-09 + -1.44000006 1.24632082E-08 + -1.27999997 8.51387405E-09 + -1.12000000 -3.28591021E-09 + -0.959999979 -1.46860977E-08 + -0.800000012 -1.67690430E-08 + -0.639999986 -8.34025737E-09 + -0.479999989 2.89672530E-09 + -0.319999993 8.36149372E-09 + -0.159999996 7.45147677E-09 + 1.66533454E-16 7.09419945E-09 + 0.159999996 1.20352555E-08 + 0.319999993 1.72127059E-08 + 0.479999989 1.23245298E-08 + 0.639999986 -5.17063459E-09 + 0.800000012 -2.34953941E-08 + 0.959999979 -2.58326001E-08 + 1.12000000 -7.37077377E-09 + 1.27999997 1.80810797E-08 + 1.44000006 3.04964551E-08 + 1.60000002 2.37167175E-08 + 1.75999999 1.31287443E-08 + 1.91999996 2.29442936E-08 + 2.07999992 6.52141097E-08 + 2.24000001 1.29930598E-07 + 2.40000010 1.93513685E-07 + 2.55999994 2.35344160E-07 + 2.72000003 2.46472126E-07 + 2.88000011 2.24555365E-07 + 3.03999996 1.62500655E-07 + 3.20000005 4.21470787E-08 + 3.35999990 -1.63182179E-07 + 3.51999998 -4.83870906E-07 + 3.68000007 -9.57483394E-07 + 3.83999991 -1.64556172E-06 + 4.00000000 -2.65850736E-06 + 4.15999985 -4.17714591E-06 + 4.32000017 -6.46459102E-06 + 4.48000002 -9.87588737E-06 + 4.63999987 -1.48827385E-05 + 4.80000019 -2.21230439E-05 + 4.96000004 -3.24633220E-05 + 5.11999989 -4.70470623E-05 + 5.28000021 -6.73124669E-05 + 5.44000006 -9.49922105E-05 + 5.59999990 -1.32124493E-04 + 5.76000023 -1.81084833E-04 + 5.92000008 -2.44607305E-04 + 6.07999992 -3.25742614E-04 + 6.23999977 -4.27721476E-04 + 6.40000010 -5.53733436E-04 + 6.55999994 -7.06649385E-04 + 6.71999979 -8.88693263E-04 + 6.88000011 -1.10103516E-03 + 7.03999996 -1.34328019E-03 + 7.19999981 -1.61287840E-03 + 7.36000013 -1.90453522E-03 + 7.51999998 -2.20974348E-03 + 7.67999983 -2.51653511E-03 + 7.84000015 -2.80953012E-03 + 8.00000000 -3.07034049E-03 + 8.15999985 -3.27836978E-03 + 8.31999969 -3.41203553E-03 + 8.47999954 -3.45039810E-03 + 8.64000034 -3.37509089E-03 + 8.80000019 -3.17239203E-03 + 8.96000004 -2.83519155E-03 + 9.11999989 -2.36460310E-03 + 9.27999973 -1.77097099E-03 + 9.43999958 -1.07408478E-03 + 9.60000038 -3.02480592E-04 + 9.76000023 5.08200377E-04 + 9.92000008 1.31772959E-03 + 10.0799999 2.08449317E-03 + 10.2399998 2.76906067E-03 + 10.3999996 3.33770900E-03 + 10.5600004 3.76547151E-03 + 10.7200003 4.03833063E-03 + 10.8800001 4.15429240E-03 + 11.0400000 4.12318856E-03 + 11.1999998 3.96519434E-03 + 11.3599997 3.70820123E-03 + 11.5200005 3.38435639E-03 + 11.6800003 3.02621722E-03 + 11.8400002 2.66303238E-03 + 12.0000000 2.31762021E-03 + 12.1599998 2.00421759E-03 + 12.3199997 1.72753760E-03 + 12.4799995 1.48313772E-03 + 12.6400003 1.25902612E-03 + 12.8000002 1.03826774E-03 + 12.9600000 8.02208262E-04 + 13.1199999 5.33859129E-04 + 13.2799997 2.20991715E-04 + 13.4399996 -1.41449025E-04 + 13.6000004 -5.49884338E-04 + 13.7600002 -9.91722336E-04 + 13.9200001 -1.44603499E-03 + 14.0799999 -1.88514346E-03 + 14.2399998 -2.27688369E-03 + 14.3999996 -2.58727674E-03 + 14.5600004 -2.78330641E-03 + 14.7200003 -2.83552101E-03 + 14.8800001 -2.72022234E-03 + 15.0400000 -2.42113229E-03 + 15.1999998 -1.93051831E-03 + 15.3599997 -1.24983408E-03 + 15.5200005 -3.89928406E-04 + 15.6800003 6.29132381E-04 + 15.8400002 1.77858700E-03 + 16.0000000 3.02180182E-03 + 16.1599998 4.31536464E-03 + 16.3199997 5.61047206E-03 + 16.4799995 6.85465755E-03 + 16.6399994 7.99389277E-03 + 16.7999992 8.97501316E-03 + 16.9599991 9.74834245E-03 + 17.1200008 1.02703637E-02 + 17.2800007 1.05062379E-02 + 17.4400005 1.04319742E-02 + 17.6000004 1.00360271E-02 + 17.7600002 9.32013709E-03 + 17.9200001 8.29932094E-03 + 18.0799999 7.00101117E-03 + 18.2399998 5.46345441E-03 + 18.3999996 3.73356207E-03 + 18.5599995 1.86444016E-03 + 18.7199993 -8.71577868E-05 + 18.8799992 -2.06320896E-03 + 19.0400009 -4.00647148E-03 + 19.2000008 -5.86213265E-03 + 19.3600006 -7.57907471E-03 + 19.5200005 -9.11084376E-03 + 19.6800003 -1.04164416E-02 + 19.8400002 -1.14610894E-02 + 20.0000000 -1.22170812E-02 + 20.1599998 -1.26647986E-02 + 20.3199997 -1.27938101E-02 + 20.4799995 -1.26039051E-02 + 20.6399994 -1.21059045E-02 + 20.7999992 -1.13219935E-02 + 20.9599991 -1.02854352E-02 + 21.1200008 -9.03946441E-03 + 21.2800007 -7.63536198E-03 + 21.4400005 -6.12976030E-03 + 21.6000004 -4.58144164E-03 + 21.7600002 -3.04793357E-03 + 21.9200001 -1.58224755E-03 + 22.0799999 -2.30075340E-04 + 22.2399998 9.72290523E-04 + 22.3999996 1.99913047E-03 + 22.5599995 2.83550611E-03 + 22.7199993 3.47660645E-03 + 22.8799992 3.92645225E-03 + 23.0400009 4.19624755E-03 + 23.2000008 4.30263672E-03 + 23.3600006 4.26607672E-03 + 23.5200005 4.10946272E-03 + 23.6800003 3.85708106E-03 + 23.8400002 3.53385042E-03 + 24.0000000 3.16472864E-03 + 24.1599998 2.77412194E-03 + 24.3199997 2.38515134E-03 + 24.4799995 2.01872061E-03 + 24.6399994 1.69240532E-03 + 24.7999992 1.41926925E-03 + 24.9599991 1.20677764E-03 + 25.1200008 1.05603936E-03 + 25.2800007 9.61610815E-04 + 25.4400005 9.12029354E-04 + 25.6000004 8.91110103E-04 + 25.7600002 8.79903091E-04 + 25.9200001 8.59090011E-04 + 26.0799999 8.11519742E-04 + 26.2399998 7.24533573E-04 + 26.3999996 5.91726450E-04 + 26.5599995 4.13857953E-04 + 26.7199993 1.98765381E-04 + 26.8799992 -3.96960459E-05 + 27.0400009 -2.83508271E-04 + 27.2000008 -5.12856641E-04 + 27.3600006 -7.08660460E-04 + 27.5200005 -8.54898593E-04 + 27.6800003 -9.40399768E-04 + 27.8400002 -9.59869532E-04 + 28.0000000 -9.14088741E-04 + 28.1599998 -8.09369492E-04 + 28.3199997 -6.56461809E-04 + 28.4799995 -4.69148334E-04 + 28.6399994 -2.62764748E-04 + 28.7999992 -5.28566197E-05 + 28.9599991 1.45879734E-04 + 29.1200008 3.20315798E-04 + 29.2800007 4.59313858E-04 + 29.4400005 5.53964870E-04 + 29.6000004 5.97767124E-04 + 29.7600002 5.86839917E-04 + 29.9200001 5.20213856E-04 + 30.0799999 4.00175893E-04 + 30.2399998 2.32582155E-04 + 30.3999996 2.69960456E-05 + 30.5599995 -2.03503078E-04 + 30.7199993 -4.42964054E-04 + 30.8799992 -6.73692906E-04 + 31.0400009 -8.77797953E-04 + 31.2000008 -1.03898929E-03 + 31.3600006 -1.14440091E-03 + 31.5200005 -1.18616689E-03 + 31.6800003 -1.16248301E-03 + 31.8400002 -1.07794779E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X55.MXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X55.MXY.semd new file mode 100644 index 000000000..77b812d6b --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X55.MXY.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 -1.98181057E-22 + -6.88000011 -4.77225980E-24 + -6.71999979 -2.84714693E-22 + -6.55999994 -8.87732091E-21 + -6.40000010 2.36553521E-21 + -6.23999977 5.27073282E-20 + -6.07999992 -1.50592835E-20 + -5.92000008 -3.84491928E-19 + -5.76000023 -4.90910342E-19 + -5.59999990 6.40760417E-19 + -5.44000006 1.83476146E-18 + -5.28000021 2.26597009E-18 + -5.11999989 4.06158269E-19 + -4.96000004 -9.03670585E-20 + -4.80000019 8.81618527E-18 + -4.63999987 1.93106373E-17 + -4.48000002 7.55804852E-18 + -4.32000017 -3.77312183E-17 + -4.15999985 -1.05354825E-16 + -4.00000000 -1.04102599E-16 + -3.83999991 1.05067515E-16 + -3.68000007 3.76777725E-16 + -3.51999998 2.93199475E-16 + -3.35999990 -3.20953145E-16 + -3.20000005 -1.07519980E-15 + -3.03999996 -9.97787342E-16 + -2.88000011 8.18072626E-16 + -2.72000003 3.64145563E-15 + -2.55999994 3.93341179E-15 + -2.40000010 -2.63098534E-15 + -2.24000001 -1.42548208E-14 + -2.07999992 -1.89268394E-14 + -1.91999996 -2.05025582E-16 + -1.75999999 4.30546949E-14 + -1.60000002 7.42631461E-14 + -1.44000006 3.43503573E-14 + -1.27999997 -8.75016002E-14 + -1.12000000 -1.89090158E-13 + -0.959999979 -1.14059722E-13 + -0.800000012 1.41109089E-13 + -0.639999986 3.04024655E-13 + -0.479999989 7.94186494E-14 + -0.319999993 -3.62398777E-13 + -0.159999996 -3.43336769E-13 + 1.66533454E-16 4.94968758E-13 + 0.159999996 1.29822130E-12 + 0.319999993 5.41091857E-13 + 0.479999989 -1.88003627E-12 + 0.639999986 -3.44404887E-12 + 0.800000012 -1.18434863E-12 + 0.959999979 4.01208147E-12 + 1.12000000 6.53504507E-12 + 1.27999997 1.70885420E-12 + 1.44000006 -7.36210138E-12 + 1.60000002 -1.05092714E-11 + 1.75999999 -1.22191135E-12 + 1.91999996 1.30986706E-11 + 2.07999992 1.53330855E-11 + 2.24000001 -2.24901825E-12 + 2.40000010 -2.39486746E-11 + 2.55999994 -2.17381460E-11 + 2.72000003 1.22286218E-11 + 2.88000011 4.69780152E-11 + 3.03999996 3.64293248E-11 + 3.20000005 -2.81679402E-11 + 3.35999990 -8.97252411E-11 + 3.51999998 -7.08717043E-11 + 3.68000007 4.22833643E-11 + 3.83999991 1.60406466E-10 + 4.00000000 1.48994206E-10 + 4.15999985 -3.36896448E-11 + 4.32000017 -2.49497645E-10 + 4.48000002 -2.78705808E-10 + 4.63999987 -3.74657215E-11 + 4.80000019 3.20111770E-10 + 4.96000004 4.53533627E-10 + 5.11999989 2.09280551E-10 + 5.28000021 -2.78932405E-10 + 5.44000006 -6.08791462E-10 + 5.59999990 -4.13509865E-10 + 5.76000023 2.72543405E-10 + 5.92000008 8.16840040E-10 + 6.07999992 6.78523182E-10 + 6.23999977 -1.99849970E-10 + 6.40000010 -1.13569076E-09 + 6.55999994 -1.27127886E-09 + 6.71999979 -3.76431830E-10 + 6.88000011 7.81062215E-10 + 7.03999996 1.14789767E-09 + 7.19999981 1.18509536E-10 + 7.36000013 -1.23357391E-09 + 7.51999998 -1.38388290E-09 + 7.67999983 4.57138799E-10 + 7.84000015 2.71517031E-09 + 8.00000000 2.93916558E-09 + 8.15999985 1.12594079E-09 + 8.31999969 -8.16874013E-10 + 8.47999954 -7.08573478E-10 + 8.64000034 5.90530957E-10 + 8.80000019 1.28158639E-09 + 8.96000004 3.17930432E-10 + 9.11999989 -1.04570019E-09 + 9.27999973 -1.05056130E-09 + 9.43999958 3.29588468E-10 + 9.60000038 1.42319123E-09 + 9.76000023 1.18086396E-09 + 9.92000008 -4.80175344E-11 + 10.0799999 -1.40041045E-09 + 10.2399998 -1.67265934E-09 + 10.3999996 -9.33983890E-10 + 10.5600004 3.08235465E-10 + 10.7200003 7.21480597E-10 + 10.8800001 -1.56093402E-10 + 11.0400000 -1.24298327E-09 + 11.1999998 -1.13748000E-09 + 11.3599997 8.54844029E-10 + 11.5200005 1.96444194E-09 + 11.6800003 1.94035521E-09 + 11.8400002 2.41199394E-10 + 12.0000000 -6.46653009E-10 + 12.1599998 8.40789161E-10 + 12.3199997 4.09895851E-09 + 12.4799995 5.99118399E-09 + 12.6400003 3.73480225E-09 + 12.8000002 -1.55178448E-09 + 12.9600000 -5.61593660E-09 + 13.1199999 -4.90463004E-09 + 13.2799997 -5.19775889E-10 + 13.4399996 3.51295859E-09 + 13.6000004 3.05553138E-09 + 13.7600002 -1.64302216E-09 + 13.9200001 -6.04664097E-09 + 14.0799999 -6.00369487E-09 + 14.2399998 -1.98033856E-09 + 14.3999996 1.94584371E-09 + 14.5600004 2.01031969E-09 + 14.7200003 -1.86041127E-09 + 14.8800001 -5.63793234E-09 + 15.0400000 -4.81291007E-09 + 15.1999998 1.33678890E-09 + 15.3599997 8.72414319E-09 + 15.5200005 1.11897540E-08 + 15.6800003 6.20340268E-09 + 15.8400002 -2.38593767E-09 + 16.0000000 -7.23210070E-09 + 16.1599998 -4.28090097E-09 + 16.3199997 3.44916962E-09 + 16.4799995 8.29557845E-09 + 16.6399994 5.43986234E-09 + 16.7999992 -2.13885309E-09 + 16.9599991 -6.55853150E-09 + 17.1200008 -3.98024280E-09 + 17.2800007 1.82663440E-09 + 17.4400005 4.67151517E-09 + 17.6000004 2.12362328E-09 + 17.7600002 -2.13382845E-09 + 17.9200001 -2.42415910E-09 + 18.0799999 2.02815742E-09 + 18.2399998 6.63419764E-09 + 18.3999996 5.32165201E-09 + 18.5599995 -1.79047333E-09 + 18.7199993 -7.62933894E-09 + 18.8799992 -5.62620084E-09 + 19.0400009 3.52848972E-09 + 19.2000008 1.09679341E-08 + 19.3600006 7.90479326E-09 + 19.5200005 -4.82904605E-09 + 19.6800003 -1.62295368E-08 + 19.8400002 -1.55028719E-08 + 20.0000000 -2.74059464E-09 + 20.1599998 1.12117817E-08 + 20.3199997 1.47719428E-08 + 20.4799995 6.90649715E-09 + 20.6399994 -2.95600655E-09 + 20.7999992 -4.76249040E-09 + 20.9599991 2.46250442E-09 + 21.1200008 1.04473141E-08 + 21.2800007 9.68417702E-09 + 21.4400005 -3.33691436E-10 + 21.6000004 -1.11426752E-08 + 21.7600002 -1.31596671E-08 + 21.9200001 -5.22367527E-09 + 22.0799999 6.06021944E-09 + 22.2399998 1.25131692E-08 + 22.3999996 1.15320171E-08 + 22.5599995 6.23187191E-09 + 22.7199993 1.16850551E-09 + 22.8799992 -2.02411776E-09 + 23.0400009 -4.63823469E-09 + 23.2000008 -7.35278860E-09 + 23.3600006 -9.03775454E-09 + 23.5200005 -7.48854667E-09 + 23.6800003 -2.05628825E-09 + 23.8400002 4.31967973E-09 + 24.0000000 6.10652195E-09 + 24.1599998 4.58575705E-10 + 24.3199997 -8.83963835E-09 + 24.4799995 -1.38428113E-08 + 24.6399994 -9.61990132E-09 + 24.7999992 8.69354588E-10 + 24.9599991 9.12705644E-09 + 25.1200008 8.63418048E-09 + 25.2800007 7.73330511E-10 + 25.4400005 -6.89479185E-09 + 25.6000004 -7.46005036E-09 + 25.7600002 -7.22070792E-10 + 25.9200001 7.34930516E-09 + 26.0799999 1.02709743E-08 + 26.2399998 5.88365889E-09 + 26.3999996 -2.79584422E-09 + 26.5599995 -1.02897646E-08 + 26.7199993 -1.21979582E-08 + 26.8799992 -7.50209850E-09 + 27.0400009 9.09279152E-10 + 27.2000008 7.86407650E-09 + 27.3600006 9.05971476E-09 + 27.5200005 4.57448301E-09 + 27.6800003 -9.04816611E-10 + 27.8400002 -1.93719374E-09 + 28.0000000 2.75647949E-09 + 28.1599998 9.06902731E-09 + 28.3199997 1.12712861E-08 + 28.4799995 7.22271842E-09 + 28.6399994 4.39549619E-10 + 28.7999992 -3.12857651E-09 + 28.9599991 -2.70326650E-10 + 29.1200008 6.32269570E-09 + 29.2800007 1.03922222E-08 + 29.4400005 6.98789249E-09 + 29.6000004 -2.11342166E-09 + 29.7600002 -8.34884339E-09 + 29.9200001 -4.97339325E-09 + 30.0799999 5.95291194E-09 + 30.2399998 1.39826213E-08 + 30.3999996 1.05103899E-08 + 30.5599995 -2.68938027E-09 + 30.7199993 -1.41435867E-08 + 30.8799992 -1.40001006E-08 + 31.0400009 -3.24713900E-09 + 31.2000008 7.61510588E-09 + 31.3600006 9.02678110E-09 + 31.5200005 1.32441214E-09 + 31.6800003 -6.65183908E-09 + 31.8400002 -7.19622273E-09 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X55.MXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X55.MXZ.semd new file mode 100644 index 000000000..1bb69e95a --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X55.MXZ.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 -2.90371737E-20 + -7.03999996 8.97667222E-15 + -6.88000011 6.32511282E-14 + -6.71999979 1.72854732E-13 + -6.55999994 8.56785278E-14 + -6.40000010 -8.63133078E-13 + -6.23999977 -2.96071934E-12 + -6.07999992 -4.18377225E-12 + -5.92000008 3.00283398E-13 + -5.76000023 1.30154446E-11 + -5.59999990 2.47882947E-11 + -5.44000006 1.35312855E-11 + -5.28000021 -3.52731802E-11 + -5.11999989 -9.58485583E-11 + -4.96000004 -9.75128520E-11 + -4.80000019 1.80082199E-11 + -4.63999987 2.08243492E-10 + -4.48000002 3.08283121E-10 + -4.32000017 1.46566037E-10 + -4.15999985 -2.66500988E-10 + -4.00000000 -6.59146071E-10 + -3.83999991 -6.56006416E-10 + -3.68000007 -8.83017964E-11 + -3.51999998 7.95097932E-10 + -3.35999990 1.40950163E-09 + -3.20000005 1.17986176E-09 + -3.03999996 -5.01902755E-11 + -2.88000011 -1.76426518E-09 + -2.72000003 -2.85468960E-09 + -2.55999994 -2.17094076E-09 + -2.40000010 5.62408897E-10 + -2.24000001 4.03773814E-09 + -2.07999992 5.73773029E-09 + -1.91999996 3.67601238E-09 + -1.75999999 -1.59934932E-09 + -1.60000002 -6.71924161E-09 + -1.44000006 -7.84425591E-09 + -1.27999997 -3.99997369E-09 + -1.12000000 1.80087878E-09 + -0.959999979 5.18014875E-09 + -0.800000012 4.49511006E-09 + -0.639999986 2.19061480E-09 + -0.479999989 1.72598225E-09 + -0.319999993 3.27920358E-09 + -0.159999996 3.24682414E-09 + 1.66533454E-16 -1.33427780E-09 + 0.159999996 -8.13865153E-09 + 0.319999993 -1.04549764E-08 + 0.479999989 -3.76795928E-09 + 0.639999986 8.53492121E-09 + 0.800000012 1.69698762E-08 + 0.959999979 1.45113139E-08 + 1.12000000 3.76845710E-09 + 1.27999997 -4.58225990E-09 + 1.44000006 -9.54749058E-10 + 1.60000002 1.50881831E-08 + 1.75999999 3.52978446E-08 + 1.91999996 5.05391355E-08 + 2.07999992 5.77578483E-08 + 2.24000001 5.93653482E-08 + 2.40000010 5.58691262E-08 + 2.55999994 3.81455330E-08 + 2.72000003 -1.59479345E-08 + 2.88000011 -1.42276050E-07 + 3.03999996 -3.94340191E-07 + 3.20000005 -8.54856694E-07 + 3.35999990 -1.65485221E-06 + 3.51999998 -2.99770045E-06 + 3.68000007 -5.18791603E-06 + 3.83999991 -8.66962364E-06 + 4.00000000 -1.40830043E-05 + 4.15999985 -2.23458264E-05 + 4.32000017 -3.47626446E-05 + 4.48000002 -5.31612022E-05 + 4.63999987 -8.00558992E-05 + 4.80000019 -1.18842028E-04 + 4.96000004 -1.74023837E-04 + 5.11999989 -2.51468271E-04 + 5.28000021 -3.58656776E-04 + 5.44000006 -5.04885626E-04 + 5.59999990 -7.01356737E-04 + 5.76000023 -9.61101498E-04 + 5.92000008 -1.29868777E-03 + 6.07999992 -1.72966230E-03 + 6.23999977 -2.26967526E-03 + 6.40000010 -2.93324445E-03 + 6.55999994 -3.73214320E-03 + 6.71999979 -4.67344979E-03 + 6.88000011 -5.75736025E-03 + 7.03999996 -6.97492156E-03 + 7.19999981 -8.30589235E-03 + 7.36000013 -9.71698388E-03 + 7.51999998 -1.11607565E-02 + 7.67999983 -1.25754438E-02 + 7.84000015 -1.38859684E-02 + 8.00000000 -1.50062973E-02 + 8.15999985 -1.58432499E-02 + 8.31999969 -1.63016859E-02 + 8.47999954 -1.62908491E-02 + 8.64000034 -1.57315526E-02 + 8.80000019 -1.45636220E-02 + 8.96000004 -1.27530480E-02 + 9.11999989 -1.02981161E-02 + 9.27999973 -7.23386137E-03 + 9.43999958 -3.63420811E-03 + 9.60000038 3.88644170E-04 + 9.76000023 4.68785921E-03 + 9.92000008 9.08862241E-03 + 10.0799999 1.33975158E-02 + 10.2399998 1.74140465E-02 + 10.3999996 2.09435038E-02 + 10.5600004 2.38101613E-02 + 10.7200003 2.58696862E-02 + 10.8800001 2.70197336E-02 + 11.0400000 2.72076819E-02 + 11.1999998 2.64348183E-02 + 11.3599997 2.47565415E-02 + 11.5200005 2.22785007E-02 + 11.6800003 1.91489328E-02 + 11.8400002 1.55478548E-02 + 12.0000000 1.16739608E-02 + 12.1599998 7.73044256E-03 + 12.3199997 3.91090848E-03 + 12.4799995 3.86621832E-04 + 12.6400003 -2.70388881E-03 + 12.8000002 -5.26205031E-03 + 12.9600000 -7.23280432E-03 + 13.1199999 -8.60439055E-03 + 13.2799997 -9.40459967E-03 + 13.4399996 -9.69409477E-03 + 13.6000004 -9.55761224E-03 + 13.7600002 -9.09403805E-03 + 13.9200001 -8.40638485E-03 + 14.0799999 -7.59265106E-03 + 14.2399998 -6.73836423E-03 + 14.3999996 -5.91134885E-03 + 14.5600004 -5.15897013E-03 + 14.7200003 -4.50779544E-03 + 14.8800001 -3.96535080E-03 + 15.0400000 -3.52349854E-03 + 15.1999998 -3.16277356E-03 + 15.3599997 -2.85702362E-03 + 15.5200005 -2.57773092E-03 + 15.6800003 -2.29754462E-03 + 15.8400002 -1.99275347E-03 + 16.0000000 -1.64461206E-03 + 16.1599998 -1.23960664E-03 + 16.3199997 -7.68891536E-04 + 16.4799995 -2.27242737E-04 + 16.6399994 3.88076820E-04 + 16.7999992 1.07817526E-03 + 16.9599991 1.84287166E-03 + 17.1200008 2.68041762E-03 + 17.2800007 3.58664547E-03 + 17.4400005 4.55369661E-03 + 17.6000004 5.56858396E-03 + 17.7600002 6.61190925E-03 + 17.9200001 7.65706971E-03 + 18.0799999 8.67026672E-03 + 18.2399998 9.61147901E-03 + 18.3999996 1.04364241E-02 + 18.5599995 1.10994261E-02 + 18.7199993 1.15569243E-02 + 18.8799992 1.17712850E-02 + 19.0400009 1.17145227E-02 + 19.2000008 1.13714244E-02 + 19.3600006 1.07417181E-02 + 19.5200005 9.84096620E-03 + 19.6800003 8.70006438E-03 + 19.8400002 7.36330822E-03 + 20.0000000 5.88519732E-03 + 20.1599998 4.32626298E-03 + 20.3199997 2.74836528E-03 + 20.4799995 1.20996719E-03 + 20.6399994 -2.38108230E-04 + 20.7999992 -1.55600382E-03 + 20.9599991 -2.71690404E-03 + 21.1200008 -3.70766409E-03 + 21.2800007 -4.52796556E-03 + 21.4400005 -5.18817641E-03 + 21.6000004 -5.70624741E-03 + 21.7600002 -6.10409677E-03 + 21.9200001 -6.40398078E-03 + 22.0799999 -6.62529096E-03 + 22.2399998 -6.78217970E-03 + 22.3999996 -6.88228337E-03 + 22.5599995 -6.92663435E-03 + 22.7199993 -6.91067660E-03 + 22.8799992 -6.82612369E-03 + 23.0400009 -6.66331733E-03 + 23.2000008 -6.41370518E-03 + 23.3600006 -6.07207976E-03 + 23.5200005 -5.63828228E-03 + 23.6800003 -5.11818100E-03 + 23.8400002 -4.52386821E-03 + 24.0000000 -3.87312705E-03 + 24.1599998 -3.18832463E-03 + 24.3199997 -2.49489909E-03 + 24.4799995 -1.81963271E-03 + 24.6399994 -1.18886936E-03 + 24.7999992 -6.26822119E-04 + 24.9599991 -1.54046589E-04 + 25.1200008 2.13890613E-04 + 25.2800007 4.67520993E-04 + 25.4400005 6.04306522E-04 + 25.6000004 6.29098970E-04 + 25.7600002 5.54114871E-04 + 25.9200001 3.98338278E-04 + 26.0799999 1.86300240E-04 + 26.2399998 -5.37682572E-05 + 26.3999996 -2.92347162E-04 + 26.5599995 -5.01442759E-04 + 26.7199993 -6.57539698E-04 + 26.8799992 -7.44345423E-04 + 27.0400009 -7.54967914E-04 + 27.2000008 -6.93223090E-04 + 27.3600006 -5.73854893E-04 + 27.5200005 -4.21570934E-04 + 27.6800003 -2.68926407E-04 + 27.8400002 -1.53239103E-04 + 28.0000000 -1.12845410E-04 + 28.1599998 -1.83088108E-04 + 28.3199997 -3.92437389E-04 + 28.4799995 -7.59103219E-04 + 28.6399994 -1.28842297E-03 + 28.7999992 -1.97122665E-03 + 28.9599991 -2.78329500E-03 + 29.1200008 -3.68595007E-03 + 29.2800007 -4.62774420E-03 + 29.4400005 -5.54717099E-03 + 29.6000004 -6.37627207E-03 + 29.7600002 -7.04497378E-03 + 29.9200001 -7.48595968E-03 + 30.0799999 -7.63981603E-03 + 30.2399998 -7.46012386E-03 + 30.3999996 -6.91810157E-03 + 30.5599995 -6.00638101E-03 + 30.7199993 -4.74144099E-03 + 30.8799992 -3.16432095E-03 + 31.0400009 -1.33937097E-03 + 31.2000008 6.49048539E-04 + 31.3600006 2.70176097E-03 + 31.5200005 4.71152458E-03 + 31.6800003 6.57078205E-03 + 31.8400002 8.17970745E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X60.MXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X60.MXX.semd new file mode 100644 index 000000000..43be952b5 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X60.MXX.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 4.33903538E-22 + -7.03999996 2.24268847E-17 + -6.88000011 2.16450905E-16 + -6.71999979 -1.11927452E-15 + -6.55999994 -1.31972883E-14 + -6.40000010 -4.08905596E-14 + -6.23999977 -1.56534281E-14 + -6.07999992 2.59468770E-13 + -5.92000008 8.43999458E-13 + -5.76000023 9.17009199E-13 + -5.59999990 -1.50510106E-12 + -5.44000006 -7.42628355E-12 + -5.28000021 -1.22900292E-11 + -5.11999989 -4.61402618E-12 + -4.96000004 2.38018199E-11 + -4.80000019 5.81367454E-11 + -4.63999987 5.38885776E-11 + -4.48000002 -2.94172534E-11 + -4.32000017 -1.63987351E-10 + -4.15999985 -2.27097396E-10 + -4.00000000 -8.44444722E-11 + -3.83999991 2.45643117E-10 + -3.68000007 5.11820197E-10 + -3.51999998 3.93270111E-10 + -3.35999990 -1.60070970E-10 + -3.20000005 -7.43361539E-10 + -3.03999996 -7.67361008E-10 + -2.88000011 -4.95749622E-11 + -2.72000003 8.52777571E-10 + -2.55999994 1.04330145E-09 + -2.40000010 1.79177326E-10 + -2.24000001 -1.02713216E-09 + -2.07999992 -1.34838873E-09 + -1.91999996 -2.34076647E-10 + -1.75999999 1.53014179E-09 + -1.60000002 2.45214316E-09 + -1.44000006 1.68897329E-09 + -1.27999997 -2.29703589E-10 + -1.12000000 -1.99767292E-09 + -0.959999979 -2.71809086E-09 + -0.800000012 -2.41299425E-09 + -0.639999986 -1.52833790E-09 + -0.479999989 -3.12798648E-10 + -0.319999993 1.10046583E-09 + -0.159999996 2.25153785E-09 + 1.66533454E-16 2.51515031E-09 + 0.159999996 1.91856309E-09 + 0.319999993 1.41673229E-09 + 0.479999989 1.77899606E-09 + 0.639999986 2.15489404E-09 + 0.800000012 4.32228059E-10 + 0.959999979 -4.19129709E-09 + 1.12000000 -8.94246099E-09 + 1.27999997 -8.59896865E-09 + 1.44000006 1.25983654E-10 + 1.60000002 1.49883093E-08 + 1.75999999 2.95001694E-08 + 1.91999996 3.86316081E-08 + 2.07999992 4.37313297E-08 + 2.24000001 5.16620666E-08 + 2.40000010 6.84435904E-08 + 2.55999994 9.30263866E-08 + 2.72000003 1.16992545E-07 + 2.88000011 1.30782524E-07 + 3.03999996 1.31086708E-07 + 3.20000005 1.22314574E-07 + 3.35999990 1.08778785E-07 + 3.51999998 8.05131393E-08 + 3.68000007 -1.11047040E-10 + 3.83999991 -2.04791277E-07 + 4.00000000 -6.38651557E-07 + 4.15999985 -1.43952207E-06 + 4.32000017 -2.78629864E-06 + 4.48000002 -4.92061872E-06 + 4.63999987 -8.17800355E-06 + 4.80000019 -1.30214457E-05 + 4.96000004 -2.00762042E-05 + 5.11999989 -3.01743694E-05 + 5.28000021 -4.44209181E-05 + 5.44000006 -6.42854066E-05 + 5.59999990 -9.17103753E-05 + 5.76000023 -1.29220367E-04 + 5.92000008 -1.80017261E-04 + 6.07999992 -2.48048716E-04 + 6.23999977 -3.38030426E-04 + 6.40000010 -4.55388945E-04 + 6.55999994 -6.06083893E-04 + 6.71999979 -7.96274107E-04 + 6.88000011 -1.03181030E-03 + 7.03999996 -1.31756195E-03 + 7.19999981 -1.65660563E-03 + 7.36000013 -2.04931712E-03 + 7.51999998 -2.49244133E-03 + 7.67999983 -2.97823735E-03 + 7.84000015 -3.49382334E-03 + 8.00000000 -4.02085157E-03 + 8.15999985 -4.53563267E-03 + 8.31999969 -5.00978809E-03 + 8.47999954 -5.41146519E-03 + 8.64000034 -5.70710609E-03 + 8.80000019 -5.86368563E-03 + 8.96000004 -5.85128553E-03 + 9.11999989 -5.64578502E-03 + 9.27999973 -5.23142377E-03 + 9.43999958 -4.60295752E-03 + 9.60000038 -3.76715232E-03 + 9.76000023 -2.74343183E-03 + 9.92000008 -1.56353705E-03 + 10.0799999 -2.70185032E-04 + 10.2399998 1.08522421E-03 + 10.3999996 2.44569033E-03 + 10.5600004 3.75224254E-03 + 10.7200003 4.94780671E-03 + 10.8800001 5.98096242E-03 + 11.0400000 6.80926722E-03 + 11.1999998 7.40185287E-03 + 11.3599997 7.74111273E-03 + 11.5200005 7.82335270E-03 + 11.6800003 7.65840802E-03 + 11.8400002 7.26828352E-03 + 12.0000000 6.68499339E-03 + 12.1599998 5.94785204E-03 + 12.3199997 5.10047702E-03 + 12.4799995 4.18776413E-03 + 12.6400003 3.25307529E-03 + 12.8000002 2.33583222E-03 + 12.9600000 1.46963319E-03 + 13.1199999 6.80971425E-04 + 13.2799997 -1.14472978E-05 + 13.4399996 -5.96829923E-04 + 13.6000004 -1.07193075E-03 + 13.7600002 -1.44027942E-03 + 13.9200001 -1.71109557E-03 + 14.0799999 -1.89796276E-03 + 14.2399998 -2.01732386E-03 + 14.3999996 -2.08683335E-03 + 14.5600004 -2.12359871E-03 + 14.7200003 -2.14235182E-03 + 14.8800001 -2.15363246E-03 + 15.0400000 -2.16208422E-03 + 15.1999998 -2.16502161E-03 + 15.3599997 -2.15143431E-03 + 15.5200005 -2.10162764E-03 + 15.6800003 -1.98769080E-03 + 15.8400002 -1.77494180E-03 + 16.0000000 -1.42440549E-03 + 16.1599998 -8.96272308E-04 + 16.3199997 -1.54157708E-04 + 16.4799995 8.30147357E-04 + 16.6399994 2.07186001E-03 + 16.7999992 3.56883858E-03 + 16.9599991 5.29821124E-03 + 17.1200008 7.21449777E-03 + 17.2800007 9.24959779E-03 + 17.4400005 1.13148671E-02 + 17.6000004 1.33052748E-02 + 17.7600002 1.51054626E-02 + 17.9200001 1.65972523E-02 + 18.0799999 1.76680200E-02 + 18.2399998 1.82191469E-02 + 18.3999996 1.81738306E-02 + 18.5599995 1.74835045E-02 + 18.7199993 1.61322933E-02 + 18.8799992 1.41390935E-02 + 19.0400009 1.15570743E-02 + 19.2000008 8.47072806E-03 + 19.3600006 4.99074813E-03 + 19.5200005 1.24726910E-03 + 19.6800003 -2.61793821E-03 + 19.8400002 -6.45962218E-03 + 20.0000000 -1.01369210E-02 + 20.1599998 -1.35203879E-02 + 20.3199997 -1.64977107E-02 + 20.4799995 -1.89779215E-02 + 20.6399994 -2.08939761E-02 + 20.7999992 -2.22038180E-02 + 20.9599991 -2.28900872E-02 + 21.1200008 -2.29587816E-02 + 21.2800007 -2.24371273E-02 + 21.4400005 -2.13709027E-02 + 21.6000004 -1.98215134E-02 + 21.7600002 -1.78629179E-02 + 21.9200001 -1.55785289E-02 + 22.0799999 -1.30580962E-02 + 22.2399998 -1.03945937E-02 + 22.3999996 -7.68105360E-03 + 22.5599995 -5.00738481E-03 + 22.7199993 -2.45721475E-03 + 22.8799992 -1.04857871E-04 + 23.0400009 1.98744237E-03 + 23.2000008 3.77183524E-03 + 23.3600006 5.21656778E-03 + 23.5200005 6.30690157E-03 + 23.6800003 7.04512466E-03 + 23.8400002 7.44958455E-03 + 24.0000000 7.55278626E-03 + 24.1599998 7.39866402E-03 + 24.3199997 7.03920750E-03 + 24.4799995 6.53067324E-03 + 24.6399994 5.92966424E-03 + 24.7999992 5.28937718E-03 + 24.9599991 4.65628924E-03 + 25.1200008 4.06754110E-03 + 25.2800007 3.54918907E-03 + 25.4400005 3.11542698E-03 + 25.6000004 2.76880944E-03 + 25.7600002 2.50142021E-03 + 25.9200001 2.29686568E-03 + 26.0799999 2.13290518E-03 + 26.2399998 1.98446983E-03 + 26.3999996 1.82678935E-03 + 26.5599995 1.63832738E-03 + 26.7199993 1.40325911E-03 + 26.8799992 1.11327064E-03 + 27.0400009 7.68534490E-04 + 27.2000008 3.77781340E-04 + 27.3600006 -4.25359358E-05 + 27.5200005 -4.69905470E-04 + 27.6800003 -8.78077000E-04 + 27.8400002 -1.23979140E-03 + 28.0000000 -1.52963132E-03 + 28.1599998 -1.72670628E-03 + 28.3199997 -1.81692082E-03 + 28.4799995 -1.79461064E-03 + 28.6399994 -1.66339544E-03 + 28.7999992 -1.43615424E-03 + 28.9599991 -1.13412901E-03 + 29.1200008 -7.85247423E-04 + 29.2800007 -4.21828008E-04 + 29.4400005 -7.78754911E-05 + 29.6000004 2.13812964E-04 + 29.7600002 4.24499100E-04 + 29.9200001 5.32076927E-04 + 30.0799999 5.23144321E-04 + 30.2399998 3.94388160E-04 + 30.3999996 1.53159461E-04 + 30.5599995 -1.82818272E-04 + 30.7199993 -5.86599926E-04 + 30.8799992 -1.02397345E-03 + 31.0400009 -1.45609432E-03 + 31.2000008 -1.84260670E-03 + 31.3600006 -2.14499584E-03 + 31.5200005 -2.32987874E-03 + 31.6800003 -2.37194728E-03 + 31.8400002 -2.25629658E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X60.MXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X60.MXY.semd new file mode 100644 index 000000000..0a4dfae06 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X60.MXY.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 -7.00031936E-22 + -7.03999996 1.14509405E-16 + -6.88000011 8.10384214E-16 + -6.71999979 -5.79041781E-16 + -6.55999994 -2.13497111E-14 + -6.40000010 -8.55190417E-14 + -6.23999977 -1.31353451E-13 + -6.07999992 1.17022684E-13 + -5.92000008 9.63286850E-13 + -5.76000023 1.92979183E-12 + -5.59999990 1.08408562E-12 + -5.44000006 -3.49994513E-12 + -5.28000021 -9.55868457E-12 + -5.11999989 -8.21392086E-12 + -4.96000004 9.21652771E-12 + -4.80000019 3.56897255E-11 + -4.63999987 4.14266087E-11 + -4.48000002 -3.22069671E-12 + -4.32000017 -8.22455853E-11 + -4.15999985 -1.16332215E-10 + -4.00000000 -2.34494663E-11 + -3.83999991 1.69909115E-10 + -3.68000007 2.88351704E-10 + -3.51999998 1.41039222E-10 + -3.35999990 -2.43192189E-10 + -3.20000005 -5.28733446E-10 + -3.03999996 -3.23274130E-10 + -2.88000011 3.81243259E-10 + -2.72000003 1.02391851E-09 + -2.55999994 8.67892536E-10 + -2.40000010 -2.62049854E-10 + -2.24000001 -1.59429925E-09 + -2.07999992 -1.88835858E-09 + -1.91999996 -5.04684905E-10 + -1.75999999 1.85213023E-09 + -1.60000002 3.45808937E-09 + -1.44000006 2.80829271E-09 + -1.27999997 -1.69719946E-10 + -1.12000000 -3.84787313E-09 + -0.959999979 -5.78380499E-09 + -0.800000012 -4.23142144E-09 + -0.639999986 5.68747272E-10 + -0.479999989 6.09661432E-09 + -0.319999993 8.69992789E-09 + -0.159999996 5.90203975E-09 + 1.66533454E-16 -1.43895862E-09 + 0.159999996 -8.94783181E-09 + 0.319999993 -1.13525225E-08 + 0.479999989 -6.42637810E-09 + 0.639999986 2.89362223E-09 + 0.800000012 1.03635251E-08 + 0.959999979 1.10966116E-08 + 1.12000000 5.19308818E-09 + 1.27999997 -2.74133205E-09 + 1.44000006 -7.55232765E-09 + 1.60000002 -7.26424698E-09 + 1.75999999 -3.46688056E-09 + 1.91999996 1.25828803E-09 + 2.07999992 5.79758641E-09 + 2.24000001 1.04841336E-08 + 2.40000010 1.52114357E-08 + 2.55999994 1.82193691E-08 + 2.72000003 1.71376726E-08 + 2.88000011 1.13849614E-08 + 3.03999996 3.60965235E-09 + 3.20000005 -1.39226330E-09 + 3.35999990 4.20595885E-11 + 3.51999998 6.76149803E-09 + 3.68000007 1.08380220E-08 + 3.83999991 -1.39823253E-09 + 4.00000000 -4.58238709E-08 + 4.15999985 -1.36981640E-07 + 4.32000017 -2.87823241E-07 + 4.48000002 -5.14399460E-07 + 4.63999987 -8.43966745E-07 + 4.80000019 -1.32267053E-06 + 4.96000004 -2.01967987E-06 + 5.11999989 -3.02787907E-06 + 5.28000021 -4.46425383E-06 + 5.44000006 -6.47397110E-06 + 5.59999990 -9.24063625E-06 + 5.76000023 -1.30025364E-05 + 5.92000008 -1.80712250E-05 + 6.07999992 -2.48457673E-05 + 6.23999977 -3.38149257E-05 + 6.40000010 -4.55424633E-05 + 6.55999994 -6.06367066E-05 + 6.71999979 -7.97091925E-05 + 6.88000011 -1.03326136E-04 + 7.03999996 -1.31950655E-04 + 7.19999981 -1.65870704E-04 + 7.36000013 -2.05112257E-04 + 7.51999998 -2.49344797E-04 + 7.67999983 -2.97793449E-04 + 7.84000015 -3.49172944E-04 + 8.00000000 -4.01654717E-04 + 8.15999985 -4.52878798E-04 + 8.31999969 -5.00022259E-04 + 8.47999954 -5.39926521E-04 + 8.64000034 -5.69280703E-04 + 8.80000019 -5.84846188E-04 + 8.96000004 -5.83699439E-04 + 9.11999989 -5.63477632E-04 + 9.27999973 -5.22613409E-04 + 9.43999958 -4.60542564E-04 + 9.60000038 -3.77860270E-04 + 9.76000023 -2.76400766E-04 + 9.92000008 -1.59217496E-04 + 10.0799999 -3.04578807E-05 + 10.2399998 1.04857398E-04 + 10.3999996 2.41128640E-04 + 10.5600004 3.72517883E-04 + 10.7200003 4.93310275E-04 + 10.8800001 5.98270621E-04 + 11.0400000 6.82971615E-04 + 11.1999998 7.44068297E-04 + 11.3599997 7.79498019E-04 + 11.5200005 7.88589765E-04 + 11.6800003 7.72071828E-04 + 11.8400002 7.31982524E-04 + 12.0000000 6.71497139E-04 + 12.1599998 5.94689860E-04 + 12.3199997 5.06248267E-04 + 12.4799995 4.11154178E-04 + 12.6400003 3.14344943E-04 + 12.8000002 2.20386224E-04 + 12.9600000 1.33182431E-04 + 13.1199999 5.57539242E-05 + 13.2799997 -9.90794342E-06 + 13.4399996 -6.29026908E-05 + 13.6000004 -1.03397913E-04 + 13.7600002 -1.32522808E-04 + 13.9200001 -1.52184453E-04 + 14.0799999 -1.64821016E-04 + 14.2399998 -1.73111475E-04 + 14.3999996 -1.79662136E-04 + 14.5600004 -1.86687423E-04 + 14.7200003 -1.95711866E-04 + 14.8800001 -2.07322591E-04 + 15.0400000 -2.21004637E-04 + 15.1999998 -2.35083033E-04 + 15.3599997 -2.46781710E-04 + 15.5200005 -2.52397585E-04 + 15.6800003 -2.47577118E-04 + 15.8400002 -2.27679062E-04 + 16.0000000 -1.88200778E-04 + 16.1599998 -1.25241815E-04 + 16.3199997 -3.59724254E-05 + 16.4799995 8.09358316E-05 + 16.6399994 2.24966512E-04 + 16.7999992 3.93549009E-04 + 16.9599991 5.82016422E-04 + 17.1200008 7.83741649E-04 + 17.2800007 9.90441767E-04 + 17.4400005 1.19262433E-03 + 17.6000004 1.38013985E-03 + 17.7600002 1.54279219E-03 + 17.9200001 1.67095219E-03 + 18.0799999 1.75611943E-03 + 18.2399998 1.79139001E-03 + 18.3999996 1.77181186E-03 + 18.5599995 1.69461698E-03 + 18.7199993 1.55933714E-03 + 18.8799992 1.36780995E-03 + 19.0400009 1.12409506E-03 + 19.2000008 8.34323349E-04 + 19.3600006 5.06500248E-04 + 19.5200005 1.50265842E-04 + 19.6800003 -2.23387731E-04 + 19.8400002 -6.02447020E-04 + 20.0000000 -9.74256138E-04 + 20.1599998 -1.32593990E-03 + 20.3199997 -1.64487411E-03 + 20.4799995 -1.91920355E-03 + 20.6399994 -2.13840557E-03 + 20.7999992 -2.29387963E-03 + 20.9599991 -2.37951777E-03 + 21.1200008 -2.39220588E-03 + 21.2800007 -2.33219517E-03 + 21.4400005 -2.20329314E-03 + 21.6000004 -2.01282627E-03 + 21.7600002 -1.77134143E-03 + 21.9200001 -1.49204349E-03 + 22.0799999 -1.18998962E-03 + 22.2399998 -8.81083368E-04 + 22.3999996 -5.80943190E-04 + 22.5599995 -3.03742709E-04 + 22.7199993 -6.11303549E-05 + 22.8799992 1.38653719E-04 + 23.0400009 2.91354721E-04 + 23.2000008 3.96900374E-04 + 23.3600006 4.59183619E-04 + 23.5200005 4.85445256E-04 + 23.6800003 4.85316676E-04 + 23.8400002 4.69622086E-04 + 24.0000000 4.49073705E-04 + 24.1599998 4.33007226E-04 + 24.3199997 4.28301806E-04 + 24.4799995 4.38610121E-04 + 24.6399994 4.63984994E-04 + 24.7999992 5.00943745E-04 + 24.9599991 5.42955298E-04 + 25.1200008 5.81285567E-04 + 25.2800007 6.06097223E-04 + 25.4400005 6.07683673E-04 + 25.6000004 5.77707076E-04 + 25.7600002 5.10313723E-04 + 25.9200001 4.03008627E-04 + 26.0799999 2.57198262E-04 + 26.2399998 7.83406576E-05 + 26.3999996 -1.24308644E-04 + 26.5599995 -3.38327838E-04 + 26.7199993 -5.49077347E-04 + 26.8799992 -7.40878284E-04 + 27.0400009 -8.98311962E-04 + 27.2000008 -1.00751827E-03 + 27.3600006 -1.05737464E-03 + 27.5200005 -1.04045379E-03 + 27.6800003 -9.53688170E-04 + 27.8400002 -7.98695430E-04 + 28.0000000 -5.81740693E-04 + 28.1599998 -3.13348981E-04 + 28.3199997 -7.60797002E-06 + 28.4799995 3.18764418E-04 + 28.6399994 6.47498062E-04 + 28.7999992 9.59909055E-04 + 28.9599991 1.23802770E-03 + 29.1200008 1.46565982E-03 + 29.2800007 1.62933592E-03 + 29.4400005 1.71910599E-03 + 29.6000004 1.72914902E-03 + 29.7600002 1.65816559E-03 + 29.9200001 1.50953152E-03 + 30.0799999 1.29119086E-03 + 30.2399998 1.01527199E-03 + 30.3999996 6.97416777E-04 + 30.5599995 3.55835742E-04 + 30.7199993 1.01260657E-05 + 30.8799992 -3.20079387E-04 + 31.0400009 -6.16531179E-04 + 31.2000008 -8.63727299E-04 + 31.3600006 -1.05009018E-03 + 31.5200005 -1.16883044E-03 + 31.6800003 -1.21839601E-03 + 31.8400002 -1.20244152E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X60.MXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X60.MXZ.semd new file mode 100644 index 000000000..eb933835b --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X60.MXZ.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 -3.58446884E-22 + -7.03999996 9.15438733E-17 + -6.88000011 9.06072308E-16 + -6.71999979 4.92109159E-15 + -6.55999994 1.62173995E-14 + -6.40000010 2.43647215E-14 + -6.23999977 -4.39031339E-14 + -6.07999992 -3.50524297E-13 + -5.92000008 -9.56541920E-13 + -5.76000023 -1.29584787E-12 + -5.59999990 1.63592311E-13 + -5.44000006 4.75565420E-12 + -5.28000021 1.04019623E-11 + -5.11999989 9.23510053E-12 + -4.96000004 -7.95711674E-12 + -4.80000019 -3.84512283E-11 + -4.63999987 -5.63433501E-11 + -4.48000002 -2.36338987E-11 + -4.32000017 6.97970293E-11 + -4.15999985 1.67863723E-10 + -4.00000000 1.65556499E-10 + -3.83999991 -9.77224825E-14 + -3.68000007 -2.52909055E-10 + -3.51999998 -3.89544424E-10 + -3.35999990 -2.40022752E-10 + -3.20000005 1.46259380E-10 + -3.03999996 4.90264218E-10 + -2.88000011 5.12385079E-10 + -2.72000003 2.06700684E-10 + -2.55999994 -1.31837971E-10 + -2.40000010 -1.96987593E-10 + -2.24000001 8.38937372E-13 + -2.07999992 1.28949809E-10 + -1.91999996 -1.13264571E-10 + -1.75999999 -6.41287023E-10 + -1.60000002 -1.01111119E-09 + -1.44000006 -7.96651523E-10 + -1.27999997 6.80595372E-11 + -1.12000000 1.26940802E-09 + -0.959999979 2.30715935E-09 + -0.800000012 2.63134026E-09 + -0.639999986 1.72707204E-09 + -0.479999989 -5.97834615E-10 + -0.319999993 -3.72826969E-09 + -0.159999996 -6.09718542E-09 + 1.66533454E-16 -5.92055693E-09 + 0.159999996 -2.52645838E-09 + 0.319999993 2.85174218E-09 + 0.479999989 7.70963204E-09 + 0.639999986 9.91741356E-09 + 0.800000012 8.92923779E-09 + 0.959999979 5.56133228E-09 + 1.12000000 8.60346849E-10 + 1.27999997 -4.51904603E-09 + 1.44000006 -9.74221859E-09 + 1.60000002 -1.28424515E-08 + 1.75999999 -1.07361746E-08 + 1.91999996 -5.53867507E-10 + 2.07999992 1.87003018E-08 + 2.24000001 4.53451641E-08 + 2.40000010 7.52607363E-08 + 2.55999994 1.02370841E-07 + 2.72000003 1.18537379E-07 + 2.88000011 1.12621066E-07 + 3.03999996 6.88230699E-08 + 3.20000005 -3.57441117E-08 + 3.35999990 -2.34629994E-07 + 3.51999998 -5.77468825E-07 + 3.68000007 -1.13857800E-06 + 3.83999991 -2.03099330E-06 + 4.00000000 -3.42874819E-06 + 4.15999985 -5.59988848E-06 + 4.32000017 -8.95225367E-06 + 4.48000002 -1.40945349E-05 + 4.63999987 -2.19166031E-05 + 4.80000019 -3.36940866E-05 + 4.96000004 -5.12201041E-05 + 5.11999989 -7.69631515E-05 + 5.28000021 -1.14245704E-04 + 5.44000006 -1.67434540E-04 + 5.59999990 -2.42130191E-04 + 5.76000023 -3.45335779E-04 + 5.92000008 -4.85575321E-04 + 6.07999992 -6.72922237E-04 + 6.23999977 -9.18891805E-04 + 6.40000010 -1.23614899E-03 + 6.55999994 -1.63798395E-03 + 6.71999979 -2.13751267E-03 + 6.88000011 -2.74657342E-03 + 7.03999996 -3.47431004E-03 + 7.19999981 -4.32547135E-03 + 7.36000013 -5.29849995E-03 + 7.51999998 -6.38354197E-03 + 7.67999983 -7.56055163E-03 + 7.84000015 -8.79772287E-03 + 8.00000000 -1.00505101E-02 + 8.15999985 -1.12615107E-02 + 8.31999969 -1.23614650E-02 + 8.47999954 -1.32715488E-02 + 8.64000034 -1.39070628E-02 + 8.80000019 -1.41824791E-02 + 8.96000004 -1.40175996E-02 + 9.11999989 -1.33444862E-02 + 9.27999973 -1.21145882E-02 + 9.43999958 -1.03054093E-02 + 9.60000038 -7.92601146E-03 + 9.76000023 -5.02063800E-03 + 9.92000008 -1.66985951E-03 + 10.0799999 2.01119483E-03 + 10.2399998 5.87763824E-03 + 10.3999996 9.76251718E-03 + 10.5600004 1.34869106E-02 + 10.7200003 1.68716703E-02 + 10.8800001 1.97498128E-02 + 11.0400000 2.19784733E-02 + 11.1999998 2.34492589E-02 + 11.3599997 2.40960587E-02 + 11.5200005 2.38995869E-02 + 11.6800003 2.28881724E-02 + 11.8400002 2.11348347E-02 + 12.0000000 1.87509339E-02 + 12.1599998 1.58770867E-02 + 12.3199997 1.26722790E-02 + 12.4799995 9.30220354E-03 + 12.6400003 5.92792127E-03 + 12.8000002 2.69579585E-03 + 12.9600000 -2.70476303E-04 + 13.1199999 -2.87527125E-03 + 13.2799997 -5.05367294E-03 + 13.4399996 -6.77144201E-03 + 13.6000004 -8.02268554E-03 + 13.7600002 -8.82574636E-03 + 13.9200001 -9.21797380E-03 + 14.0799999 -9.25002247E-03 + 14.2399998 -8.98030959E-03 + 14.3999996 -8.47011618E-03 + 14.5600004 -7.77968764E-03 + 14.7200003 -6.96548121E-03 + 14.8800001 -6.07855897E-03 + 15.0400000 -5.16397972E-03 + 15.1999998 -4.26092744E-03 + 15.3599997 -3.40328482E-03 + 15.5200005 -2.62031751E-03 + 15.6800003 -1.93719845E-03 + 15.8400002 -1.37516286E-03 + 16.0000000 -9.51177906E-04 + 16.1599998 -6.77130476E-04 + 16.3199997 -5.58645930E-04 + 16.4799995 -5.93740027E-04 + 16.6399994 -7.71561521E-04 + 16.7999992 -1.07149396E-03 + 16.9599991 -1.46287505E-03 + 17.1200008 -1.90553686E-03 + 17.2800007 -2.35129124E-03 + 17.4400005 -2.74636829E-03 + 17.6000004 -3.03469528E-03 + 17.7600002 -3.16178170E-03 + 17.9200001 -3.07890889E-03 + 18.0799999 -2.74726655E-03 + 18.2399998 -2.14165007E-03 + 18.3999996 -1.25337020E-03 + 18.5599995 -9.20461389E-05 + 18.7199993 1.31392688E-03 + 18.8799992 2.91831791E-03 + 19.0400009 4.65936400E-03 + 19.2000008 6.46327622E-03 + 19.3600006 8.24869983E-03 + 19.5200005 9.93178971E-03 + 19.6800003 1.14315189E-02 + 19.8400002 1.26747945E-02 + 20.0000000 1.36010032E-02 + 20.1599998 1.41656287E-02 + 20.3199997 1.43427225E-02 + 20.4799995 1.41260596E-02 + 20.6399994 1.35289440E-02 + 20.7999992 1.25827072E-02 + 20.9599991 1.13340653E-02 + 21.1200008 9.84155014E-03 + 21.2800007 8.17134697E-03 + 21.4400005 6.39285706E-03 + 21.6000004 4.57434822E-03 + 21.7600002 2.77901348E-03 + 21.9200001 1.06171612E-03 + 22.0799999 -5.33359067E-04 + 22.2399998 -1.97400479E-03 + 22.3999996 -3.24020116E-03 + 22.5599995 -4.32329858E-03 + 22.7199993 -5.22434618E-03 + 22.8799992 -5.95181109E-03 + 23.0400009 -6.51898282E-03 + 23.2000008 -6.94134785E-03 + 23.3600006 -7.23423995E-03 + 23.5200005 -7.41101429E-03 + 23.6800003 -7.48193497E-03 + 23.8400002 -7.45386910E-03 + 24.0000000 -7.33075198E-03 + 24.1599998 -7.11465813E-03 + 24.3199997 -6.80726347E-03 + 24.4799995 -6.41143369E-03 + 24.6399994 -5.93269942E-03 + 24.7999992 -5.38035715E-03 + 24.9599991 -4.76800743E-03 + 25.1200008 -4.11341013E-03 + 25.2800007 -3.43764899E-03 + 25.4400005 -2.76372558E-03 + 25.6000004 -2.11479026E-03 + 25.7600002 -1.51225179E-03 + 25.9200001 -9.74021386E-04 + 26.0799999 -5.13123872E-04 + 26.2399998 -1.36875460E-04 + 26.3999996 1.53248067E-04 + 26.5599995 3.61023791E-04 + 26.7199993 4.94255626E-04 + 26.8799992 5.63084672E-04 + 27.0400009 5.78067906E-04 + 27.2000008 5.48278971E-04 + 27.3600006 4.79686132E-04 + 27.5200005 3.74038442E-04 + 27.6800003 2.28441306E-04 + 27.8400002 3.57220633E-05 + 28.0000000 -2.14419633E-04 + 28.1599998 -5.33584389E-04 + 28.3199997 -9.32363793E-04 + 28.4799995 -1.41780300E-03 + 28.6399994 -1.99092156E-03 + 28.7999992 -2.64459476E-03 + 28.9599991 -3.36206937E-03 + 29.1200008 -4.11636010E-03 + 29.2800007 -4.87068156E-03 + 29.4400005 -5.57997590E-03 + 29.6000004 -6.19348604E-03 + 29.7600002 -6.65819878E-03 + 29.9200001 -6.92291884E-03 + 30.0799999 -6.94264192E-03 + 30.2399998 -6.68285368E-03 + 30.3999996 -6.12334348E-03 + 30.5599995 -5.26116462E-03 + 30.7199993 -4.11240757E-03 + 30.8799992 -2.71256687E-03 + 31.0400009 -1.11540500E-03 + 31.2000008 6.09674142E-04 + 31.3600006 2.38159578E-03 + 31.5200005 4.11266368E-03 + 31.6800003 5.71430847E-03 + 31.8400002 7.10309809E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X65.MXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X65.MXX.semd new file mode 100644 index 000000000..97ead8cc6 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X65.MXX.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 -3.52993135E-23 + -7.03999996 -3.55928075E-17 + -6.88000011 -1.97768400E-18 + -6.71999979 8.08672890E-16 + -6.55999994 2.32466202E-15 + -6.40000010 -9.44137016E-16 + -6.23999977 -1.69153157E-14 + -6.07999992 -2.81299794E-14 + -5.92000008 3.20522756E-14 + -5.76000023 1.97546433E-13 + -5.59999990 2.59526992E-13 + -5.44000006 -2.61684175E-13 + -5.28000021 -1.48577678E-12 + -5.11999989 -2.14255480E-12 + -4.96000004 2.16405642E-13 + -4.80000019 6.22653318E-12 + -4.63999987 1.08372417E-11 + -4.48000002 4.59979103E-12 + -4.32000017 -1.60254501E-11 + -4.15999985 -3.68120985E-11 + -4.00000000 -2.96728891E-11 + -3.83999991 1.96801863E-11 + -3.68000007 8.17073770E-11 + -3.51999998 9.12619702E-11 + -3.35999990 7.93669644E-12 + -3.20000005 -1.20656693E-10 + -3.03999996 -1.73121795E-10 + -2.88000011 -6.57413499E-11 + -2.72000003 1.34640896E-10 + -2.55999994 2.34021247E-10 + -2.40000010 9.28220695E-11 + -2.24000001 -1.96362648E-10 + -2.07999992 -3.42186807E-10 + -1.91999996 -1.18163548E-10 + -1.75999999 3.79049570E-10 + -1.60000002 7.49281692E-10 + -1.44000006 6.02833783E-10 + -1.27999997 -1.07858514E-10 + -1.12000000 -1.02662345E-09 + -0.959999979 -1.61461622E-09 + -0.800000012 -1.43219092E-09 + -0.639999986 -3.19640925E-10 + -0.479999989 1.48071833E-09 + -0.319999993 3.22084426E-09 + -0.159999996 3.76287446E-09 + 1.66533454E-16 2.17786966E-09 + 0.159999996 -1.35548650E-09 + 0.319999993 -5.13701615E-09 + 0.479999989 -6.74732448E-09 + 0.639999986 -4.79471307E-09 + 0.800000012 -2.15059262E-10 + 0.959999979 4.22579083E-09 + 1.12000000 6.08415451E-09 + 1.27999997 5.23931076E-09 + 1.44000006 3.82984444E-09 + 1.60000002 4.00823996E-09 + 1.75999999 5.51398216E-09 + 1.91999996 5.44308332E-09 + 2.07999992 7.38348660E-10 + 2.24000001 -8.52930349E-09 + 2.40000010 -1.78464692E-08 + 2.55999994 -2.01345376E-08 + 2.72000003 -9.53264934E-09 + 2.88000011 1.55228079E-08 + 3.03999996 5.16725365E-08 + 3.20000005 9.21304988E-08 + 3.35999990 1.28580055E-07 + 3.51999998 1.52145390E-07 + 3.68000007 1.53588360E-07 + 3.83999991 1.23631452E-07 + 4.00000000 5.32510782E-08 + 4.15999985 -6.81422279E-08 + 4.32000017 -2.59268205E-07 + 4.48000002 -5.58820830E-07 + 4.63999987 -1.03987895E-06 + 4.80000019 -1.82313158E-06 + 4.96000004 -3.08837002E-06 + 5.11999989 -5.08928724E-06 + 5.28000021 -8.17988166E-06 + 5.44000006 -1.28584470E-05 + 5.59999990 -1.98286652E-05 + 5.76000023 -3.00718802E-05 + 5.92000008 -4.49246763E-05 + 6.07999992 -6.61604063E-05 + 6.23999977 -9.60771577E-05 + 6.40000010 -1.37592928E-04 + 6.55999994 -1.94340362E-04 + 6.71999979 -2.70742632E-04 + 6.88000011 -3.72043432E-04 + 7.03999996 -5.04260592E-04 + 7.19999981 -6.74032082E-04 + 7.36000013 -8.88324575E-04 + 7.51999998 -1.15397933E-03 + 7.67999983 -1.47707411E-03 + 7.84000015 -1.86210009E-03 + 8.00000000 -2.31097243E-03 + 8.15999985 -2.82193301E-03 + 8.31999969 -3.38843092E-03 + 8.47999954 -3.99811612E-03 + 8.64000034 -4.63208929E-03 + 8.80000019 -5.26459003E-03 + 8.96000004 -5.86328609E-03 + 9.11999989 -6.39029406E-03 + 9.27999973 -6.80401037E-03 + 9.43999958 -7.06171896E-03 + 9.60000038 -7.12285517E-03 + 9.76000023 -6.95267506E-03 + 9.92000008 -6.52599987E-03 + 10.0799999 -5.83062693E-03 + 10.2399998 -4.86997562E-03 + 10.3999996 -3.66455549E-03 + 10.5600004 -2.25195382E-03 + 10.7200003 -6.85180072E-04 + 10.8800001 9.70576657E-04 + 11.0400000 2.64252396E-03 + 11.1999998 4.25572228E-03 + 11.3599997 5.73883997E-03 + 11.5200005 7.02955294E-03 + 11.6800003 8.07896350E-03 + 11.8400002 8.85451771E-03 + 12.0000000 9.34110954E-03 + 12.1599998 9.54030734E-03 + 12.3199997 9.46792122E-03 + 12.4799995 9.15036350E-03 + 12.6400003 8.62042885E-03 + 12.8000002 7.91317411E-03 + 12.9600000 7.06254039E-03 + 13.1199999 6.09920546E-03 + 13.2799997 5.04988478E-03 + 13.4399996 3.93805327E-03 + 13.6000004 2.78576417E-03 + 13.7600002 1.61604420E-03 + 13.9200001 4.55189176E-04 + 14.0799999 -6.65688305E-04 + 14.2399998 -1.71039859E-03 + 14.3999996 -2.63899146E-03 + 14.5600004 -3.41063901E-03 + 14.7200003 -3.98776866E-03 + 14.8800001 -4.34086006E-03 + 15.0400000 -4.45314962E-03 + 15.1999998 -4.32441244E-03 + 15.3599997 -3.97308404E-03 + 15.5200005 -3.43618146E-03 + 15.6800003 -2.76679080E-03 + 15.8400002 -2.02924688E-03 + 16.0000000 -1.29247562E-03 + 16.1599998 -6.22248335E-04 + 16.3199997 -7.32914050E-05 + 16.4799995 3.17748025E-04 + 16.6399994 5.37560496E-04 + 16.7999992 5.98942454E-04 + 16.9599991 5.40662266E-04 + 17.1200008 4.24360769E-04 + 17.2800007 3.28764698E-04 + 17.4400005 3.41800158E-04 + 17.6000004 5.51418343E-04 + 17.7600002 1.03607168E-03 + 17.9200001 1.85578596E-03 + 18.0799999 3.04468558E-03 + 18.2399998 4.60565044E-03 + 18.3999996 6.50756201E-03 + 18.5599995 8.68534297E-03 + 18.7199993 1.10427458E-02 + 18.8799992 1.34576252E-02 + 19.0400009 1.57892480E-02 + 19.2000008 1.78870857E-02 + 19.3600006 1.96004715E-02 + 19.5200005 2.07884610E-02 + 19.6800003 2.13292763E-02 + 19.8400002 2.11287234E-02 + 20.0000000 2.01270860E-02 + 20.1599998 1.83040593E-02 + 20.3199997 1.56814363E-02 + 20.4799995 1.23233274E-02 + 20.6399994 8.33387300E-03 + 20.7999992 3.85253271E-03 + 20.9599991 -9.52823146E-04 + 21.1200008 -5.89462044E-03 + 21.2800007 -1.07755680E-02 + 21.4400005 -1.53993135E-02 + 21.6000004 -1.95810832E-02 + 21.7600002 -2.31576171E-02 + 21.9200001 -2.59957481E-02 + 22.0799999 -2.79990453E-02 + 22.2399998 -2.91121509E-02 + 22.3999996 -2.93224845E-02 + 22.5599995 -2.86593493E-02 + 22.7199993 -2.71905288E-02 + 22.8799992 -2.50167400E-02 + 23.0400009 -2.22644024E-02 + 23.2000008 -1.90773178E-02 + 23.3600006 -1.56078581E-02 + 23.5200005 -1.20083140E-02 + 23.6800003 -8.42294190E-03 + 23.8400002 -4.98120766E-03 + 24.0000000 -1.79255242E-03 + 24.1599998 1.05712051E-03 + 24.3199997 3.50719178E-03 + 24.4799995 5.52237686E-03 + 24.6399994 7.09126657E-03 + 24.7999992 8.22364911E-03 + 24.9599991 8.94693751E-03 + 25.1200008 9.30206850E-03 + 25.2800007 9.33922734E-03 + 25.4400005 9.11369547E-03 + 25.6000004 8.68207589E-03 + 25.7600002 8.09909310E-03 + 25.9200001 7.41507998E-03 + 26.0799999 6.67419191E-03 + 26.2399998 5.91333117E-03 + 26.3999996 5.16170729E-03 + 26.5599995 4.44091624E-03 + 26.7199993 3.76543286E-03 + 26.8799992 3.14337364E-03 + 27.0400009 2.57744384E-03 + 27.2000008 2.06595636E-03 + 27.3600006 1.60387286E-03 + 27.5200005 1.18381926E-03 + 27.6800003 7.97064276E-04 + 27.8400002 4.34458023E-04 + 28.0000000 8.73291065E-05 + 28.1599998 -2.51671067E-04 + 28.3199997 -5.87803312E-04 + 28.4799995 -9.23594809E-04 + 28.6399994 -1.25836139E-03 + 28.7999992 -1.58795004E-03 + 28.9599991 -1.90475176E-03 + 29.1200008 -2.19802372E-03 + 29.2800007 -2.45453953E-03 + 29.4400005 -2.65954598E-03 + 29.6000004 -2.79796380E-03 + 29.7600002 -2.85573862E-03 + 29.9200001 -2.82121962E-03 + 30.0799999 -2.68644583E-03 + 30.2399998 -2.44822307E-03 + 30.3999996 -2.10887659E-03 + 30.5599995 -1.67660217E-03 + 30.7199993 -1.16536219E-03 + 30.8799992 -5.94332290E-04 + 31.0400009 1.30618910E-05 + 31.2000008 6.30444207E-04 + 31.3600006 1.23003370E-03 + 31.5200005 1.78432930E-03 + 31.6800003 2.26781913E-03 + 31.8400002 2.65858788E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X65.MXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X65.MXY.semd new file mode 100644 index 000000000..4767be751 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X65.MXY.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 -1.38680611E-23 + -7.03999996 -1.62660559E-18 + -6.88000011 1.50990075E-17 + -6.71999979 4.54504612E-17 + -6.55999994 -4.25508563E-16 + -6.40000010 -2.78862770E-15 + -6.23999977 -6.33168605E-15 + -6.07999992 -5.12014211E-16 + -5.92000008 3.47668705E-14 + -5.76000023 9.67737785E-14 + -5.59999990 1.05710606E-13 + -5.44000006 -7.89525915E-14 + -5.28000021 -4.69107392E-13 + -5.11999989 -6.93177232E-13 + -4.96000004 -8.87983602E-14 + -4.80000019 1.54404115E-12 + -4.63999987 3.03937778E-12 + -4.48000002 2.16686304E-12 + -4.32000017 -2.11989779E-12 + -4.15999985 -7.17527947E-12 + -4.00000000 -7.41174309E-12 + -3.83999991 3.63364422E-13 + -3.68000007 1.14961408E-11 + -3.51999998 1.54299039E-11 + -3.35999990 6.45858150E-12 + -3.20000005 -7.04234067E-12 + -3.03999996 -8.61413198E-12 + -2.88000011 5.93783833E-12 + -2.72000003 1.58040282E-11 + -2.55999994 -7.28137342E-12 + -2.40000010 -5.94694849E-11 + -2.24000001 -8.64954358E-11 + -2.07999992 -2.33204792E-11 + -1.91999996 1.29282821E-10 + -1.75999999 2.67383338E-10 + -1.60000002 2.45239079E-10 + -1.44000006 3.60811121E-12 + -1.27999997 -3.46610990E-10 + -1.12000000 -5.74472026E-10 + -0.959999979 -4.86342966E-10 + -0.800000012 -6.78270565E-11 + -0.639999986 4.93968699E-10 + -0.479999989 9.07582620E-10 + -0.319999993 9.18246368E-10 + -0.159999996 4.30435826E-10 + 1.66533454E-16 -4.11011225E-10 + 0.159999996 -1.21875277E-09 + 0.319999993 -1.50955326E-09 + 0.479999989 -1.00140018E-09 + 0.639999986 1.13996465E-10 + 0.800000012 1.19533217E-09 + 0.959999979 1.56655033E-09 + 1.12000000 1.04807762E-09 + 1.27999997 1.35242095E-10 + 1.44000006 -3.95366129E-10 + 1.60000002 -1.51256008E-10 + 1.75999999 5.23473431E-10 + 1.91999996 8.31927194E-10 + 2.07999992 2.02181244E-10 + 2.24000001 -1.20416743E-09 + 2.40000010 -2.51826182E-09 + 2.55999994 -2.63597677E-09 + 2.72000003 -7.86096632E-10 + 2.88000011 3.08363068E-09 + 3.03999996 8.20850588E-09 + 3.20000005 1.32346063E-08 + 3.35999990 1.67549459E-08 + 3.51999998 1.79278068E-08 + 3.68000007 1.67118746E-08 + 3.83999991 1.33392746E-08 + 4.00000000 7.15969062E-09 + 4.15999985 -4.49650583E-09 + 4.32000017 -2.68279372E-08 + 4.48000002 -6.74786946E-08 + 4.63999987 -1.36595290E-07 + 4.80000019 -2.47943944E-07 + 4.96000004 -4.21624549E-07 + 5.11999989 -6.88387445E-07 + 5.28000021 -1.09518851E-06 + 5.44000006 -1.71145723E-06 + 5.59999990 -2.63565880E-06 + 5.76000023 -4.00217414E-06 + 5.92000008 -5.98939732E-06 + 6.07999992 -8.83044413E-06 + 6.23999977 -1.28272241E-05 + 6.40000010 -1.83665743E-05 + 6.55999994 -2.59350854E-05 + 6.71999979 -3.61283710E-05 + 6.88000011 -4.96517750E-05 + 7.03999996 -6.73104369E-05 + 7.19999981 -8.99868828E-05 + 7.36000013 -1.18602860E-04 + 7.51999998 -1.54061083E-04 + 7.67999983 -1.97162823E-04 + 7.84000015 -2.48499855E-04 + 8.00000000 -3.08323128E-04 + 8.15999985 -3.76395765E-04 + 8.31999969 -4.51842556E-04 + 8.47999954 -5.33014245E-04 + 8.64000034 -6.17388810E-04 + 8.80000019 -7.01532816E-04 + 8.96000004 -7.81143841E-04 + 9.11999989 -8.51189834E-04 + 9.27999973 -9.06153931E-04 + 9.43999958 -9.40378988E-04 + 9.60000038 -9.48497327E-04 + 9.76000023 -9.25912231E-04 + 9.92000008 -8.69290554E-04 + 10.0799999 -7.77010515E-04 + 10.2399998 -6.49508904E-04 + 10.3999996 -4.89475031E-04 + 10.5600004 -3.01850843E-04 + 10.7200003 -9.36186480E-05 + 10.8800001 1.26620449E-04 + 11.0400000 3.49242822E-04 + 11.1999998 5.64316928E-04 + 11.3599997 7.62359472E-04 + 11.5200005 9.35048913E-04 + 11.6800003 1.07581378E-03 + 11.8400002 1.18022785E-03 + 12.0000000 1.24616979E-03 + 12.1599998 1.27373810E-03 + 12.3199997 1.26494619E-03 + 12.4799995 1.22325134E-03 + 12.6400003 1.15299923E-03 + 12.8000002 1.05886871E-03 + 12.9600000 9.45412554E-04 + 13.1199999 8.16752494E-04 + 13.2799997 6.76469703E-04 + 13.4399996 5.27690980E-04 + 13.6000004 3.73330404E-04 + 13.7600002 2.16420129E-04 + 13.9200001 6.04369707E-05 + 14.0799999 -9.04661283E-05 + 14.2399998 -2.31399899E-04 + 14.3999996 -3.56895471E-04 + 14.5600004 -4.61283809E-04 + 14.7200003 -5.39261964E-04 + 14.8800001 -5.86571696E-04 + 15.0400000 -6.00686064E-04 + 15.1999998 -5.81388187E-04 + 15.3599997 -5.31125697E-04 + 15.5200005 -4.55053756E-04 + 15.6800003 -3.60716309E-04 + 15.8400002 -2.57372390E-04 + 16.0000000 -1.55027097E-04 + 16.1599998 -6.32768424E-05 + 16.3199997 9.88695228E-06 + 16.4799995 5.91574972E-05 + 16.6399994 8.27247713E-05 + 16.7999992 8.27008189E-05 + 16.9599991 6.50861693E-05 + 17.1200008 3.92663933E-05 + 17.2800007 1.70860349E-05 + 17.4400005 1.16007977E-05 + 17.6000004 3.56459132E-05 + 17.7600002 1.00379846E-04 + 17.9200001 2.13963067E-04 + 18.0799999 3.80513637E-04 + 18.2399998 5.99443447E-04 + 18.3999996 8.65233305E-04 + 18.5599995 1.16765348E-03 + 18.7199993 1.49238924E-03 + 18.8799992 1.82199175E-03 + 19.0400009 2.13705073E-03 + 19.2000008 2.41747452E-03 + 19.3600006 2.64377333E-03 + 19.5200005 2.79825111E-03 + 19.6800003 2.86604115E-03 + 19.8400002 2.83594010E-03 + 20.0000000 2.70102429E-03 + 20.1599998 2.45904806E-03 + 20.3199997 2.11263797E-03 + 20.4799995 1.66929828E-03 + 20.6399994 1.14123628E-03 + 20.7999992 5.45008283E-04 + 20.9599991 -9.90135377E-05 + 21.1200008 -7.67365447E-04 + 21.2800007 -1.43440941E-03 + 21.4400005 -2.07344582E-03 + 21.6000004 -2.65800394E-03 + 21.7600002 -3.16326017E-03 + 21.9200001 -3.56751145E-03 + 22.0799999 -3.85358301E-03 + 22.2399998 -4.01006080E-03 + 22.3999996 -4.03221324E-03 + 22.5599995 -3.92249133E-03 + 22.7199993 -3.69052403E-03 + 22.8799992 -3.35254683E-03 + 23.0400009 -2.93028005E-03 + 23.2000008 -2.44932994E-03 + 23.3600006 -1.93724886E-03 + 23.5200005 -1.42143224E-03 + 23.6800003 -9.27058689E-04 + 23.8400002 -4.75275010E-04 + 24.0000000 -8.18184781E-05 + 24.1599998 2.43779708E-04 + 24.3199997 4.98330221E-04 + 24.4799995 6.84464816E-04 + 24.6399994 8.09541962E-04 + 24.7999992 8.84126988E-04 + 24.9599991 9.20241000E-04 + 25.1200008 9.29593924E-04 + 25.2800007 9.22018487E-04 + 25.4400005 9.04293905E-04 + 25.6000004 8.79495929E-04 + 25.7600002 8.46940617E-04 + 25.9200001 8.02709488E-04 + 26.0799999 7.40675139E-04 + 26.2399998 6.53885712E-04 + 26.3999996 5.36126725E-04 + 26.5599995 3.83456761E-04 + 26.7199993 1.95522065E-04 + 26.8799992 -2.35228763E-05 + 27.0400009 -2.64613627E-04 + 27.2000008 -5.13962470E-04 + 27.3600006 -7.53836241E-04 + 27.5200005 -9.63864848E-04 + 27.6800003 -1.12276478E-03 + 27.8400002 -1.21031958E-03 + 28.0000000 -1.20943168E-03 + 28.1599998 -1.10805267E-03 + 28.3199997 -9.00800107E-04 + 28.4799995 -5.90091455E-04 + 28.6399994 -1.86662088E-04 + 28.7999992 2.90616008E-04 + 28.9599991 8.15633102E-04 + 29.1200008 1.35661452E-03 + 29.2800007 1.87826506E-03 + 29.4400005 2.34433054E-03 + 29.6000004 2.72037904E-03 + 29.7600002 2.97657400E-03 + 29.9200001 3.09019722E-03 + 30.0799999 3.04768886E-03 + 30.2399998 2.84600933E-03 + 30.3999996 2.49318383E-03 + 30.5599995 2.00795662E-03 + 30.7199993 1.41855516E-03 + 30.8799992 7.60647759E-04 + 31.0400009 7.46605001E-05 + 31.2000008 -5.97319333E-04 + 31.3600006 -1.21477887E-03 + 31.5200005 -1.74186996E-03 + 31.6800003 -2.15008599E-03 + 31.8400002 -2.42029689E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X65.MXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X65.MXZ.semd new file mode 100644 index 000000000..383e33053 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X65.MXZ.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 -3.09533968E-23 + -7.03999996 9.49621955E-18 + -6.88000011 -1.24175336E-17 + -6.71999979 -3.24663176E-16 + -6.55999994 -7.18366049E-16 + -6.40000010 2.16436844E-15 + -6.23999977 1.40201808E-14 + -6.07999992 2.49264178E-14 + -5.92000008 -1.67411776E-14 + -5.76000023 -1.66198733E-13 + -5.59999990 -3.13948710E-13 + -5.44000006 -5.06757349E-14 + -5.28000021 9.90522876E-13 + -5.11999989 2.18160255E-12 + -4.96000004 1.39029109E-12 + -4.80000019 -3.27944789E-12 + -4.63999987 -9.60274742E-12 + -4.48000002 -9.53828336E-12 + -4.32000017 4.67022601E-12 + -4.15999985 2.81729171E-11 + -4.00000000 3.82208189E-11 + -3.83999991 1.01538283E-11 + -3.68000007 -5.11318349E-11 + -3.51999998 -9.65092936E-11 + -3.35999990 -6.54196558E-11 + -3.20000005 4.81396450E-11 + -3.03999996 1.61699168E-10 + -2.88000011 1.59388808E-10 + -2.72000003 8.27413658E-12 + -2.55999994 -1.77032597E-10 + -2.40000010 -2.14166421E-10 + -2.24000001 -3.23314917E-11 + -2.07999992 2.20425705E-10 + -1.91999996 2.78544604E-10 + -1.75999999 1.01777831E-11 + -1.60000002 -4.11275486E-10 + -1.44000006 -6.02766559E-10 + -1.27999997 -2.83840312E-10 + -1.12000000 4.54236593E-10 + -0.959999979 1.15781351E-09 + -0.800000012 1.30152633E-09 + -0.639999986 6.43293196E-10 + -0.479999989 -5.98323502E-10 + -0.319999993 -1.83740889E-09 + -0.159999996 -2.41107156E-09 + 1.66533454E-16 -1.91660332E-09 + 0.159999996 -4.44884851E-10 + 0.319999993 1.40974687E-09 + 0.479999989 2.81024226E-09 + 0.639999986 3.11584669E-09 + 0.800000012 2.25939911E-09 + 0.959999979 7.98975053E-10 + 1.12000000 -4.47096415E-10 + 1.27999997 -9.87430471E-10 + 1.44000006 -1.06843046E-09 + 1.60000002 -1.54926572E-09 + 1.75999999 -3.18957061E-09 + 1.91999996 -5.73651393E-09 + 2.07999992 -7.49065876E-09 + 2.24000001 -5.88615645E-09 + 2.40000010 1.02321551E-09 + 2.55999994 1.30543585E-08 + 2.72000003 2.74862888E-08 + 2.88000011 4.01981275E-08 + 3.03999996 4.75884399E-08 + 3.20000005 4.77690811E-08 + 3.35999990 3.99726368E-08 + 3.51999998 2.23882637E-08 + 3.68000007 -1.04657918E-08 + 3.83999991 -7.01184959E-08 + 4.00000000 -1.76880718E-07 + 4.15999985 -3.64505098E-07 + 4.32000017 -6.88050591E-07 + 4.48000002 -1.23522966E-06 + 4.63999987 -2.14130455E-06 + 4.80000019 -3.60903186E-06 + 4.96000004 -5.93737241E-06 + 5.11999989 -9.56388976E-06 + 5.28000021 -1.51246859E-05 + 5.44000006 -2.35332700E-05 + 5.59999990 -3.60779013E-05 + 5.76000023 -5.45372422E-05 + 5.92000008 -8.13153820E-05 + 6.07999992 -1.19596341E-04 + 6.23999977 -1.73512686E-04 + 6.40000010 -2.48311902E-04 + 6.55999994 -3.50492832E-04 + 6.71999979 -4.87874117E-04 + 6.88000011 -6.69553643E-04 + 7.03999996 -9.05715860E-04 + 7.19999981 -1.20724691E-03 + 7.36000013 -1.58512138E-03 + 7.51999998 -2.04953249E-03 + 7.67999983 -2.60875793E-03 + 7.84000015 -3.26778507E-03 + 8.00000000 -4.02675709E-03 + 8.15999985 -4.87934798E-03 + 8.31999969 -5.81121258E-03 + 8.47999954 -6.79869438E-03 + 8.64000034 -7.80797889E-03 + 8.80000019 -8.79491586E-03 + 8.96000004 -9.70567390E-03 + 9.11999989 -1.04783801E-02 + 9.27999973 -1.10458033E-02 + 9.43999958 -1.13390591E-02 + 9.60000038 -1.12921866E-02 + 9.76000023 -1.08473720E-02 + 9.92000008 -9.96042136E-03 + 10.0799999 -8.60605855E-03 + 10.2399998 -6.78255549E-03 + 10.3999996 -4.51516826E-03 + 10.5600004 -1.85791706E-03 + 10.7200003 1.10664661E-03 + 10.8800001 4.26992588E-03 + 11.0400000 7.50204735E-03 + 11.1999998 1.06587419E-02 + 11.3599997 1.35899521E-02 + 11.5200005 1.61495712E-02 + 11.6800003 1.82055701E-02 + 11.8400002 1.96496770E-02 + 12.0000000 2.04057004E-02 + 12.1599998 2.04357449E-02 + 12.3199997 1.97436530E-02 + 12.4799995 1.83752514E-02 + 12.6400003 1.64152756E-02 + 12.8000002 1.39811561E-02 + 12.9600000 1.12141669E-02 + 13.1199999 8.26868601E-03 + 13.2799997 5.30055445E-03 + 13.4399996 2.45562149E-03 + 13.6000004 -1.40469114E-04 + 13.7600002 -2.39029457E-03 + 13.9200001 -4.22976771E-03 + 14.0799999 -5.62995579E-03 + 14.2399998 -6.59557013E-03 + 14.3999996 -7.16044102E-03 + 14.5600004 -7.38062803E-03 + 14.7200003 -7.32604461E-03 + 14.8800001 -7.07160728E-03 + 15.0400000 -6.68893568E-03 + 15.1999998 -6.23950502E-03 + 15.3599997 -5.76992473E-03 + 15.5200005 -5.30971261E-03 + 15.6800003 -4.87161940E-03 + 15.8400002 -4.45420854E-03 + 16.0000000 -4.04617004E-03 + 16.1599998 -3.63162975E-03 + 16.3199997 -3.19566275E-03 + 16.4799995 -2.72923126E-03 + 16.6399994 -2.23289127E-03 + 16.7999992 -1.71881658E-03 + 16.9599991 -1.21093390E-03 + 17.1200008 -7.43200828E-04 + 17.2800007 -3.56301520E-04 + 17.4400005 -9.31964605E-05 + 17.6000004 5.91908702E-06 + 17.7600002 -9.13352269E-05 + 17.9200001 -4.05019062E-04 + 18.0799999 -9.39371472E-04 + 18.2399998 -1.68064900E-03 + 18.3999996 -2.59648613E-03 + 18.5599995 -3.63681139E-03 + 18.7199993 -4.73622186E-03 + 18.8799992 -5.81761589E-03 + 19.0400009 -6.79679448E-03 + 19.2000008 -7.58770760E-03 + 19.3600006 -8.10799003E-03 + 19.5200005 -8.28443840E-03 + 19.6800003 -8.05810280E-03 + 19.8400002 -7.38870259E-03 + 20.0000000 -6.25809608E-03 + 20.1599998 -4.67260880E-03 + 20.3199997 -2.66402634E-03 + 20.4799995 -2.89146003E-04 + 20.6399994 2.37215590E-03 + 20.7999992 5.22029772E-03 + 20.9599991 8.14068690E-03 + 21.1200008 1.10095330E-02 + 21.2800007 1.37004824E-02 + 21.4400005 1.60916932E-02 + 21.6000004 1.80728808E-02 + 21.7600002 1.95518918E-02 + 21.9200001 2.04602946E-02 + 22.0799999 2.07575820E-02 + 22.2399998 2.04336122E-02 + 22.3999996 1.95090901E-02 + 22.5599995 1.80339832E-02 + 22.7199993 1.60840154E-02 + 22.8799992 1.37554798E-02 + 23.0400009 1.11587616E-02 + 23.2000008 8.41112062E-03 + 23.3600006 5.62929781E-03 + 23.5200005 2.92253261E-03 + 23.6800003 3.86542408E-04 + 23.8400002 -1.90111948E-03 + 24.0000000 -3.88403516E-03 + 24.1599998 -5.52809751E-03 + 24.3199997 -6.82094041E-03 + 24.4799995 -7.76981656E-03 + 24.6399994 -8.39824323E-03 + 24.7999992 -8.74182954E-03 + 24.9599991 -8.84373114E-03 + 25.1200008 -8.75016768E-03 + 25.2800007 -8.50638654E-03 + 25.4400005 -8.15338269E-03 + 25.6000004 -7.72556476E-03 + 25.7600002 -7.24947033E-03 + 25.9200001 -6.74349861E-03 + 26.0799999 -6.21857261E-03 + 26.2399998 -5.67953056E-03 + 26.3999996 -5.12704253E-03 + 26.5599995 -4.55980469E-03 + 26.7199993 -3.97675391E-03 + 26.8799992 -3.37908440E-03 + 27.0400009 -2.77186185E-03 + 27.2000008 -2.16508238E-03 + 27.3600006 -1.57408172E-03 + 27.5200005 -1.01924140E-03 + 27.6800003 -5.25003939E-04 + 27.8400002 -1.18259064E-04 + 28.0000000 1.73777575E-04 + 28.1599998 3.26026493E-04 + 28.3199997 3.18141101E-04 + 28.4799995 1.37009833E-04 + 28.6399994 -2.21075403E-04 + 28.7999992 -7.48813967E-04 + 28.9599991 -1.42704742E-03 + 29.1200008 -2.22480693E-03 + 29.2800007 -3.10032489E-03 + 29.4400005 -4.00299532E-03 + 29.6000004 -4.87619312E-03 + 29.7600002 -5.66076813E-03 + 29.9200001 -6.29896251E-03 + 30.0799999 -6.73844991E-03 + 30.2399998 -6.93615712E-03 + 30.3999996 -6.86156843E-03 + 30.5599995 -6.49922993E-03 + 30.7199993 -5.85025782E-03 + 30.8799992 -4.93269833E-03 + 31.0400009 -3.78071098E-03 + 31.2000008 -2.44262163E-03 + 31.3600006 -9.77998716E-04 + 31.5200005 5.46020339E-04 + 31.6800003 2.05887901E-03 + 31.8400002 3.49093159E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X70.MXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X70.MXX.semd new file mode 100644 index 000000000..a5cd3ec63 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X70.MXX.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 -3.43671251E-40 + -7.03999996 -8.42628469E-19 + -6.88000011 1.00676333E-19 + -6.71999979 1.02264000E-17 + -6.55999994 -8.63519732E-18 + -6.40000010 -1.69049936E-16 + -6.23999977 -3.42474479E-16 + -6.07999992 2.86867110E-16 + -5.92000008 2.07557610E-15 + -5.76000023 1.52962472E-15 + -5.59999990 -8.08669131E-15 + -5.44000006 -2.27795772E-14 + -5.28000021 -1.11990919E-14 + -5.11999989 6.11139286E-14 + -4.96000004 1.44969133E-13 + -4.80000019 5.71776852E-14 + -4.63999987 -3.45092471E-13 + -4.48000002 -7.78228773E-13 + -4.32000017 -4.24629082E-13 + -4.15999985 1.27523144E-12 + -4.00000000 3.23188481E-12 + -3.83999991 2.49112037E-12 + -3.68000007 -3.08023442E-12 + -3.51999998 -1.05346990E-11 + -3.35999990 -1.11629846E-11 + -3.20000005 2.33808741E-12 + -3.03999996 2.46720717E-11 + -2.88000011 3.52138596E-11 + -2.72000003 1.33105714E-11 + -2.55999994 -3.67334878E-11 + -2.40000010 -7.67013328E-11 + -2.24000001 -6.07088893E-11 + -2.07999992 1.80723578E-11 + -1.91999996 1.05701767E-10 + -1.75999999 1.24412869E-10 + -1.60000002 4.58183838E-11 + -1.44000006 -7.01623204E-11 + -1.27999997 -1.21998606E-10 + -1.12000000 -6.69390932E-11 + -0.959999979 2.46179795E-11 + -0.800000012 3.14212961E-11 + -0.639999986 -8.38569630E-11 + -0.479999989 -2.01895792E-10 + -0.319999993 -1.32421893E-10 + -0.159999996 1.93925362E-10 + 1.66533454E-16 6.00853589E-10 + 0.159999996 7.48613116E-10 + 0.319999993 3.89886984E-10 + 0.479999989 -3.95773719E-10 + 0.639999986 -1.18837629E-09 + 0.800000012 -1.47264656E-09 + 0.959999979 -9.83705450E-10 + 1.12000000 8.52290877E-11 + 1.27999997 1.16520982E-09 + 1.44000006 1.65056957E-09 + 1.60000002 1.29459221E-09 + 1.75999999 4.07420514E-10 + 1.91999996 -3.06310671E-10 + 2.07999992 -2.24810393E-10 + 2.24000001 6.71410760E-10 + 2.40000010 1.61510272E-09 + 2.55999994 1.44250811E-09 + 2.72000003 -5.67431047E-10 + 2.88000011 -3.91918142E-09 + 3.03999996 -6.80942547E-09 + 3.20000005 -6.96958047E-09 + 3.35999990 -3.01611847E-09 + 3.51999998 4.61674743E-09 + 3.68000007 1.39272318E-08 + 3.83999991 2.26988153E-08 + 4.00000000 2.99342418E-08 + 4.15999985 3.61199959E-08 + 4.32000017 4.18671533E-08 + 4.48000002 4.57138150E-08 + 4.63999987 4.24747419E-08 + 4.80000019 2.28485160E-08 + 4.96000004 -2.65040594E-08 + 5.11999989 -1.24298140E-07 + 5.28000021 -2.99070422E-07 + 5.44000006 -5.97181611E-07 + 5.59999990 -1.09372502E-06 + 5.76000023 -1.90578760E-06 + 5.92000008 -3.20883851E-06 + 6.07999992 -5.25863607E-06 + 6.23999977 -8.42188001E-06 + 6.40000010 -1.32185742E-05 + 6.55999994 -2.03781146E-05 + 6.71999979 -3.09100142E-05 + 6.88000011 -4.61891723E-05 + 7.03999996 -6.80540688E-05 + 7.19999981 -9.89137407E-05 + 7.36000013 -1.41855198E-04 + 7.51999998 -2.00737530E-04 + 7.67999983 -2.80252920E-04 + 7.84000015 -3.85929219E-04 + 8.00000000 -5.24044968E-04 + 8.15999985 -7.01426703E-04 + 8.31999969 -9.25100350E-04 + 8.47999954 -1.20177714E-03 + 8.64000034 -1.53716654E-03 + 8.80000019 -1.93512777E-03 + 8.96000004 -2.39669601E-03 + 9.11999989 -2.91904877E-03 + 9.27999973 -3.49450251E-03 + 9.43999958 -4.10966063E-03 + 9.60000038 -4.74484498E-03 + 9.76000023 -5.37395431E-03 + 9.92000008 -5.96486777E-03 + 10.0799999 -6.48048893E-03 + 10.2399998 -6.88045891E-03 + 10.3999996 -7.12351361E-03 + 10.5600004 -7.17038335E-03 + 10.7200003 -6.98704040E-03 + 10.8800001 -6.54805126E-03 + 11.0400000 -5.83970407E-03 + 11.1999998 -4.86258557E-03 + 11.3599997 -3.63326515E-03 + 11.5200005 -2.18482246E-03 + 11.6800003 -5.66032249E-04 + 11.8400002 1.16084144E-03 + 12.0000000 2.92355916E-03 + 12.1599998 4.64448566E-03 + 12.3199997 6.24586642E-03 + 12.4799995 7.65533186E-03 + 12.6400003 8.81108921E-03 + 12.8000002 9.66629200E-03 + 12.9600000 1.01921288E-02 + 13.1199999 1.03793144E-02 + 13.2799997 1.02378493E-02 + 13.4399996 9.79507342E-03 + 13.6000004 9.09229089E-03 + 13.7600002 8.18034634E-03 + 13.9200001 7.11471168E-03 + 14.0799999 5.95064368E-03 + 14.2399998 4.73897811E-03 + 14.3999996 3.52301588E-03 + 14.5600004 2.33680010E-03 + 14.7200003 1.20488589E-03 + 14.8800001 1.43482699E-04 + 15.0400000 -8.37339438E-04 + 15.1999998 -1.73084124E-03 + 15.3599997 -2.53074197E-03 + 15.5200005 -3.22882156E-03 + 15.6800003 -3.81344627E-03 + 15.8400002 -4.26932191E-03 + 16.0000000 -4.57857223E-03 + 16.1599998 -4.72302968E-03 + 16.3199997 -4.68741683E-03 + 16.4799995 -4.46294574E-03 + 16.6399994 -4.05075261E-03 + 16.7999992 -3.46457982E-03 + 16.9599991 -2.73219449E-03 + 17.1200008 -1.89516123E-03 + 17.2800007 -1.00680871E-03 + 17.4400005 -1.28449101E-04 + 17.6000004 6.75858289E-04 + 17.7600002 1.34550757E-03 + 17.9200001 1.82987365E-03 + 18.0799999 2.09445483E-03 + 18.2399998 2.12592748E-03 + 18.3999996 1.93549215E-03 + 18.5599995 1.56004145E-03 + 18.7199993 1.06088689E-03 + 18.8799992 5.20009780E-04 + 19.0400009 3.40380357E-05 + 19.2000008 -2.93621997E-04 + 19.3600006 -3.61887272E-04 + 19.5200005 -8.15833482E-05 + 19.6800003 6.15305267E-04 + 19.8400002 1.76754268E-03 + 20.0000000 3.37846112E-03 + 20.1599998 5.41231548E-03 + 20.3199997 7.79361697E-03 + 20.4799995 1.04096420E-02 + 20.6399994 1.31160840E-02 + 20.7999992 1.57455448E-02 + 20.9599991 1.81182884E-02 + 21.1200008 2.00545434E-02 + 21.2800007 2.13873908E-02 + 21.4400005 2.19752677E-02 + 21.6000004 2.17130892E-02 + 21.7600002 2.05410551E-02 + 21.9200001 1.84504073E-02 + 22.0799999 1.54856462E-02 + 22.2399998 1.17429430E-02 + 22.3999996 7.36488029E-03 + 22.5599995 2.53189751E-03 + 22.7199993 -2.54889135E-03 + 22.8799992 -7.65661895E-03 + 23.0400009 -1.25703178E-02 + 23.2000008 -1.70822404E-02 + 23.3600006 -2.10098606E-02 + 23.5200005 -2.42056996E-02 + 23.6800003 -2.65643280E-02 + 23.8400002 -2.80261803E-02 + 24.0000000 -2.85781138E-02 + 24.1599998 -2.82508656E-02 + 24.3199997 -2.71138977E-02 + 24.4799995 -2.52681896E-02 + 24.6399994 -2.28377767E-02 + 24.7999992 -1.99607443E-02 + 24.9599991 -1.67804565E-02 + 25.1200008 -1.34375989E-02 + 25.2800007 -1.00635234E-02 + 25.4400005 -6.77516218E-03 + 25.6000004 -3.67164728E-03 + 25.7600002 -8.32527177E-04 + 25.9200001 1.68258953E-03 + 26.0799999 3.83326225E-03 + 26.2399998 5.59664937E-03 + 26.3999996 6.96546212E-03 + 26.5599995 7.94572383E-03 + 26.7199993 8.55455175E-03 + 26.8799992 8.81810393E-03 + 27.0400009 8.76974966E-03 + 27.2000008 8.44847690E-03 + 27.3600006 7.89747853E-03 + 27.5200005 7.16285082E-03 + 27.6800003 6.29234128E-03 + 27.8400002 5.33406390E-03 + 28.0000000 4.33517434E-03 + 28.1599998 3.34048178E-03 + 28.3199997 2.39104126E-03 + 28.4799995 1.52277609E-03 + 28.6399994 7.65208912E-04 + 28.7999992 1.40387783E-04 + 28.9599991 -3.37898411E-04 + 29.1200008 -6.64527062E-04 + 29.2800007 -8.43000656E-04 + 29.4400005 -8.84912850E-04 + 29.6000004 -8.08909361E-04 + 29.7600002 -6.39176695E-04 + 29.9200001 -4.03536571E-04 + 30.0799999 -1.31271881E-04 + 30.2399998 1.49148342E-04 + 30.3999996 4.12249647E-04 + 30.5599995 6.37436169E-04 + 30.7199993 8.10391677E-04 + 30.8799992 9.23851447E-04 + 31.0400009 9.77660529E-04 + 31.2000008 9.78109078E-04 + 31.3600006 9.36619937E-04 + 31.5200005 8.67941359E-04 + 31.6800003 7.88056292E-04 + 31.8400002 7.12058216E-04 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X70.MXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X70.MXY.semd new file mode 100644 index 000000000..8994e67c5 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X70.MXY.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 -1.59425726E-41 + -7.03999996 -2.78431476E-19 + -6.88000011 -2.76429699E-19 + -6.71999979 -1.66227621E-18 + -6.55999994 -1.74424069E-17 + -6.40000010 -1.99532689E-17 + -6.23999977 1.86449197E-16 + -6.07999992 7.27590184E-16 + -5.92000008 6.24128657E-16 + -5.76000023 -2.35853974E-15 + -5.59999990 -7.34856054E-15 + -5.44000006 -3.75516006E-15 + -5.28000021 2.23272396E-14 + -5.11999989 5.73087855E-14 + -4.96000004 3.61705837E-14 + -4.80000019 -1.03572004E-13 + -4.63999987 -2.82143368E-13 + -4.48000002 -2.17917752E-13 + -4.32000017 3.22963959E-13 + -4.15999985 1.04849235E-12 + -4.00000000 1.02485273E-12 + -3.83999991 -5.00824317E-13 + -3.68000007 -2.77628528E-12 + -3.51999998 -3.34234853E-12 + -3.35999990 -1.50203485E-13 + -3.20000005 5.38273809E-12 + -3.03999996 8.04234977E-12 + -2.88000011 3.29256717E-12 + -2.72000003 -6.79579526E-12 + -2.55999994 -1.31870730E-11 + -2.40000010 -8.04227171E-12 + -2.24000001 5.52330707E-12 + -2.07999992 1.38836598E-11 + -1.91999996 6.67138653E-12 + -1.75999999 -9.02751485E-12 + -1.60000002 -1.21253545E-11 + -1.44000006 9.44862417E-12 + -1.27999997 3.83063650E-11 + -1.12000000 3.62958240E-11 + -0.959999979 -1.75855424E-11 + -0.800000012 -9.42461664E-11 + -0.639999986 -1.24999289E-10 + -0.479999989 -5.69646448E-11 + -0.319999993 9.10514997E-11 + -0.159999996 2.25138144E-10 + 1.66533454E-16 2.37268344E-10 + 0.159999996 8.79111922E-11 + 0.319999993 -1.52822477E-10 + 0.479999989 -3.39428652E-10 + 0.639999986 -3.42195050E-10 + 0.800000012 -1.38580092E-10 + 0.959999979 1.56408275E-10 + 1.12000000 3.51819684E-10 + 1.27999997 3.09563375E-10 + 1.44000006 5.84576970E-11 + 1.60000002 -2.02396946E-10 + 1.75999999 -2.41816900E-10 + 1.91999996 1.05964786E-11 + 2.07999992 3.76786574E-10 + 2.24000001 5.46260093E-10 + 2.40000010 3.23660682E-10 + 2.55999994 -1.96514277E-10 + 2.72000003 -6.88174406E-10 + 2.88000011 -8.45335579E-10 + 3.03999996 -6.12264128E-10 + 3.20000005 -1.92326058E-10 + 3.35999990 1.72359529E-10 + 3.51999998 4.67388295E-10 + 3.68000007 1.00505648E-09 + 3.83999991 2.27034525E-09 + 4.00000000 4.58953231E-09 + 4.15999985 7.78756615E-09 + 4.32000017 1.10072165E-08 + 4.48000002 1.28028690E-08 + 4.63999987 1.14793046E-08 + 4.80000019 5.42911183E-09 + 4.96000004 -6.94648605E-09 + 5.11999989 -2.80851715E-08 + 5.28000021 -6.28939176E-08 + 5.44000006 -1.20799328E-07 + 5.59999990 -2.17789307E-07 + 5.76000023 -3.78410988E-07 + 5.92000008 -6.38297706E-07 + 6.07999992 -1.04819651E-06 + 6.23999977 -1.68039890E-06 + 6.40000010 -2.63802190E-06 + 6.55999994 -4.06708295E-06 + 6.71999979 -6.17098885E-06 + 6.88000011 -9.22707750E-06 + 7.03999996 -1.36050103E-05 + 7.19999981 -1.97868703E-05 + 7.36000013 -2.83882364E-05 + 7.51999998 -4.01779434E-05 + 7.67999983 -5.60921435E-05 + 7.84000015 -7.72362400E-05 + 8.00000000 -1.04867548E-04 + 8.15999985 -1.40352626E-04 + 8.31999969 -1.85095050E-04 + 8.47999954 -2.40431662E-04 + 8.64000034 -3.07496754E-04 + 8.80000019 -3.87055421E-04 + 8.96000004 -4.79311595E-04 + 9.11999989 -5.83701825E-04 + 9.27999973 -6.98693213E-04 + 9.43999958 -8.21610971E-04 + 9.60000038 -9.48523288E-04 + 9.76000023 -1.07421377E-03 + 9.92000008 -1.19226321E-03 + 10.0799999 -1.29526097E-03 + 10.2399998 -1.37514935E-03 + 10.3999996 -1.42369641E-03 + 10.5600004 -1.43307587E-03 + 10.7200003 -1.39651506E-03 + 10.8800001 -1.30896084E-03 + 11.0400000 -1.16770144E-03 + 11.1999998 -9.72872134E-04 + 11.3599997 -7.27783423E-04 + 11.5200005 -4.39015450E-04 + 11.6800003 -1.16248302E-04 + 11.8400002 2.28181132E-04 + 12.0000000 5.79976186E-04 + 12.1599998 9.23783460E-04 + 12.3199997 1.24422635E-03 + 12.4799995 1.52697600E-03 + 12.6400003 1.75975263E-03 + 12.8000002 1.93316140E-03 + 12.9600000 2.04127911E-03 + 13.1199999 2.08194158E-03 + 13.2799997 2.05670740E-03 + 13.4399996 1.97051791E-03 + 13.6000004 1.83109415E-03 + 13.7600002 1.64814945E-03 + 13.9200001 1.43250520E-03 + 14.0799999 1.19520887E-03 + 14.2399998 9.46748827E-04 + 14.3999996 6.96442090E-04 + 14.5600004 4.52046079E-04 + 14.7200003 2.19610665E-04 + 14.8800001 3.55257225E-06 + 15.0400000 -1.93095329E-04 + 15.1999998 -3.68323992E-04 + 15.3599997 -5.20749367E-04 + 15.5200005 -6.49243710E-04 + 15.6800003 -7.52657943E-04 + 15.8400002 -8.29679600E-04 + 16.0000000 -8.78848077E-04 + 16.1599998 -8.98724480E-04 + 16.3199997 -8.88187147E-04 + 16.4799995 -8.46806681E-04 + 16.6399994 -7.75239023E-04 + 16.7999992 -6.75572664E-04 + 16.9599991 -5.51568985E-04 + 17.1200008 -4.08746389E-04 + 17.2800007 -2.54273444E-04 + 17.4400005 -9.66576335E-05 + 17.6000004 5.47643576E-05 + 17.7600002 1.90510516E-04 + 17.9200001 3.01765598E-04 + 18.0799999 3.81259917E-04 + 18.2399998 4.24136029E-04 + 18.3999996 4.28717467E-04 + 18.5599995 3.97093332E-04 + 18.7199993 3.35439283E-04 + 18.8799992 2.54010345E-04 + 19.0400009 1.66759521E-04 + 19.2000008 9.05631241E-05 + 19.3600006 4.40670701E-05 + 19.5200005 4.62046701E-05 + 19.6800003 1.14476279E-04 + 19.8400002 2.63115508E-04 + 20.0000000 5.01297123E-04 + 20.1599998 8.31557263E-04 + 20.3199997 1.24860136E-03 + 20.4799995 1.73865724E-03 + 20.6399994 2.27949861E-03 + 20.7999992 2.84121255E-03 + 20.9599991 3.38771893E-03 + 21.1200008 3.87898344E-03 + 21.2800007 4.27378528E-03 + 21.4400005 4.53283638E-03 + 21.6000004 4.62200213E-03 + 21.7600002 4.51534055E-03 + 21.9200001 4.19768039E-03 + 22.0799999 3.66648193E-03 + 22.2399998 2.93278112E-03 + 22.3999996 2.02109152E-03 + 22.5599995 9.68241307E-04 + 22.7199993 -1.78791437E-04 + 22.8799992 -1.36587641E-03 + 23.0400009 -2.53532594E-03 + 23.2000008 -3.62978387E-03 + 23.3600006 -4.59609088E-03 + 23.5200005 -5.38880611E-03 + 23.6800003 -5.97310439E-03 + 23.8400002 -6.32683979E-03 + 24.0000000 -6.44162716E-03 + 24.1599998 -6.32290915E-03 + 24.3199997 -5.98904304E-03 + 24.4799995 -5.46952849E-03 + 24.6399994 -4.80257440E-03 + 24.7999992 -4.03221929E-03 + 24.9599991 -3.20525095E-03 + 25.1200008 -2.36816448E-03 + 25.2800007 -1.56436372E-03 + 25.4400005 -8.31768091E-04 + 25.6000004 -2.00947863E-04 + 25.7600002 3.06151691E-04 + 25.9200001 6.76877564E-04 + 26.0799999 9.07946320E-04 + 26.2399998 1.00498192E-03 + 26.3999996 9.81586985E-04 + 26.5599995 8.58031621E-04 + 26.7199993 6.59656012E-04 + 26.8799992 4.15075978E-04 + 27.0400009 1.54287409E-04 + 27.2000008 -9.32375478E-05 + 27.3600006 -3.00368847E-04 + 27.5200005 -4.43958241E-04 + 27.6800003 -5.06213633E-04 + 27.8400002 -4.75731184E-04 + 28.0000000 -3.48125439E-04 + 28.1599998 -1.26219384E-04 + 28.3199997 1.80220755E-04 + 28.4799995 5.55193168E-04 + 28.6399994 9.77567397E-04 + 28.7999992 1.42252026E-03 + 28.9599991 1.86320662E-03 + 29.1200008 2.27255444E-03 + 29.2800007 2.62506446E-03 + 29.4400005 2.89849355E-03 + 29.6000004 3.07530840E-03 + 29.7600002 3.14380927E-03 + 29.9200001 3.09884851E-03 + 30.0799999 2.94209481E-03 + 30.2399998 2.68182857E-03 + 30.3999996 2.33228365E-03 + 30.5599995 1.91258301E-03 + 30.7199993 1.44534430E-03 + 30.8799992 9.55056574E-04 + 31.0400009 4.66345664E-04 + 31.2000008 2.25698432E-06 + 31.3600006 -4.17312258E-04 + 31.5200005 -7.76913192E-04 + 31.6800003 -1.06647389E-03 + 31.8400002 -1.28178112E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X70.MXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X70.MXZ.semd new file mode 100644 index 000000000..f3c633e47 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X70.MXZ.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 -7.82333032E-25 + -7.03999996 2.20630860E-19 + -6.88000011 -3.47237724E-18 + -6.71999979 -1.60294235E-17 + -6.55999994 3.02572639E-18 + -6.40000010 1.16304096E-16 + -6.23999977 7.31599562E-17 + -6.07999992 -8.37773395E-16 + -5.92000008 -2.18675658E-15 + -5.76000023 1.36386731E-16 + -5.59999990 1.02588624E-14 + -5.44000006 1.76098777E-14 + -5.28000021 -9.73302859E-15 + -5.11999989 -8.45921911E-14 + -4.96000004 -1.22549838E-13 + -4.80000019 4.88338245E-14 + -4.63999987 4.55908748E-13 + -4.48000002 6.64987596E-13 + -4.32000017 -7.44776081E-14 + -4.15999985 -1.85554501E-12 + -4.00000000 -3.03492344E-12 + -3.83999991 -8.53238107E-13 + -3.68000007 5.35150960E-12 + -3.51999998 1.08121064E-11 + -3.35999990 6.96375509E-12 + -3.20000005 -9.86319360E-12 + -3.03999996 -2.92200500E-11 + -2.88000011 -2.91424350E-11 + -2.72000003 4.40568328E-12 + -2.55999994 5.52495619E-11 + -2.40000010 7.80408793E-11 + -2.24000001 3.41908481E-11 + -2.07999992 -6.23131685E-11 + -1.91999996 -1.37574493E-10 + -1.75999999 -1.12948727E-10 + -1.60000002 1.54524570E-11 + -1.44000006 1.51729226E-10 + -1.27999997 1.72996437E-10 + -1.12000000 4.84721499E-11 + -0.959999979 -1.11012456E-10 + -0.800000012 -1.42615406E-10 + -0.639999986 3.68070288E-12 + -0.479999989 1.84118068E-10 + -0.319999993 1.69549583E-10 + -0.159999996 -1.27028540E-10 + 1.66533454E-16 -5.11219289E-10 + 0.159999996 -6.15683393E-10 + 0.319999993 -2.02516198E-10 + 0.479999989 5.86020121E-10 + 0.639999986 1.25915955E-09 + 0.800000012 1.29786981E-09 + 0.959999979 5.27884292E-10 + 1.12000000 -7.35888295E-10 + 1.27999997 -1.86800531E-09 + 1.44000006 -2.28189734E-09 + 1.60000002 -1.70630943E-09 + 1.75999999 -2.62096816E-10 + 1.91999996 1.60960301E-09 + 2.07999992 3.26262506E-09 + 2.24000001 3.98972499E-09 + 2.40000010 3.25614158E-09 + 2.55999994 1.00023911E-09 + 2.72000003 -2.19376028E-09 + 2.88000011 -5.26725641E-09 + 3.03999996 -7.16286452E-09 + 3.20000005 -7.23504057E-09 + 3.35999990 -5.21389598E-09 + 3.51999998 -7.80584097E-10 + 3.68000007 6.66916966E-09 + 3.83999991 1.74952088E-08 + 4.00000000 3.06215888E-08 + 4.15999985 4.25740687E-08 + 4.32000017 4.76570072E-08 + 4.48000002 3.91811454E-08 + 4.63999987 1.04027800E-08 + 4.80000019 -4.65091610E-08 + 4.96000004 -1.44196378E-07 + 5.11999989 -3.05845418E-07 + 5.28000021 -5.71833027E-07 + 5.44000006 -1.00735838E-06 + 5.59999990 -1.71306590E-06 + 5.76000023 -2.84187126E-06 + 5.92000008 -4.62485286E-06 + 6.07999992 -7.40781206E-06 + 6.23999977 -1.16993278E-05 + 6.40000010 -1.82314689E-05 + 6.55999994 -2.80351960E-05 + 6.71999979 -4.25323669E-05 + 6.88000011 -6.36441109E-05 + 7.03999996 -9.39112942E-05 + 7.19999981 -1.36618342E-04 + 7.36000013 -1.95906992E-04 + 7.51999998 -2.76862935E-04 + 7.67999983 -3.85552557E-04 + 7.84000015 -5.28982375E-04 + 8.00000000 -7.14948110E-04 + 8.15999985 -9.51738737E-04 + 8.31999969 -1.24766282E-03 + 8.47999954 -1.61037757E-03 + 8.64000034 -2.04601209E-03 + 8.80000019 -2.55810586E-03 + 8.96000004 -3.14640184E-03 + 9.11999989 -3.80557240E-03 + 9.27999973 -4.52399300E-03 + 9.43999958 -5.28269634E-03 + 9.60000038 -6.05468592E-03 + 9.76000023 -6.80476939E-03 + 9.92000008 -7.49007938E-03 + 10.0799999 -8.06139316E-03 + 10.2399998 -8.46532173E-03 + 10.3999996 -8.64735153E-03 + 10.5600004 -8.55561439E-03 + 10.7200003 -8.14518705E-03 + 10.8800001 -7.38257682E-03 + 11.0400000 -6.25002291E-03 + 11.1999998 -4.74915886E-03 + 11.3599997 -2.90360535E-03 + 11.5200005 -7.60106952E-04 + 11.6800003 1.61206152E-03 + 11.8400002 4.12356015E-03 + 12.0000000 6.66927639E-03 + 12.1599998 9.13422462E-03 + 12.3199997 1.14006503E-02 + 12.4799995 1.33557934E-02 + 12.6400003 1.48996543E-02 + 12.8000002 1.59520991E-02 + 12.9600000 1.64586641E-02 + 13.1199999 1.63945146E-02 + 13.2799997 1.57662760E-02 + 13.4399996 1.46115189E-02 + 13.6000004 1.29959946E-02 + 13.7600002 1.10089052E-02 + 13.9200001 8.75659753E-03 + 14.0799999 6.35526935E-03 + 14.2399998 3.92329507E-03 + 14.3999996 1.57377089E-03 + 14.5600004 -5.92169818E-04 + 14.7200003 -2.49084411E-03 + 14.8800001 -4.06000530E-03 + 15.0400000 -5.26117440E-03 + 15.1999998 -6.08028751E-03 + 15.3599997 -6.52674818E-03 + 15.5200005 -6.63106982E-03 + 15.6800003 -6.44132681E-03 + 15.8400002 -6.01871498E-03 + 16.0000000 -5.43250237E-03 + 16.1599998 -4.75469185E-03 + 16.3199997 -4.05471167E-03 + 16.4799995 -3.39444960E-03 + 16.6399994 -2.82395491E-03 + 16.7999992 -2.37809983E-03 + 16.9599991 -2.07448797E-03 + 17.1200008 -1.91282004E-03 + 17.2800007 -1.87585247E-03 + 17.4400005 -1.93195394E-03 + 17.6000004 -2.03911914E-03 + 17.7600002 -2.15015095E-03 + 17.9200001 -2.21857289E-03 + 18.0799999 -2.20471551E-03 + 18.2399998 -2.08134088E-03 + 18.3999996 -1.83816068E-03 + 18.5599995 -1.48467429E-03 + 18.7199993 -1.05088891E-03 + 18.8799992 -5.85696660E-04 + 19.0400009 -1.52930210E-04 + 19.2000008 1.74622051E-04 + 19.3600006 3.22709384E-04 + 19.5200005 2.23891868E-04 + 19.6800003 -1.74256042E-04 + 19.8400002 -9.01891908E-04 + 20.0000000 -1.96141331E-03 + 20.1599998 -3.32437386E-03 + 20.3199997 -4.93121520E-03 + 20.4799995 -6.69393083E-03 + 20.6399994 -8.50147195E-03 + 20.7999992 -1.02274371E-02 + 20.9599991 -1.17393183E-02 + 21.1200008 -1.29085006E-02 + 21.2800007 -1.36200665E-02 + 21.4400005 -1.37815680E-02 + 21.6000004 -1.33299921E-02 + 21.7600002 -1.22363996E-02 + 21.9200001 -1.05079180E-02 + 22.0799999 -8.18707328E-03 + 22.2399998 -5.34864794E-03 + 22.3999996 -2.09450908E-03 + 22.5599995 1.45305647E-03 + 22.7199993 5.15884068E-03 + 22.8799992 8.88239965E-03 + 23.0400009 1.24853551E-02 + 23.2000008 1.58378296E-02 + 23.3600006 1.88237485E-02 + 23.5200005 2.13447828E-02 + 23.6800003 2.33229939E-02 + 23.8400002 2.47022454E-02 + 24.0000000 2.54486185E-02 + 24.1599998 2.55500246E-02 + 24.3199997 2.50152852E-02 + 24.4799995 2.38728300E-02 + 24.6399994 2.21691132E-02 + 24.7999992 1.99668668E-02 + 24.9599991 1.73431206E-02 + 25.1200008 1.43869687E-02 + 25.2800007 1.11969979E-02 + 25.4400005 7.87830539E-03 + 25.6000004 4.53909906E-03 + 25.7600002 1.28691900E-03 + 25.9200001 -1.77541887E-03 + 26.0799999 -4.55399230E-03 + 26.2399998 -6.96783699E-03 + 26.3999996 -8.95266049E-03 + 26.5599995 -1.04639204E-02 + 26.7199993 -1.14790266E-02 + 26.8799992 -1.19984709E-02 + 27.0400009 -1.20457485E-02 + 27.2000008 -1.16660297E-02 + 27.3600006 -1.09236110E-02 + 27.5200005 -9.89827793E-03 + 27.6800003 -8.68075155E-03 + 27.8400002 -7.36749684E-03 + 28.0000000 -6.05520047E-03 + 28.1599998 -4.83523728E-03 + 28.3199997 -3.78845632E-03 + 28.4799995 -2.98060197E-03 + 28.6399994 -2.45862291E-03 + 28.7999992 -2.24810280E-03 + 28.9599991 -2.35196133E-03 + 29.1200008 -2.75051384E-03 + 29.2800007 -3.40289483E-03 + 29.4400005 -4.24977671E-03 + 29.6000004 -5.21723600E-03 + 29.7600002 -6.22155983E-03 + 29.9200001 -7.17471400E-03 + 30.0799999 -7.99015630E-03 + 30.2399998 -8.58862419E-03 + 30.3999996 -8.90352204E-03 + 30.5599995 -8.88554379E-03 + 30.7199993 -8.50620121E-03 + 30.8799992 -7.75998877E-03 + 31.0400009 -6.66499976E-03 + 31.2000008 -5.26191480E-03 + 31.3600006 -3.61140422E-03 + 31.5200005 -1.79011072E-03 + 31.6800003 1.14495255E-04 + 31.8400002 2.00999971E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X75.MXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X75.MXX.semd new file mode 100644 index 000000000..32b105732 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X75.MXX.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 -5.59464771E-20 + -6.88000011 4.43782593E-20 + -6.71999979 -2.92814337E-19 + -6.55999994 -6.47567317E-18 + -6.40000010 -1.90105130E-17 + -6.23999977 -2.80126059E-19 + -6.07999992 9.26306628E-17 + -5.92000008 1.15863863E-16 + -5.76000023 -2.91571372E-16 + -5.59999990 -9.74747093E-16 + -5.44000006 -4.13543561E-16 + -5.28000021 2.68740557E-15 + -5.11999989 5.05903472E-15 + -4.96000004 -9.78860602E-16 + -4.80000019 -1.50385550E-14 + -4.63999987 -1.58096548E-14 + -4.48000002 1.96087314E-14 + -4.32000017 6.13005537E-14 + -4.15999985 1.53284893E-14 + -4.00000000 -1.52442485E-13 + -3.83999991 -2.42559851E-13 + -3.68000007 8.92323257E-14 + -3.51999998 8.07888316E-13 + -3.35999990 1.02986489E-12 + -3.20000005 -4.12983748E-13 + -3.03999996 -3.19265339E-12 + -2.88000011 -4.26801780E-12 + -2.72000003 1.22890616E-13 + -2.55999994 9.30586771E-12 + -2.40000010 1.48884186E-11 + -2.24000001 5.82371044E-12 + -2.07999992 -1.86923480E-11 + -1.91999996 -4.03001590E-11 + -1.75999999 -3.10248736E-11 + -1.60000002 1.90919173E-11 + -1.44000006 7.96440899E-11 + -1.27999997 9.22471335E-11 + -1.12000000 2.04523135E-11 + -0.959999979 -1.02034201E-10 + -0.800000012 -1.78285692E-10 + -0.639999986 -1.23100641E-10 + -0.479999989 5.00682551E-11 + -0.319999993 2.16201446E-10 + -0.159999996 2.32644709E-10 + 1.66533454E-16 7.07160094E-11 + 0.159999996 -1.39170883E-10 + 0.319999993 -2.11974369E-10 + 0.479999989 -8.54493420E-11 + 0.639999986 9.69404348E-11 + 0.800000012 1.03118201E-10 + 0.959999979 -1.48186796E-10 + 1.12000000 -4.46423343E-10 + 1.27999997 -4.17707147E-10 + 1.44000006 1.37269474E-10 + 1.60000002 9.75516334E-10 + 1.75999999 1.48585011E-09 + 1.91999996 1.11064735E-09 + 2.07999992 -1.90034544E-10 + 2.24000001 -1.81126447E-09 + 2.40000010 -2.84050827E-09 + 2.55999994 -2.61671196E-09 + 2.72000003 -1.10485676E-09 + 2.88000011 1.14027277E-09 + 3.03999996 3.30664807E-09 + 3.20000005 4.65831018E-09 + 3.35999990 4.68959760E-09 + 3.51999998 3.16201998E-09 + 3.68000007 1.75427783E-10 + 3.83999991 -3.71322151E-09 + 4.00000000 -7.48021911E-09 + 4.15999985 -9.86419124E-09 + 4.32000017 -9.75377823E-09 + 4.48000002 -6.50588872E-09 + 4.63999987 -6.20115487E-11 + 4.80000019 9.04226383E-09 + 4.96000004 1.96077270E-08 + 5.11999989 2.96742293E-08 + 5.28000021 3.66577915E-08 + 5.44000006 3.78833818E-08 + 5.59999990 3.11869854E-08 + 5.76000023 1.47975348E-08 + 5.92000008 -1.41986511E-08 + 6.07999992 -6.27840180E-08 + 6.23999977 -1.45545627E-07 + 6.40000010 -2.88099244E-07 + 6.55999994 -5.30819193E-07 + 6.71999979 -9.34790990E-07 + 6.88000011 -1.59255990E-06 + 7.03999996 -2.64545542E-06 + 7.19999981 -4.30779801E-06 + 7.36000013 -6.89765966E-06 + 7.51999998 -1.08749637E-05 + 7.67999983 -1.68896731E-05 + 7.84000015 -2.58435266E-05 + 8.00000000 -3.89669804E-05 + 8.15999985 -5.79091575E-05 + 8.31999969 -8.48346826E-05 + 8.47999954 -1.22518846E-04 + 8.64000034 -1.74430184E-04 + 8.80000019 -2.44786497E-04 + 8.96000004 -3.38564365E-04 + 9.11999989 -4.61436313E-04 + 9.27999973 -6.19605475E-04 + 9.43999958 -8.19510256E-04 + 9.60000038 -1.06737774E-03 + 9.76000023 -1.36861671E-03 + 9.92000008 -1.72705972E-03 + 10.0799999 -2.14408315E-03 + 10.2399998 -2.61765881E-03 + 10.3999996 -3.14142136E-03 + 10.5600004 -3.70385288E-03 + 10.7200003 -4.28771088E-03 + 10.8800001 -4.86982567E-03 + 11.0400000 -5.42138424E-03 + 11.1999998 -5.90879237E-03 + 11.3599997 -6.29515247E-03 + 11.5200005 -6.54234085E-03 + 11.6800003 -6.61358610E-03 + 11.8400002 -6.47638738E-03 + 12.0000000 -6.10555010E-03 + 12.1599998 -5.48604736E-03 + 12.3199997 -4.61542839E-03 + 12.4799995 -3.50547326E-03 + 12.6400003 -2.18286365E-03 + 12.8000002 -6.88714557E-04 + 12.9600000 9.23084212E-04 + 13.1199999 2.58864905E-03 + 13.2799997 4.23781713E-03 + 13.4399996 5.79850329E-03 + 13.6000004 7.20133353E-03 + 13.7600002 8.38414952E-03 + 13.9200001 9.29600466E-03 + 14.0799999 9.90030635E-03 + 14.2399998 1.01768663E-02 + 14.3999996 1.01227006E-02 + 14.5600004 9.75159183E-03 + 14.7200003 9.09249485E-03 + 14.8800001 8.18700157E-03 + 15.0400000 7.08613591E-03 + 15.1999998 5.84678072E-03 + 15.3599997 4.52801911E-03 + 15.5200005 3.18766572E-03 + 15.6800003 1.87919929E-03 + 15.8400002 6.49254594E-04 + 16.0000000 -4.64220764E-04 + 16.1599998 -1.43310358E-03 + 16.3199997 -2.23952439E-03 + 16.4799995 -2.87562446E-03 + 16.6399994 -3.34269856E-03 + 16.7999992 -3.64981382E-03 + 16.9599991 -3.81200504E-03 + 17.1200008 -3.84818739E-03 + 17.2800007 -3.77895241E-03 + 17.4400005 -3.62444599E-03 + 17.6000004 -3.40254442E-03 + 17.7600002 -3.12754442E-03 + 17.9200001 -2.80954526E-03 + 18.0799999 -2.45463173E-03 + 18.2399998 -2.06586672E-03 + 18.3999996 -1.64499239E-03 + 18.5599995 -1.19459792E-03 + 18.7199993 -7.20413111E-04 + 18.8799992 -2.33302417E-04 + 19.0400009 2.49469012E-04 + 19.2000008 7.04064674E-04 + 19.3600006 1.10124238E-03 + 19.5200005 1.40891352E-03 + 19.6800003 1.59593695E-03 + 19.8400002 1.63676590E-03 + 20.0000000 1.51636964E-03 + 20.1599998 1.23473397E-03 + 20.3199997 8.10216647E-04 + 20.4799995 2.81121349E-04 + 20.6399994 -2.94970348E-04 + 20.7999992 -8.44310794E-04 + 20.9599991 -1.28243596E-03 + 21.1200008 -1.52152951E-03 + 21.2800007 -1.47899950E-03 + 21.4400005 -1.08637346E-03 + 21.6000004 -2.97539373E-04 + 21.7600002 9.04593093E-04 + 21.9200001 2.50378205E-03 + 22.0799999 4.44901828E-03 + 22.2399998 6.65618666E-03 + 22.3999996 9.01271123E-03 + 22.5599995 1.13847628E-02 + 22.7199993 1.36263594E-02 + 22.8799992 1.55895390E-02 + 23.0400009 1.71347000E-02 + 23.2000008 1.81402639E-02 + 23.3600006 1.85109153E-02 + 23.5200005 1.81838386E-02 + 23.6800003 1.71326175E-02 + 23.8400002 1.53686553E-02 + 24.0000000 1.29401917E-02 + 24.1599998 9.92914196E-03 + 24.3199997 6.44611660E-03 + 24.4799995 2.62405863E-03 + 24.6399994 -1.38903630E-03 + 24.7999992 -5.43785468E-03 + 24.9599991 -9.36751347E-03 + 25.1200008 -1.30309351E-02 + 25.2800007 -1.62954833E-02 + 25.4400005 -1.90485921E-02 + 25.6000004 -2.12021582E-02 + 25.7600002 -2.26955488E-02 + 25.9200001 -2.34971549E-02 + 26.0799999 -2.36044470E-02 + 26.2399998 -2.30426360E-02 + 26.3999996 -2.18620803E-02 + 26.5599995 -2.01346409E-02 + 26.7199993 -1.79492570E-02 + 26.8799992 -1.54070165E-02 + 27.0400009 -1.26160402E-02 + 27.2000008 -9.68647189E-03 + 27.3600006 -6.72582630E-03 + 27.5200005 -3.83488904E-03 + 27.6800003 -1.10430608E-03 + 27.8400002 1.38806074E-03 + 28.0000000 3.57900024E-03 + 28.1599998 5.42105455E-03 + 28.3199997 6.88293017E-03 + 28.4799995 7.94929732E-03 + 28.6399994 8.62007495E-03 + 28.7999992 8.90929252E-03 + 28.9599991 8.84358492E-03 + 29.1200008 8.46041646E-03 + 29.2800007 7.80605664E-03 + 29.4400005 6.93340460E-03 + 29.6000004 5.89969335E-03 + 29.7600002 4.76413267E-03 + 29.9200001 3.58554954E-03 + 30.0799999 2.42009270E-03 + 30.2399998 1.31909200E-03 + 30.3999996 3.27153830E-04 + 30.5599995 -5.19438414E-04 + 30.7199993 -1.19394157E-03 + 30.8799992 -1.67992467E-03 + 31.0400009 -1.97154260E-03 + 31.2000008 -2.07328191E-03 + 31.3600006 -1.99918891E-03 + 31.5200005 -1.77161745E-03 + 31.6800003 -1.41957612E-03 + 31.8400002 -9.76756564E-04 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X75.MXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X75.MXY.semd new file mode 100644 index 000000000..53032a81a --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X75.MXY.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 -1.61809614E-20 + -6.88000011 -6.78796689E-20 + -6.71999979 -7.69172969E-19 + -6.55999994 -2.65402740E-18 + -6.40000010 2.11606925E-18 + -6.23999977 2.79612160E-17 + -6.07999992 3.42651760E-17 + -5.92000008 -1.20924885E-16 + -5.76000023 -4.08121491E-16 + -5.59999990 -1.19534759E-16 + -5.44000006 1.56208990E-15 + -5.28000021 2.95998522E-15 + -5.11999989 -1.18078892E-15 + -4.96000004 -1.23626593E-14 + -4.80000019 -1.58635990E-14 + -4.63999987 1.32762894E-14 + -4.48000002 6.77215716E-14 + -4.32000017 6.94105756E-14 + -4.15999985 -7.16727906E-14 + -4.00000000 -2.88137081E-13 + -3.83999991 -2.73128606E-13 + -3.68000007 2.46839794E-13 + -3.51999998 9.82426488E-13 + -3.35999990 9.62861301E-13 + -3.20000005 -5.60162864E-13 + -3.03999996 -2.72536681E-12 + -2.88000011 -2.97183155E-12 + -2.72000003 5.86015719E-13 + -2.55999994 6.01355641E-12 + -2.40000010 7.61542912E-12 + -2.24000001 1.11368846E-12 + -2.07999992 -1.01148430E-11 + -1.91999996 -1.53937661E-11 + -1.75999999 -6.39320584E-12 + -1.60000002 1.20466267E-11 + -1.44000006 2.29013787E-11 + -1.27999997 1.29115633E-11 + -1.12000000 -1.08301033E-11 + -0.959999979 -2.36771627E-11 + -0.800000012 -8.45778655E-12 + -0.639999986 2.06717143E-11 + -0.479999989 2.51988742E-11 + -0.319999993 -1.75144673E-11 + -0.159999996 -7.69241684E-11 + 1.66533454E-16 -8.02658495E-11 + 0.159999996 2.15001836E-11 + 0.319999993 1.83920837E-10 + 0.479999989 2.68730899E-10 + 0.639999986 1.40979894E-10 + 0.800000012 -1.95034267E-10 + 0.959999979 -5.37299483E-10 + 1.12000000 -5.88756821E-10 + 1.27999997 -1.84881652E-10 + 1.44000006 5.15819110E-10 + 1.60000002 1.05995779E-09 + 1.75999999 9.88649718E-10 + 1.91999996 2.10093151E-10 + 2.07999992 -8.45821968E-10 + 2.24000001 -1.47416490E-09 + 2.40000010 -1.21164079E-09 + 2.55999994 -2.26161395E-10 + 2.72000003 7.75374487E-10 + 2.88000011 1.10223242E-09 + 3.03999996 6.62204569E-10 + 3.20000005 5.45993702E-11 + 3.35999990 3.58525432E-11 + 3.51999998 7.72222508E-10 + 3.68000007 1.54071600E-09 + 3.83999991 1.22428323E-09 + 4.00000000 -7.11379511E-10 + 4.15999985 -3.53579410E-09 + 4.32000017 -5.49493206E-09 + 4.48000002 -4.91318852E-09 + 4.63999987 -1.38876455E-09 + 4.80000019 3.82164922E-09 + 4.96000004 8.54810622E-09 + 5.11999989 1.10325695E-08 + 5.28000021 1.08354410E-08 + 5.44000006 8.68145111E-09 + 5.59999990 5.46422818E-09 + 5.76000023 1.23582267E-09 + 5.92000008 -5.17896703E-09 + 6.07999992 -1.60792801E-08 + 6.23999977 -3.50284282E-08 + 6.40000010 -6.78149377E-08 + 6.55999994 -1.24132455E-07 + 6.71999979 -2.19477087E-07 + 6.88000011 -3.77176207E-07 + 7.03999996 -6.31343369E-07 + 7.19999981 -1.03200796E-06 + 7.36000013 -1.65320159E-06 + 7.51999998 -2.60380830E-06 + 7.67999983 -4.04045522E-06 + 7.84000015 -6.18206150E-06 + 8.00000000 -9.32648527E-06 + 8.15999985 -1.38700088E-05 + 8.31999969 -2.03297514E-05 + 8.47999954 -2.93676985E-05 + 8.64000034 -4.18130803E-05 + 8.80000019 -5.86781971E-05 + 8.96000004 -8.11616410E-05 + 9.11999989 -1.10632180E-04 + 9.27999973 -1.48586943E-04 + 9.43999958 -1.96578883E-04 + 9.60000038 -2.56109459E-04 + 9.76000023 -3.28484050E-04 + 9.92000008 -4.14630922E-04 + 10.0799999 -5.14888437E-04 + 10.2399998 -6.28773298E-04 + 10.3999996 -7.54750334E-04 + 10.5600004 -8.90032621E-04 + 10.7200003 -1.03044289E-03 + 10.8800001 -1.17036840E-03 + 11.0400000 -1.30283611E-03 + 11.1999998 -1.41972781E-03 + 11.3599997 -1.51214260E-03 + 11.5200005 -1.57090346E-03 + 11.6800003 -1.58718508E-03 + 11.8400002 -1.55322440E-03 + 12.0000000 -1.46305526E-03 + 12.1599998 -1.31319498E-03 + 12.3199997 -1.10320910E-03 + 12.4799995 -8.36082967E-04 + 12.6400003 -5.18354762E-04 + 12.8000002 -1.59979492E-04 + 12.9600000 2.26080665E-04 + 13.1199999 6.24524546E-04 + 13.2799997 1.01860007E-03 + 13.4399996 1.39114528E-03 + 13.6000004 1.72569416E-03 + 13.7600002 2.00754334E-03 + 13.9200001 2.22468330E-03 + 14.0799999 2.36851629E-03 + 14.2399998 2.43431260E-03 + 14.3999996 2.42138677E-03 + 14.5600004 2.33299867E-03 + 14.7200003 2.17599375E-03 + 14.8800001 1.96023053E-03 + 15.0400000 1.69783900E-03 + 15.1999998 1.40238064E-03 + 15.3599997 1.08797022E-03 + 15.5200005 7.68430647E-04 + 15.6800003 4.56537557E-04 + 15.8400002 1.63396631E-04 + 16.0000000 -1.02015561E-04 + 16.1599998 -3.33133969E-04 + 16.3199997 -5.25905169E-04 + 16.4799995 -6.78706507E-04 + 16.6399994 -7.92096369E-04 + 16.7999992 -8.68418021E-04 + 16.9599991 -9.11296636E-04 + 17.1200008 -9.25080152E-04 + 17.2800007 -9.14282457E-04 + 17.4400005 -8.83088447E-04 + 17.6000004 -8.34978244E-04 + 17.7600002 -7.72520434E-04 + 17.9200001 -6.97364332E-04 + 18.0799999 -6.10438525E-04 + 18.2399998 -5.12329862E-04 + 18.3999996 -4.03786398E-04 + 18.5599995 -2.86261755E-04 + 18.7199993 -1.62399359E-04 + 18.8799992 -3.63534309E-05 + 19.0400009 8.61430672E-05 + 19.2000008 1.98018519E-04 + 19.3600006 2.91420525E-04 + 19.5200005 3.58552119E-04 + 19.6800003 3.92700313E-04 + 19.8400002 3.89334047E-04 + 20.0000000 3.47121590E-04 + 20.1599998 2.68709089E-04 + 20.3199997 1.61120828E-04 + 20.4799995 3.56815035E-05 + 20.6399994 -9.25763816E-05 + 20.7999992 -2.05991761E-04 + 20.9599991 -2.85749586E-04 + 21.1200008 -3.13609606E-04 + 21.2800007 -2.73712387E-04 + 21.4400005 -1.54270296E-04 + 21.6000004 5.10386344E-05 + 21.7600002 3.42124113E-04 + 21.9200001 7.12082372E-04 + 22.0799999 1.14737998E-03 + 22.2399998 1.62859785E-03 + 22.3999996 2.13166233E-03 + 22.5599995 2.62943469E-03 + 22.7199993 3.09351087E-03 + 22.8799992 3.49606574E-03 + 23.0400009 3.81159154E-03 + 23.2000008 4.01840219E-03 + 23.3600006 4.09981329E-03 + 23.5200005 4.04494023E-03 + 23.6800003 3.84909357E-03 + 23.8400002 3.51379463E-03 + 24.0000000 3.04645114E-03 + 24.1599998 2.45976029E-03 + 24.3199997 1.77090743E-03 + 24.4799995 1.00064359E-03 + 24.6399994 1.72309490E-04 + 24.7999992 -6.89126609E-04 + 24.9599991 -1.55797473E-03 + 25.1200008 -2.40864418E-03 + 25.2800007 -3.21637816E-03 + 25.4400005 -3.95790208E-03 + 25.6000004 -4.61200112E-03 + 25.7600002 -5.16003603E-03 + 25.9200001 -5.58641599E-03 + 26.0799999 -5.87903196E-03 + 26.2399998 -6.02965569E-03 + 26.3999996 -6.03427878E-03 + 26.5599995 -5.89337293E-03 + 26.7199993 -5.61203063E-03 + 26.8799992 -5.19995252E-03 + 27.0400009 -4.67124861E-03 + 27.2000008 -4.04402195E-03 + 27.3600006 -3.33971786E-03 + 27.5200005 -2.58225552E-03 + 27.6800003 -1.79697038E-03 + 27.8400002 -1.00942526E-03 + 28.0000000 -2.44174269E-04 + 28.1599998 4.76435293E-04 + 28.3199997 1.13331934E-03 + 28.4799995 1.71148183E-03 + 28.6399994 2.20053224E-03 + 28.7999992 2.59484746E-03 + 28.9599991 2.89337058E-03 + 29.1200008 3.09907296E-03 + 29.2800007 3.21814464E-03 + 29.4400005 3.25901574E-03 + 29.6000004 3.23132752E-03 + 29.7600002 3.14497505E-03 + 29.9200001 3.00933444E-03 + 30.0799999 2.83274893E-03 + 30.2399998 2.62231706E-03 + 30.3999996 2.38396856E-03 + 30.5599995 2.12278496E-03 + 30.7199993 1.84345979E-03 + 30.8799992 1.55079842E-03 + 31.0400009 1.25013338E-03 + 31.2000008 9.47559194E-04 + 31.3600006 6.49914553E-04 + 31.5200005 3.64488660E-04 + 31.6800003 9.84720828E-05 + 31.8400002 -1.41771452E-04 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X75.MXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X75.MXZ.semd new file mode 100644 index 000000000..7e0263a99 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X75.MXZ.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 -3.32562619E-26 + -7.03999996 9.37881774E-21 + -6.88000011 -4.59392899E-19 + -6.71999979 -1.81951383E-18 + -6.55999994 -6.05456194E-19 + -6.40000010 4.61286202E-18 + -6.23999977 -1.12643562E-17 + -6.07999992 -7.47157969E-17 + -5.92000008 -7.47323471E-17 + -5.76000023 2.31562132E-16 + -5.59999990 6.48862284E-16 + -5.44000006 1.69701016E-17 + -5.28000021 -2.36233042E-15 + -5.11999989 -3.54416309E-15 + -4.96000004 2.15585216E-15 + -4.80000019 1.30532817E-14 + -4.63999987 1.13433551E-14 + -4.48000002 -2.01851272E-14 + -4.32000017 -5.68086126E-14 + -4.15999985 -2.48412808E-14 + -4.00000000 1.08099815E-13 + -3.83999991 2.08385243E-13 + -3.68000007 2.79641710E-14 + -3.51999998 -4.57286986E-13 + -3.35999990 -7.32352709E-13 + -3.20000005 -4.80105898E-14 + -3.03999996 1.54340549E-12 + -2.88000011 2.44131516E-12 + -2.72000003 5.16514349E-13 + -2.55999994 -4.12922257E-12 + -2.40000010 -7.35389180E-12 + -2.24000001 -3.49193721E-12 + -2.07999992 8.10437047E-12 + -1.91999996 1.85477154E-11 + -1.75999999 1.42136251E-11 + -1.60000002 -9.46205007E-12 + -1.44000006 -3.70679563E-11 + -1.27999997 -4.00317765E-11 + -1.12000000 -2.31629299E-12 + -0.959999979 5.55974225E-11 + -0.800000012 8.25491411E-11 + -0.639999986 3.87040573E-11 + -0.479999989 -5.79444930E-11 + -0.319999993 -1.29470143E-10 + -0.159999996 -9.83705756E-11 + 1.66533454E-16 3.30988743E-11 + 0.159999996 1.62502872E-10 + 0.319999993 1.64270791E-10 + 0.479999989 1.03218311E-11 + 0.639999986 -1.79883400E-10 + 0.800000012 -2.28220054E-10 + 0.959999979 -6.45547921E-11 + 1.12000000 1.84293025E-10 + 1.27999997 2.89296420E-10 + 1.44000006 1.32992672E-10 + 1.60000002 -1.57127020E-10 + 1.75999999 -3.05087622E-10 + 1.91999996 -1.48773313E-10 + 2.07999992 1.75776393E-10 + 2.24000001 3.27300242E-10 + 2.40000010 7.58763052E-11 + 2.55999994 -4.39007525E-10 + 2.72000003 -7.64627250E-10 + 2.88000011 -4.86817919E-10 + 3.03999996 4.10969536E-10 + 3.20000005 1.47927348E-09 + 3.35999990 2.06822892E-09 + 3.51999998 1.70191117E-09 + 3.68000007 3.01024039E-10 + 3.83999991 -1.81296222E-09 + 4.00000000 -4.01307876E-09 + 4.15999985 -5.46111512E-09 + 4.32000017 -5.25922950E-09 + 4.48000002 -2.76663270E-09 + 4.63999987 1.99818362E-09 + 4.80000019 8.18481816E-09 + 4.96000004 1.44335459E-08 + 5.11999989 1.95372341E-08 + 5.28000021 2.28393962E-08 + 5.44000006 2.37835849E-08 + 5.59999990 2.06196873E-08 + 5.76000023 8.93798102E-09 + 5.92000008 -1.92621918E-08 + 6.07999992 -7.60609424E-08 + 6.23999977 -1.78806843E-07 + 6.40000010 -3.53563678E-07 + 6.55999994 -6.41820350E-07 + 6.71999979 -1.11057113E-06 + 6.88000011 -1.86565342E-06 + 7.03999996 -3.06914603E-06 + 7.19999981 -4.96306438E-06 + 7.36000013 -7.90234753E-06 + 7.51999998 -1.23995396E-05 + 7.67999983 -1.91821364E-05 + 7.84000015 -2.92619916E-05 + 8.00000000 -4.40155382E-05 + 8.15999985 -6.52728122E-05 + 8.31999969 -9.54114512E-05 + 8.47999954 -1.37447831E-04 + 8.64000034 -1.95112036E-04 + 8.80000019 -2.72887206E-04 + 8.96000004 -3.75989941E-04 + 9.11999989 -5.10266109E-04 + 9.27999973 -6.81977253E-04 + 9.43999958 -8.97455902E-04 + 9.60000038 -1.16261176E-03 + 9.76000023 -1.48228230E-03 + 9.92000008 -1.85943407E-03 + 10.0799999 -2.29424983E-03 + 10.2399998 -2.78315507E-03 + 10.3999996 -3.31786997E-03 + 10.5600004 -3.88459046E-03 + 10.7200003 -4.46342118E-03 + 10.8800001 -5.02818963E-03 + 11.0400000 -5.54675562E-03 + 11.1999998 -5.98192727E-03 + 11.3599997 -6.29302999E-03 + 11.5200005 -6.43813517E-03 + 11.6800003 -6.37688860E-03 + 11.8400002 -6.07376592E-03 + 12.0000000 -5.50154829E-03 + 12.1599998 -4.64472268E-03 + 12.3199997 -3.50246299E-03 + 12.4799995 -2.09086761E-03 + 12.6400003 -4.44119010E-04 + 12.8000002 1.38567737E-03 + 12.9600000 3.33012501E-03 + 13.1199999 5.30766230E-03 + 13.2799997 7.22805317E-03 + 13.4399996 8.99796467E-03 + 13.6000004 1.05272168E-02 + 13.7600002 1.17351953E-02 + 13.9200001 1.25568528E-02 + 14.0799999 1.29477438E-02 + 14.2399998 1.28875850E-02 + 14.3999996 1.23819904E-02 + 14.5600004 1.14621865E-02 + 14.7200003 1.01826778E-02 + 14.8800001 8.61708913E-03 + 15.0400000 6.85252668E-03 + 15.1999998 4.98301070E-03 + 15.3599997 3.10257729E-03 + 15.5200005 1.29870756E-03 + 15.6800003 -3.53334413E-04 + 15.8400002 -1.79477129E-03 + 16.0000000 -2.98587908E-03 + 16.1599998 -3.90671799E-03 + 16.3199997 -4.55609709E-03 + 16.4799995 -4.94902534E-03 + 16.6399994 -5.11305872E-03 + 16.7999992 -5.08403452E-03 + 16.9599991 -4.90172207E-03 + 17.1200008 -4.60587721E-03 + 17.2800007 -4.23309114E-03 + 17.4400005 -3.81469005E-03 + 17.6000004 -3.37578100E-03 + 17.7600002 -2.93535809E-03 + 17.9200001 -2.50725448E-03 + 18.0799999 -2.10160040E-03 + 18.2399998 -1.72641408E-03 + 18.3999996 -1.38895586E-03 + 18.5599995 -1.09655410E-03 + 18.7199993 -8.56719154E-04 + 18.8799992 -6.76517258E-04 + 19.0400009 -5.61326742E-04 + 19.2000008 -5.13244886E-04 + 19.3600006 -5.29509387E-04 + 19.5200005 -6.01330481E-04 + 19.6800003 -7.13498332E-04 + 19.8400002 -8.45027040E-04 + 20.0000000 -9.70945985E-04 + 20.1599998 -1.06516620E-03 + 20.3199997 -1.10416254E-03 + 20.4799995 -1.07103668E-03 + 20.6399994 -9.59416968E-04 + 20.7999992 -7.76600675E-04 + 20.9599991 -5.45394199E-04 + 21.1200008 -3.04219109E-04 + 21.2800007 -1.05247906E-04 + 21.4400005 -1.05582394E-05 + 21.6000004 -8.65410038E-05 + 21.7600002 -3.97027179E-04 + 21.9200001 -9.95780574E-04 + 22.0799999 -1.91911578E-03 + 22.2399998 -3.17943702E-03 + 22.3999996 -4.76043159E-03 + 22.5599995 -6.61451416E-03 + 22.7199993 -8.66290461E-03 + 22.8799992 -1.07984897E-02 + 23.0400009 -1.28913475E-02 + 23.2000008 -1.47965811E-02 + 23.3600006 -1.63638610E-02 + 23.5200005 -1.74479634E-02 + 23.6800003 -1.79194529E-02 + 23.8400002 -1.76746752E-02 + 24.0000000 -1.66442767E-02 + 24.1599998 -1.47995567E-02 + 24.3199997 -1.21561773E-02 + 24.4799995 -8.77493713E-03 + 24.6399994 -4.75953100E-03 + 24.7999992 -2.51479767E-04 + 24.9599991 4.57742391E-03 + 25.1200008 9.53459553E-03 + 25.2800007 1.44173903E-02 + 25.4400005 1.90243702E-02 + 25.6000004 2.31663063E-02 + 25.7600002 2.66762394E-02 + 25.9200001 2.94179376E-02 + 26.0799999 3.12923081E-02 + 26.2399998 3.22413817E-02 + 26.3999996 3.22497785E-02 + 26.5599995 3.13437060E-02 + 26.7199993 2.95876227E-02 + 26.8799992 2.70789731E-02 + 27.0400009 2.39414070E-02 + 27.2000008 2.03170534E-02 + 27.3600006 1.63583327E-02 + 27.5200005 1.22198788E-02 + 27.6800003 8.05098191E-03 + 27.8400002 3.98899941E-03 + 28.0000000 1.53984744E-04 + 28.1599998 -3.35522392E-03 + 28.3199997 -6.46340661E-03 + 28.4799995 -9.11985617E-03 + 28.6399994 -1.12978537E-02 + 28.7999992 -1.29929092E-02 + 28.9599991 -1.42199798E-02 + 29.1200008 -1.50099285E-02 + 29.2800007 -1.54055161E-02 + 29.4400005 -1.54571971E-02 + 29.6000004 -1.52190113E-02 + 29.7600002 -1.47448042E-02 + 29.9200001 -1.40849976E-02 + 30.0799999 -1.32840844E-02 + 30.2399998 -1.23789590E-02 + 30.3999996 -1.13981282E-02 + 30.5599995 -1.03617795E-02 + 30.7199993 -9.28264670E-03 + 30.8799992 -8.16750433E-03 + 31.0400009 -7.01913424E-03 + 31.2000008 -5.83855435E-03 + 31.3600006 -4.62725945E-03 + 31.5200005 -3.38926003E-03 + 31.6800003 -2.13270751E-03 + 31.8400002 -8.70966585E-04 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X80.MXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X80.MXX.semd new file mode 100644 index 000000000..252605706 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X80.MXX.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 1.94780487E-43 + -6.88000011 2.21891058E-21 + -6.71999979 1.65163363E-20 + -6.55999994 1.94483100E-19 + -6.40000010 8.12080069E-19 + -6.23999977 5.32414750E-19 + -6.07999992 -4.84012907E-18 + -5.92000008 -1.10738407E-17 + -5.76000023 1.23318327E-17 + -5.59999990 7.97865530E-17 + -5.44000006 6.18729775E-17 + -5.28000021 -2.65601924E-16 + -5.11999989 -6.54920528E-16 + -4.96000004 6.75765466E-17 + -4.80000019 2.53058547E-15 + -4.63999987 3.57574408E-15 + -4.48000002 -2.99161915E-15 + -4.32000017 -1.57575979E-14 + -4.15999985 -1.47363811E-14 + -4.00000000 2.30730250E-14 + -3.83999991 7.52967499E-14 + -3.68000007 5.23510305E-14 + -3.51999998 -1.12469170E-13 + -3.35999990 -2.96611721E-13 + -3.20000005 -1.79104805E-13 + -3.03999996 4.06866625E-13 + -2.88000011 1.00036017E-12 + -2.72000003 6.24460607E-13 + -2.55999994 -1.12949721E-12 + -2.40000010 -2.91751606E-12 + -2.24000001 -2.13539104E-12 + -2.07999992 2.30678215E-12 + -1.91999996 7.27475805E-12 + -1.75999999 6.63804081E-12 + -1.60000002 -2.69141957E-12 + -1.44000006 -1.49804388E-11 + -1.27999997 -1.76259285E-11 + -1.12000000 -2.31637170E-12 + -0.959999979 2.35544622E-11 + -0.800000012 3.80398456E-11 + -0.639999986 2.16986481E-11 + -0.479999989 -2.20679395E-11 + -0.319999993 -6.27721555E-11 + -0.159999996 -6.28329611E-11 + 1.66533454E-16 -9.08516404E-12 + 0.159999996 6.92984489E-11 + 0.319999993 1.14367044E-10 + 0.479999989 8.01666719E-11 + 0.639999986 -2.58397696E-11 + 0.800000012 -1.34699238E-10 + 0.959999979 -1.58518060E-10 + 1.12000000 -6.27432065E-11 + 1.27999997 8.91544685E-11 + 1.44000006 1.72224610E-10 + 1.60000002 1.08612480E-10 + 1.75999999 -4.26449778E-11 + 1.91999996 -1.19145499E-10 + 2.07999992 -1.48056636E-11 + 2.24000001 1.76038045E-10 + 2.40000010 2.03493736E-10 + 2.55999994 -9.09090719E-11 + 2.72000003 -5.40987977E-10 + 2.88000011 -7.06304126E-10 + 3.03999996 -2.43340098E-10 + 3.20000005 7.00339953E-10 + 3.35999990 1.46440071E-09 + 3.51999998 1.33370048E-09 + 3.68000007 1.42158896E-10 + 3.83999991 -1.48821588E-09 + 4.00000000 -2.50828402E-09 + 4.15999985 -2.14732676E-09 + 4.32000017 -4.38129810E-10 + 4.48000002 1.79618120E-09 + 4.63999987 3.43063844E-09 + 4.80000019 3.63505692E-09 + 4.96000004 2.22797980E-09 + 5.11999989 -3.23512078E-10 + 5.28000021 -3.14758886E-09 + 5.44000006 -5.28456878E-09 + 5.59999990 -5.97104544E-09 + 5.76000023 -4.84848828E-09 + 5.92000008 -2.04402473E-09 + 6.07999992 1.95805394E-09 + 6.23999977 6.66120492E-09 + 6.40000010 1.19079528E-08 + 6.55999994 1.78373920E-08 + 6.71999979 2.41785294E-08 + 6.88000011 2.91410380E-08 + 7.03999996 2.86917885E-08 + 7.19999981 1.68620602E-08 + 7.36000013 -1.33022686E-08 + 7.51999998 -6.97158029E-08 + 7.67999983 -1.63858587E-07 + 7.84000015 -3.16414571E-07 + 8.00000000 -5.64746188E-07 + 8.15999985 -9.70905035E-07 + 8.31999969 -1.63085144E-06 + 8.47999954 -2.68807003E-06 + 8.64000034 -4.35550237E-06 + 8.80000019 -6.94792288E-06 + 8.96000004 -1.09241755E-05 + 9.11999989 -1.69377909E-05 + 9.27999973 -2.58956625E-05 + 9.43999958 -3.90262649E-05 + 9.60000038 -5.79577863E-05 + 9.76000023 -8.48025156E-05 + 9.92000008 -1.22238038E-04 + 10.0799999 -1.73571214E-04 + 10.2399998 -2.42767157E-04 + 10.3999996 -3.34424258E-04 + 10.5600004 -4.53674642E-04 + 10.7200003 -6.05988840E-04 + 10.8800001 -7.96864566E-04 + 11.0400000 -1.03138457E-03 + 11.1999998 -1.31364155E-03 + 11.3599997 -1.64604373E-03 + 11.5200005 -2.02853256E-03 + 11.6800003 -2.45777238E-03 + 11.8400002 -2.92638782E-03 + 12.0000000 -3.42234084E-03 + 12.1599998 -3.92854679E-03 + 12.3199997 -4.42284672E-03 + 12.4799995 -4.87841386E-03 + 12.6400003 -5.26468176E-03 + 12.8000002 -5.54880220E-03 + 12.9600000 -5.69761405E-03 + 13.1199999 -5.68001252E-03 + 13.2799997 -5.46957972E-03 + 13.4399996 -5.04723610E-03 + 13.6000004 -4.40367684E-03 + 13.7600002 -3.54131195E-03 + 13.9200001 -2.47547217E-03 + 14.0799999 -1.23467844E-03 + 14.2399998 1.40133794E-04 + 14.3999996 1.59744651E-03 + 14.5600004 3.07795289E-03 + 14.7200003 4.51811356E-03 + 14.8800001 5.85418241E-03 + 15.0400000 7.02634174E-03 + 15.1999998 7.98257254E-03 + 15.3599997 8.68191943E-03 + 15.5200005 9.09685623E-03 + 15.6800003 9.21461917E-03 + 15.8400002 9.03741270E-03 + 16.0000000 8.58160481E-03 + 16.1599998 7.87601620E-03 + 16.3199997 6.95958547E-03 + 16.4799995 5.87864965E-03 + 16.6399994 4.68411762E-03 + 16.7999992 3.42873228E-03 + 16.9599991 2.16457411E-03 + 17.1200008 9.40878701E-04 + 17.2800007 -1.97815098E-04 + 17.4400005 -1.21321692E-03 + 17.6000004 -2.07457901E-03 + 17.7600002 -2.75975768E-03 + 17.9200001 -3.25602409E-03 + 18.0799999 -3.56055982E-03 + 18.2399998 -3.68053652E-03 + 18.3999996 -3.63266398E-03 + 18.5599995 -3.44210840E-03 + 18.7199993 -3.14073497E-03 + 18.8799992 -2.76470836E-03 + 19.0400009 -2.35157693E-03 + 19.2000008 -1.93709508E-03 + 19.3600006 -1.55210076E-03 + 19.5200005 -1.21983059E-03 + 19.6800003 -9.54018615E-04 + 19.8400002 -7.58075505E-04 + 20.0000000 -6.25506858E-04 + 20.1599998 -5.41578804E-04 + 20.3199997 -4.86060453E-04 + 20.4799995 -4.36707342E-04 + 20.6399994 -3.73030634E-04 + 20.7999992 -2.79829605E-04 + 20.9599991 -1.49975327E-04 + 21.1200008 1.39855956E-05 + 21.2800007 1.99688133E-04 + 21.4400005 3.86346364E-04 + 21.6000004 5.47555857E-04 + 21.7600002 6.55164418E-04 + 21.9200001 6.83720980E-04 + 22.0799999 6.14914985E-04 + 22.2399998 4.41400305E-04 + 22.3999996 1.69453269E-04 + 22.5599995 -1.79943832E-04 + 22.7199993 -5.71809185E-04 + 22.8799992 -9.59644385E-04 + 23.0400009 -1.28946430E-03 + 23.2000008 -1.50496105E-03 + 23.3600006 -1.55325187E-03 + 23.5200005 -1.39058277E-03 + 23.6800003 -9.87357693E-04 + 23.8400002 -3.31941352E-04 + 24.0000000 5.67166193E-04 + 24.1599998 1.68099988E-03 + 24.3199997 2.96167331E-03 + 24.4799995 4.34563030E-03 + 24.6399994 5.75827900E-03 + 24.7999992 7.11952848E-03 + 24.9599991 8.34969431E-03 + 25.1200008 9.37520992E-03 + 25.2800007 1.01336502E-02 + 25.4400005 1.05776964E-02 + 25.6000004 1.06777269E-02 + 25.7600002 1.04229162E-02 + 25.9200001 9.82084684E-03 + 26.0799999 8.89579859E-03 + 26.2399998 7.68598216E-03 + 26.3999996 6.24007965E-03 + 26.5599995 4.61346097E-03 + 26.7199993 2.86445511E-03 + 26.8799992 1.05101010E-03 + 27.0400009 -7.72009371E-04 + 27.2000008 -2.55471352E-03 + 27.3600006 -4.25324030E-03 + 27.5200005 -5.83003554E-03 + 27.6800003 -7.25350855E-03 + 27.8400002 -8.49730056E-03 + 28.0000000 -9.53941606E-03 + 28.1599998 -1.03614843E-02 + 28.3199997 -1.09483805E-02 + 28.4799995 -1.12883169E-02 + 28.6399994 -1.13734687E-02 + 28.7999992 -1.12010287E-02 + 28.9599991 -1.07745910E-02 + 29.1200008 -1.01055838E-02 + 29.2800007 -9.21449251E-03 + 29.4400005 -8.13156925E-03 + 29.6000004 -6.89677196E-03 + 29.7600002 -5.55879995E-03 + 29.9200001 -4.17315867E-03 + 30.0799999 -2.79933400E-03 + 30.2399998 -1.49724435E-03 + 30.3999996 -3.23266810E-04 + 30.5599995 6.73789997E-04 + 30.7199993 1.45635533E-03 + 30.8799992 2.00102059E-03 + 31.0400009 2.30039493E-03 + 31.2000008 2.36367784E-03 + 31.3600006 2.21584877E-03 + 31.5200005 1.89552002E-03 + 31.6800003 1.45163387E-03 + 31.8400002 9.39307036E-04 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X80.MXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X80.MXY.semd new file mode 100644 index 000000000..378f6afd9 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X80.MXY.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 -4.90454463E-44 + -6.88000011 1.34972642E-21 + -6.71999979 1.34706734E-20 + -6.55999994 6.94567663E-20 + -6.40000010 2.32712996E-19 + -6.23999977 4.74369883E-19 + -6.07999992 2.44102214E-19 + -5.92000008 -1.66481224E-18 + -5.76000023 -4.74752620E-18 + -5.59999990 -1.92673236E-18 + -5.44000006 1.70589805E-17 + -5.28000021 3.99503255E-17 + -5.11999989 8.52657941E-18 + -4.96000004 -1.21055249E-16 + -4.80000019 -2.18356160E-16 + -4.63999987 4.10133320E-17 + -4.48000002 7.22520639E-16 + -4.32000017 9.95952351E-16 + -4.15999985 -4.48625442E-16 + -4.00000000 -3.23420621E-15 + -3.83999991 -3.62360144E-15 + -3.68000007 2.42002395E-15 + -3.51999998 1.16952922E-14 + -3.35999990 1.13377766E-14 + -3.20000005 -8.24308917E-15 + -3.03999996 -3.32619301E-14 + -2.88000011 -2.86087716E-14 + -2.72000003 2.18287184E-14 + -2.55999994 7.41381715E-14 + -2.40000010 5.18675780E-14 + -2.24000001 -5.28926607E-14 + -2.07999992 -1.21595740E-13 + -1.91999996 -2.33368250E-14 + -1.75999999 1.68882364E-13 + -1.60000002 1.53584773E-13 + -1.44000006 -2.46122133E-13 + -1.27999997 -6.58336937E-13 + -1.12000000 -3.14295980E-13 + -0.959999979 1.02850302E-12 + -0.800000012 2.25322495E-12 + -0.639999986 1.44704116E-12 + -0.479999989 -2.00853461E-12 + -0.319999993 -5.72611359E-12 + -0.159999996 -5.44309086E-12 + 1.66533454E-16 9.22793959E-13 + 0.159999996 9.79418890E-12 + 0.319999993 1.33481316E-11 + 0.479999989 6.13395619E-12 + 0.639999986 -8.58967324E-12 + 0.800000012 -1.97398591E-11 + 0.959999979 -1.75693262E-11 + 1.12000000 -3.36700329E-12 + 1.27999997 1.07227369E-11 + 1.44000006 1.39176396E-11 + 1.60000002 9.84300922E-12 + 1.75999999 1.42916122E-11 + 1.91999996 3.41486596E-11 + 2.07999992 4.66050080E-11 + 2.24000001 8.07920137E-12 + 2.40000010 -9.87147655E-11 + 2.55999994 -2.14871662E-10 + 2.72000003 -2.14125745E-10 + 2.88000011 6.37893872E-13 + 3.03999996 3.69629466E-10 + 3.20000005 6.40818232E-10 + 3.35999990 5.14161769E-10 + 3.51999998 -9.61679625E-11 + 3.68000007 -8.91347551E-10 + 3.83999991 -1.30868760E-09 + 4.00000000 -9.17390386E-10 + 4.15999985 1.93929789E-10 + 4.32000017 1.38546907E-09 + 4.48000002 1.88449589E-09 + 4.63999987 1.35616640E-09 + 4.80000019 1.53735885E-10 + 4.96000004 -9.81213777E-10 + 5.11999989 -1.51523549E-09 + 5.28000021 -1.48210311E-09 + 5.44000006 -1.28327782E-09 + 5.59999990 -1.14570886E-09 + 5.76000023 -8.04788847E-10 + 5.92000008 2.22940222E-10 + 6.07999992 2.01317807E-09 + 6.23999977 3.91049193E-09 + 6.40000010 4.95217956E-09 + 6.55999994 4.76822892E-09 + 6.71999979 4.11357171E-09 + 6.88000011 4.33804503E-09 + 7.03999996 5.93000005E-09 + 7.19999981 7.10818648E-09 + 7.36000013 3.53275342E-09 + 7.51999998 -1.06255458E-08 + 7.67999983 -4.12115995E-08 + 7.84000015 -9.38264364E-08 + 8.00000000 -1.76000782E-07 + 8.15999985 -3.01812776E-07 + 8.31999969 -4.97814028E-07 + 8.47999954 -8.08938239E-07 + 8.64000034 -1.30406318E-06 + 8.80000019 -2.08243432E-06 + 8.96000004 -3.28310080E-06 + 9.11999989 -5.09915753E-06 + 9.27999973 -7.79715720E-06 + 9.43999958 -1.17405125E-05 + 9.60000038 -1.74149191E-05 + 9.76000023 -2.54537281E-05 + 9.92000008 -3.66611639E-05 + 10.0799999 -5.20303729E-05 + 10.2399998 -7.27519073E-05 + 10.3999996 -1.00206918E-04 + 10.5600004 -1.35938448E-04 + 10.7200003 -1.81593787E-04 + 10.8800001 -2.38831562E-04 + 11.0400000 -3.09188006E-04 + 11.1999998 -3.93901777E-04 + 11.3599997 -4.93701780E-04 + 11.5200005 -6.08570408E-04 + 11.6800003 -7.37499795E-04 + 11.8400002 -8.78262974E-04 + 12.0000000 -1.02722808E-03 + 12.1599998 -1.17924483E-03 + 12.3199997 -1.32763619E-03 + 12.4799995 -1.46432687E-03 + 12.6400003 -1.58012647E-03 + 12.8000002 -1.66517496E-03 + 12.9600000 -1.70953607E-03 + 13.1199999 -1.70390808E-03 + 13.2799997 -1.64041040E-03 + 13.4399996 -1.51337555E-03 + 13.6000004 -1.32007233E-03 + 13.7600002 -1.06127816E-03 + 13.9200001 -7.41625088E-04 + 14.0799999 -3.69668793E-04 + 14.2399998 4.23487218E-05 + 14.3999996 4.79045266E-04 + 14.5600004 9.22726176E-04 + 14.7200003 1.35443697E-03 + 14.8800001 1.75515388E-03 + 15.0400000 2.10700557E-03 + 15.1999998 2.39441660E-03 + 15.3599997 2.60506803E-03 + 15.5200005 2.73060170E-03 + 15.6800003 2.76701455E-03 + 15.8400002 2.71474244E-03 + 16.0000000 2.57844361E-03 + 16.1599998 2.36653839E-03 + 16.3199997 2.09056470E-03 + 16.4799995 1.76441250E-03 + 16.6399994 1.40350580E-03 + 16.7999992 1.02398486E-03 + 16.9599991 6.41933817E-04 + 17.1200008 2.72672187E-04 + 17.2800007 -6.98830190E-05 + 17.4400005 -3.73789255E-04 + 17.6000004 -6.29581278E-04 + 17.7600002 -8.30687117E-04 + 17.9200001 -9.73728253E-04 + 18.0799999 -1.05866441E-03 + 18.2399998 -1.08874426E-03 + 18.3999996 -1.07022584E-03 + 18.5599995 -1.01184787E-03 + 18.7199993 -9.24060587E-04 + 18.8799992 -8.18064902E-04 + 19.0400009 -7.04750535E-04 + 19.2000008 -5.93654288E-04 + 19.3600006 -4.92072082E-04 + 19.5200005 -4.04453342E-04 + 19.6800003 -3.32177558E-04 + 19.8400002 -2.73765327E-04 + 20.0000000 -2.25512966E-04 + 20.1599998 -1.82466247E-04 + 20.3199997 -1.39587151E-04 + 20.4799995 -9.29290545E-05 + 20.6399994 -4.06241670E-05 + 20.7999992 1.64937901E-05 + 20.9599991 7.47632730E-05 + 21.1200008 1.28121828E-04 + 21.2800007 1.69050865E-04 + 21.4400005 1.89908911E-04 + 21.6000004 1.84450371E-04 + 21.7600002 1.49286032E-04 + 21.9200001 8.50394208E-05 + 22.0799999 -3.01332534E-06 + 22.2399998 -1.04963314E-04 + 22.3999996 -2.06993369E-04 + 22.5599995 -2.92740238E-04 + 22.7199993 -3.45124892E-04 + 22.8799992 -3.48409347E-04 + 23.0400009 -2.90207507E-04 + 23.2000008 -1.63179357E-04 + 23.3600006 3.38209538E-05 + 23.5200005 2.95302394E-04 + 23.6800003 6.09457667E-04 + 23.8400002 9.59191646E-04 + 24.0000000 1.32370740E-03 + 24.1599998 1.68043724E-03 + 24.3199997 2.00708257E-03 + 24.4799995 2.28352658E-03 + 24.6399994 2.49341503E-03 + 24.7999992 2.62525491E-03 + 24.9599991 2.67295307E-03 + 25.1200008 2.63579935E-03 + 25.2800007 2.51796120E-03 + 25.4400005 2.32759980E-03 + 25.6000004 2.07573315E-03 + 25.7600002 1.77498022E-03 + 25.9200001 1.43832469E-03 + 26.0799999 1.07801706E-03 + 26.2399998 7.04705191E-04 + 26.3999996 3.26853769E-04 + 26.5599995 -4.95239619E-05 + 26.7199993 -4.20817145E-04 + 26.8799992 -7.85459881E-04 + 27.0400009 -1.14330323E-03 + 27.2000008 -1.49477366E-03 + 27.3600006 -1.83990994E-03 + 27.5200005 -2.17738422E-03 + 27.6800003 -2.50363420E-03 + 27.8400002 -2.81222328E-03 + 28.0000000 -3.09354370E-03 + 28.1599998 -3.33495229E-03 + 28.3199997 -3.52139445E-03 + 28.4799995 -3.63650755E-03 + 28.6399994 -3.66414641E-03 + 28.7999992 -3.59019078E-03 + 28.9599991 -3.40446271E-03 + 29.1200008 -3.10252537E-03 + 29.2800007 -2.68714502E-03 + 29.4400005 -2.16919812E-03 + 29.6000004 -1.56785909E-03 + 29.7600002 -9.09979222E-04 + 29.9200001 -2.28653298E-04 + 30.0799999 4.38950810E-04 + 30.2399998 1.05433445E-03 + 30.3999996 1.58074975E-03 + 30.5599995 1.98634318E-03 + 30.7199993 2.24704994E-03 + 30.8799992 2.34893989E-03 + 31.0400009 2.28977110E-03 + 31.2000008 2.07956927E-03 + 31.3600006 1.74014713E-03 + 31.5200005 1.30356359E-03 + 31.6800003 8.09624908E-04 + 31.8400002 3.02625966E-04 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X80.MXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X80.MXZ.semd new file mode 100644 index 000000000..a7046d2fc --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X80.MXZ.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 0.00000000 + -6.88000011 8.09706324E-27 + -6.71999979 4.53118586E-20 + -6.55999994 1.90140505E-19 + -6.40000010 1.36769390E-19 + -6.23999977 -3.13686973E-19 + -6.07999992 8.10752392E-19 + -5.92000008 4.29056102E-18 + -5.76000023 -3.39956156E-18 + -5.59999990 -3.71263177E-17 + -5.44000006 -3.54108840E-17 + -5.28000021 1.47749558E-16 + -5.11999989 4.13189024E-16 + -4.96000004 2.31516471E-17 + -4.80000019 -1.62048255E-15 + -4.63999987 -2.67447244E-15 + -4.48000002 1.40148176E-15 + -4.32000017 1.10101976E-14 + -4.15999985 1.30288118E-14 + -4.00000000 -1.19693726E-14 + -3.83999991 -5.52087977E-14 + -3.68000007 -5.36088880E-14 + -3.51999998 5.89458292E-14 + -3.35999990 2.22697688E-13 + -3.20000005 2.00797156E-13 + -3.03999996 -2.03106493E-13 + -2.88000011 -7.50572293E-13 + -2.72000003 -7.00606619E-13 + -2.55999994 4.92268390E-13 + -2.40000010 2.13449614E-12 + -2.24000001 2.23799169E-12 + -2.07999992 -6.59914235E-13 + -1.91999996 -5.03549372E-12 + -1.75999999 -6.29224277E-12 + -1.60000002 -7.10907299E-13 + -1.44000006 9.33777881E-12 + -1.27999997 1.48416834E-11 + -1.12000000 7.25632965E-12 + -0.959999979 -1.16954788E-11 + -0.800000012 -2.76391392E-11 + -0.639999986 -2.38045174E-11 + -0.479999989 3.10899375E-12 + -0.319999993 3.61618166E-11 + -0.159999996 4.89381556E-11 + 1.66533454E-16 2.65313188E-11 + 0.159999996 -2.07237300E-11 + 0.319999993 -6.26188060E-11 + 0.479999989 -6.95084823E-11 + 0.639999986 -3.25492341E-11 + 0.800000012 2.96810042E-11 + 0.959999979 8.14242285E-11 + 1.12000000 9.07749917E-11 + 1.27999997 5.02806026E-11 + 1.44000006 -1.59944280E-11 + 1.60000002 -6.76681627E-11 + 1.75999999 -7.91599633E-11 + 1.91999996 -6.18279733E-11 + 2.07999992 -5.12416221E-11 + 2.24000001 -6.29301541E-11 + 2.40000010 -5.88055091E-11 + 2.55999994 2.88318171E-11 + 2.72000003 2.18411955E-10 + 2.88000011 4.13921314E-10 + 3.03999996 4.34129677E-10 + 3.20000005 1.45219614E-10 + 3.35999990 -3.96385175E-10 + 3.51999998 -9.19955390E-10 + 3.68000007 -1.08503317E-09 + 3.83999991 -7.05990821E-10 + 4.00000000 1.11024405E-10 + 4.15999985 1.02706754E-09 + 4.32000017 1.67507208E-09 + 4.48000002 1.83804072E-09 + 4.63999987 1.46342694E-09 + 4.80000019 5.52920265E-10 + 4.96000004 -8.82049156E-10 + 5.11999989 -2.66541389E-09 + 5.28000021 -4.22913038E-09 + 5.44000006 -4.65107242E-09 + 5.59999990 -3.16043858E-09 + 5.76000023 1.61784419E-10 + 5.92000008 4.14593648E-09 + 6.07999992 7.21635329E-09 + 6.23999977 8.65357475E-09 + 6.40000010 9.37626154E-09 + 6.55999994 1.13324274E-08 + 6.71999979 1.56727218E-08 + 6.88000011 2.09855493E-08 + 7.03999996 2.28961099E-08 + 7.19999981 1.50927963E-08 + 7.36000013 -9.59853885E-09 + 7.51999998 -5.98010388E-08 + 7.67999983 -1.48519391E-07 + 7.84000015 -2.97839676E-07 + 8.00000000 -5.44664601E-07 + 8.15999985 -9.47925514E-07 + 8.31999969 -1.59904209E-06 + 8.47999954 -2.63766333E-06 + 8.64000034 -4.27383384E-06 + 8.80000019 -6.81683059E-06 + 8.96000004 -1.07111000E-05 + 9.11999989 -1.65806159E-05 + 9.27999973 -2.52832979E-05 + 9.43999958 -3.79755802E-05 + 9.60000038 -5.61840207E-05 + 9.76000023 -8.18773333E-05 + 9.92000008 -1.17529773E-04 + 10.0799999 -1.66164478E-04 + 10.2399998 -2.31363840E-04 + 10.3999996 -3.17229162E-04 + 10.5600004 -4.28270258E-04 + 10.7200003 -5.69202879E-04 + 10.8800001 -7.44636694E-04 + 11.0400000 -9.58644494E-04 + 11.1999998 -1.21421623E-03 + 11.3599997 -1.51261478E-03 + 11.5200005 -1.85266428E-03 + 11.6800003 -2.23002373E-03 + 11.8400002 -2.63650925E-03 + 12.0000000 -3.05956160E-03 + 12.1599998 -3.48194689E-03 + 12.3199997 -3.88179510E-03 + 12.4799995 -4.23305156E-03 + 12.6400003 -4.50640637E-03 + 12.8000002 -4.67072381E-03 + 12.9600000 -4.69494006E-03 + 13.1199999 -4.55036154E-03 + 13.2799997 -4.21320600E-03 + 13.4399996 -3.66720906E-03 + 13.6000004 -2.90603726E-03 + 13.7600002 -1.93526654E-03 + 13.9200001 -7.73675216E-04 + 14.0799999 5.46354917E-04 + 14.2399998 1.97948213E-03 + 14.3999996 3.46916099E-03 + 14.5600004 4.95047821E-03 + 14.7200003 6.35391474E-03 + 14.8800001 7.60977622E-03 + 15.0400000 8.65293387E-03 + 15.1999998 9.42748599E-03 + 15.3599997 9.89092328E-03 + 15.5200005 1.00174025E-02 + 15.6800003 9.79983713E-03 + 15.8400002 9.25057568E-03 + 16.0000000 8.40058643E-03 + 16.1599998 7.29721598E-03 + 16.3199997 6.00072183E-03 + 16.4799995 4.57988866E-03 + 16.6399994 3.10713286E-03 + 16.7999992 1.65351573E-03 + 16.9599991 2.84100359E-04 + 17.1200008 -9.45988577E-04 + 17.2800007 -1.99450599E-03 + 17.4400005 -2.83385324E-03 + 17.6000004 -3.45160486E-03 + 17.7600002 -3.84984538E-03 + 17.9200001 -4.04347060E-03 + 18.0799999 -4.05767933E-03 + 18.2399998 -3.92493606E-03 + 18.3999996 -3.68170300E-03 + 18.5599995 -3.36522143E-03 + 18.7199993 -3.01060267E-03 + 18.8799992 -2.64843297E-03 + 19.0400009 -2.30303197E-03 + 19.2000008 -1.99145311E-03 + 19.3600006 -1.72323629E-03 + 19.5200005 -1.50087394E-03 + 19.6800003 -1.32089143E-03 + 19.8400002 -1.17539952E-03 + 20.0000000 -1.05394097E-03 + 20.1599998 -9.45429900E-04 + 20.3199997 -8.39984044E-04 + 20.4799995 -7.30451604E-04 + 20.6399994 -6.13467942E-04 + 20.7999992 -4.89914499E-04 + 20.9599991 -3.64717504E-04 + 21.1200008 -2.45996285E-04 + 21.2800007 -1.43654004E-04 + 21.4400005 -6.75793053E-05 + 21.6000004 -2.56929070E-05 + 21.7600002 -2.21134997E-05 + 21.9200001 -5.57287858E-05 + 22.0799999 -1.19429882E-04 + 22.2399998 -2.00208291E-04 + 22.3999996 -2.80222885E-04 + 22.5599995 -3.38830258E-04 + 22.7199993 -3.55439406E-04 + 22.8799992 -3.12919961E-04 + 23.0400009 -2.01177521E-04 + 23.2000008 -2.04436874E-05 + 23.3600006 2.16181492E-04 + 23.5200005 4.81355150E-04 + 23.6800003 7.33610301E-04 + 23.8400002 9.19166079E-04 + 24.0000000 9.75456205E-04 + 24.1599998 8.36208172E-04 + 24.3199997 4.37708397E-04 + 24.4799995 -2.74273567E-04 + 24.6399994 -1.33753277E-03 + 24.7999992 -2.76711932E-03 + 24.9599991 -4.55032941E-03 + 25.1200008 -6.64359098E-03 + 25.2800007 -8.97168089E-03 + 25.4400005 -1.14295492E-02 + 25.6000004 -1.38867674E-02 + 25.7600002 -1.61944199E-02 + 25.9200001 -1.81939919E-02 + 26.0799999 -1.97276771E-02 + 26.2399998 -2.06493363E-02 + 26.3999996 -2.08353195E-02 + 26.5599995 -2.01942250E-02 + 26.7199993 -1.86748970E-02 + 26.8799992 -1.62719321E-02 + 27.0400009 -1.30282864E-02 + 27.2000008 -9.03467927E-03 + 27.3600006 -4.42580599E-03 + 27.5200005 6.26389054E-04 + 27.6800003 5.92192449E-03 + 27.8400002 1.12438118E-02 + 28.0000000 1.63701158E-02 + 28.1599998 2.10862048E-02 + 28.3199997 2.51964033E-02 + 28.4799995 2.85342261E-02 + 28.6399994 3.09706181E-02 + 28.7999992 3.24197374E-02 + 28.9599991 3.28420326E-02 + 29.1200008 3.22446190E-02 + 29.2800007 3.06790248E-02 + 29.4400005 2.82366686E-02 + 29.6000004 2.50424221E-02 + 29.7600002 2.12468430E-02 + 29.9200001 1.70175787E-02 + 30.0799999 1.25304824E-02 + 30.2399998 7.96094909E-03 + 30.3999996 3.47595220E-03 + 30.5599995 -7.72872008E-04 + 30.7199993 -4.65476187E-03 + 30.8799992 -8.06380901E-03 + 31.0400009 -1.09212995E-02 + 31.2000008 -1.31764216E-02 + 31.3600006 -1.48054697E-02 + 31.5200005 -1.58097427E-02 + 31.6800003 -1.62124448E-02 + 31.8400002 -1.60549078E-02 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X85.MXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X85.MXX.semd new file mode 100644 index 000000000..d7b91bdf2 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X85.MXX.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 -1.40129846E-45 + -6.88000011 3.64166553E-24 + -6.71999979 3.94421838E-23 + -6.55999994 7.95773144E-22 + -6.40000010 6.15772029E-21 + -6.23999977 2.28517934E-20 + -6.07999992 3.90886137E-20 + -5.92000008 -9.49045804E-21 + -5.76000023 -1.69832329E-19 + -5.59999990 -1.97325344E-19 + -5.44000006 4.90821213E-19 + -5.28000021 1.68643195E-18 + -5.11999989 7.28921430E-19 + -4.96000004 -5.29258528E-18 + -4.80000019 -1.06224805E-17 + -4.63999987 3.01081356E-18 + -4.48000002 4.18052350E-17 + -4.32000017 5.59459438E-17 + -4.15999985 -4.26908543E-17 + -4.00000000 -2.30553713E-16 + -3.83999991 -2.29438700E-16 + -3.68000007 2.76207809E-16 + -3.51999998 9.98943542E-16 + -3.35999990 7.81703519E-16 + -3.20000005 -1.21284530E-15 + -3.03999996 -3.43539750E-15 + -2.88000011 -2.08839721E-15 + -2.72000003 4.26853191E-15 + -2.55999994 9.59829699E-15 + -2.40000010 3.82669496E-15 + -2.24000001 -1.30565817E-14 + -2.07999992 -2.18275562E-14 + -1.91999996 -8.58307273E-16 + -1.75999999 3.79342655E-14 + -1.60000002 4.11212270E-14 + -1.44000006 -2.80646935E-14 + -1.27999997 -1.10662137E-13 + -1.12000000 -7.08170705E-14 + -0.959999979 1.38479885E-13 + -0.800000012 3.19863927E-13 + -0.639999986 1.47856011E-13 + -0.479999989 -4.20163687E-13 + -0.319999993 -8.57707134E-13 + -0.159999996 -4.26040822E-13 + 1.66533454E-16 9.17669044E-13 + 0.159999996 2.00162911E-12 + 0.319999993 1.25830520E-12 + 0.479999989 -1.46570202E-12 + 0.639999986 -3.94639226E-12 + 0.800000012 -3.10847658E-12 + 0.959999979 1.68404548E-12 + 1.12000000 6.75661133E-12 + 1.27999997 6.45548285E-12 + 1.44000006 -1.30565643E-12 + 1.60000002 -1.11982689E-11 + 1.75999999 -1.31024792E-11 + 1.91999996 -8.54590324E-13 + 2.07999992 1.94578693E-11 + 2.24000001 3.00075728E-11 + 2.40000010 1.36277543E-11 + 2.55999994 -2.85303777E-11 + 2.72000003 -6.83331447E-11 + 2.88000011 -6.36741146E-11 + 3.03999996 7.98061617E-12 + 3.20000005 1.16839052E-10 + 3.35999990 1.80935697E-10 + 3.51999998 1.16268523E-10 + 3.68000007 -8.61870991E-11 + 3.83999991 -3.17044890E-10 + 4.00000000 -3.93939242E-10 + 4.15999985 -1.89794153E-10 + 4.32000017 2.40856640E-10 + 4.48000002 6.48037901E-10 + 4.63999987 7.27818472E-10 + 4.80000019 3.39263423E-10 + 4.96000004 -3.61838448E-10 + 5.11999989 -9.88809479E-10 + 5.28000021 -1.16129328E-09 + 5.44000006 -7.49597273E-10 + 5.59999990 5.15320495E-11 + 5.76000023 8.68947081E-10 + 5.92000008 1.39445744E-09 + 6.07999992 1.52926183E-09 + 6.23999977 1.32537314E-09 + 6.40000010 8.08015210E-10 + 6.55999994 -1.15781711E-10 + 6.71999979 -1.52560931E-09 + 6.88000011 -3.21736371E-09 + 7.03999996 -4.55957716E-09 + 7.19999981 -4.69174211E-09 + 7.36000013 -2.99960323E-09 + 7.51999998 4.75264272E-10 + 7.67999983 5.03409225E-09 + 7.84000015 9.74536629E-09 + 8.00000000 1.39278118E-08 + 8.15999985 1.72313506E-08 + 8.31999969 1.91552676E-08 + 8.47999954 1.82724591E-08 + 8.64000034 1.15980781E-08 + 8.80000019 -5.70595216E-09 + 8.96000004 -4.05650589E-08 + 9.11999989 -1.02789180E-07 + 9.27999973 -2.07115306E-07 + 9.43999958 -3.77039242E-07 + 9.60000038 -6.50832817E-07 + 9.76000023 -1.09013172E-06 + 9.92000008 -1.79165124E-06 + 10.0799999 -2.90294429E-06 + 10.2399998 -4.64358573E-06 + 10.3999996 -7.33351771E-06 + 10.5600004 -1.14302975E-05 + 10.7200003 -1.75763871E-05 + 10.8800001 -2.66565621E-05 + 11.0400000 -3.98640004E-05 + 11.1999998 -5.87717514E-05 + 11.3599997 -8.54039317E-05 + 11.5200005 -1.22297715E-04 + 11.6800003 -1.72544140E-04 + 11.8400002 -2.39792207E-04 + 12.0000000 -3.28198308E-04 + 12.1599998 -4.42301884E-04 + 12.3199997 -5.86808252E-04 + 12.4799995 -7.66264799E-04 + 12.6400003 -9.84623912E-04 + 12.8000002 -1.24469830E-03 + 12.9600000 -1.54752936E-03 + 13.1199999 -1.89170463E-03 + 13.2799997 -2.27268017E-03 + 13.4399996 -2.68218014E-03 + 13.6000004 -3.10775894E-03 + 13.7600002 -3.53261549E-03 + 13.9200001 -3.93575197E-03 + 14.0799999 -4.29253653E-03 + 14.2399998 -4.57571354E-03 + 14.3999996 -4.75685531E-03 + 14.5600004 -4.80820518E-03 + 14.7200003 -4.70480137E-03 + 14.8800001 -4.42674197E-03 + 15.0400000 -3.96137731E-03 + 15.1999998 -3.30523658E-03 + 15.3599997 -2.46545463E-03 + 15.5200005 -1.46052358E-03 + 15.6800003 -3.20214458E-04 + 15.8400002 9.15403361E-04 + 16.0000000 2.19783490E-03 + 16.1599998 3.47282505E-03 + 16.3199997 4.68362356E-03 + 16.4799995 5.77459298E-03 + 16.6399994 6.69485517E-03 + 16.7999992 7.40166660E-03 + 16.9599991 7.86322821E-03 + 17.1200008 8.06069933E-03 + 17.2800007 7.98925199E-03 + 17.4400005 7.65810534E-03 + 17.6000004 7.08957249E-03 + 17.7600002 6.31723227E-03 + 17.9200001 5.38342819E-03 + 18.0799999 4.33633244E-03 + 18.2399998 3.22682969E-03 + 18.3999996 2.10546725E-03 + 18.5599995 1.01968308E-03 + 18.7199993 1.14610839E-05 + 18.8799992 -8.84484150E-04 + 19.0400009 -1.64194114E-03 + 19.2000008 -2.24385504E-03 + 19.3600006 -2.68243672E-03 + 19.5200005 -2.95878854E-03 + 19.6800003 -3.08211707E-03 + 19.8400002 -3.06860800E-03 + 20.0000000 -2.94002518E-03 + 20.1599998 -2.72210781E-03 + 20.3199997 -2.44283723E-03 + 20.4799995 -2.13065604E-03 + 20.6399994 -1.81272766E-03 + 20.7999992 -1.51334028E-03 + 20.9599991 -1.25255564E-03 + 21.1200008 -1.04520575E-03 + 21.2800007 -9.00315295E-04 + 21.4400005 -8.20993097E-04 + 21.6000004 -8.04793905E-04 + 21.7600002 -8.44504626E-04 + 21.9200001 -9.29268484E-04 + 22.0799999 -1.04591984E-03 + 22.2399998 -1.18038070E-03 + 22.3999996 -1.31896068E-03 + 22.5599995 -1.44942128E-03 + 22.7199993 -1.56170467E-03 + 22.8799992 -1.64827367E-03 + 23.0400009 -1.70406816E-03 + 23.2000008 -1.72612839E-03 + 23.3600006 -1.71298429E-03 + 23.5200005 -1.66393723E-03 + 23.6800003 -1.57836976E-03 + 23.8400002 -1.45519816E-03 + 24.0000000 -1.29255082E-03 + 24.1599998 -1.08771748E-03 + 24.3199997 -8.37368658E-04 + 24.4799995 -5.38010499E-04 + 24.6399994 -1.86600562E-04 + 24.7999992 2.18767294E-04 + 24.9599991 6.78204524E-04 + 25.1200008 1.18947343E-03 + 25.2800007 1.74758851E-03 + 25.4400005 2.34460412E-03 + 25.6000004 2.96959584E-03 + 25.7600002 3.60882166E-03 + 25.9200001 4.24603326E-03 + 26.0799999 4.86289198E-03 + 26.2399998 5.43945329E-03 + 26.3999996 5.95470378E-03 + 26.5599995 6.38714246E-03 + 26.7199993 6.71541970E-03 + 26.8799992 6.91903988E-03 + 27.0400009 6.97915303E-03 + 27.2000008 6.87944889E-03 + 27.3600006 6.60714786E-03 + 27.5200005 6.15407526E-03 + 27.6800003 5.51774260E-03 + 27.8400002 4.70235059E-03 + 28.0000000 3.71958385E-03 + 28.1599998 2.58909655E-03 + 28.3199997 1.33855967E-03 + 28.4799995 3.19163587E-06 + 28.6399994 -1.37528055E-03 + 28.7999992 -2.75023328E-03 + 28.9599991 -4.07226803E-03 + 29.1200008 -5.29173110E-03 + 29.2800007 -6.36147056E-03 + 29.4400005 -7.23961974E-03 + 29.6000004 -7.89219886E-03 + 29.7600002 -8.29532184E-03 + 29.9200001 -8.43680371E-03 + 30.0799999 -8.31704494E-03 + 30.2399998 -7.94908497E-03 + 30.3999996 -7.35780271E-03 + 30.5599995 -6.57832716E-03 + 30.7199993 -5.65375574E-03 + 30.8799992 -4.63236449E-03 + 31.0400009 -3.56451771E-03 + 31.2000008 -2.49950378E-03 + 31.3600006 -1.48254086E-03 + 31.5200005 -5.52176149E-04 + 31.6800003 2.61725421E-04 + 31.8400002 9.39253950E-04 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X85.MXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X85.MXY.semd new file mode 100644 index 000000000..d779dbac4 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X85.MXY.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 0.00000000 + -6.88000011 -6.59977875E-24 + -6.71999979 5.51347319E-23 + -6.55999994 1.22157986E-21 + -6.40000010 5.75688828E-21 + -6.23999977 1.09592505E-20 + -6.07999992 4.83477536E-21 + -5.92000008 -6.64864148E-21 + -5.76000023 2.31828126E-20 + -5.59999990 7.71226820E-20 + -5.44000006 -2.25077266E-20 + -5.28000021 -2.21788939E-19 + -5.11999989 2.09441692E-19 + -4.96000004 1.27128272E-18 + -4.80000019 -6.40088255E-20 + -4.63999987 -5.60487740E-18 + -4.48000002 -4.24667247E-18 + -4.32000017 2.17001536E-17 + -4.15999985 4.86519214E-17 + -4.00000000 -1.52069761E-17 + -3.83999991 -2.02033465E-16 + -3.68000007 -2.53253137E-16 + -3.51999998 2.71897179E-16 + -3.35999990 1.20227359E-15 + -3.20000005 1.06366798E-15 + -3.03999996 -1.70673295E-15 + -2.88000011 -5.45947421E-15 + -2.72000003 -4.02107843E-15 + -2.55999994 7.27586225E-15 + -2.40000010 2.07156358E-14 + -2.24000001 1.50367068E-14 + -2.07999992 -2.30897946E-14 + -1.91999996 -6.80147331E-14 + -1.75999999 -5.61469782E-14 + -1.60000002 5.27411807E-14 + -1.44000006 1.94143340E-13 + -1.27999997 1.99264623E-13 + -1.12000000 -5.97138712E-14 + -0.959999979 -4.67949084E-13 + -0.800000012 -6.30469364E-13 + -0.639999986 -1.54971779E-13 + -0.479999989 8.77672446E-13 + -0.319999993 1.68264827E-12 + -0.159999996 1.18755656E-12 + 1.66533454E-16 -9.67078631E-13 + 0.159999996 -3.57199209E-12 + 0.319999993 -4.15018324E-12 + 0.479999989 -8.06839133E-13 + 0.639999986 5.40943288E-12 + 0.800000012 9.87102240E-12 + 0.959999979 7.16568471E-12 + 1.12000000 -3.75121418E-12 + 1.27999997 -1.63172843E-11 + 1.44000006 -1.94505696E-11 + 1.60000002 -6.61804249E-12 + 1.75999999 1.61032489E-11 + 1.91999996 3.17222255E-11 + 2.07999992 2.53339589E-11 + 2.24000001 -1.49482835E-12 + 2.40000010 -2.92057524E-11 + 2.55999994 -3.59669412E-11 + 2.72000003 -1.78496402E-11 + 2.88000011 6.63354267E-12 + 3.03999996 1.47831625E-11 + 3.20000005 4.49749526E-12 + 3.35999990 -9.69000596E-13 + 3.51999998 2.20315953E-11 + 3.68000007 6.43189113E-11 + 3.83999991 7.85760554E-11 + 4.00000000 1.73843422E-11 + 4.15999985 -1.11857239E-10 + 4.32000017 -2.26577354E-10 + 4.48000002 -2.15073584E-10 + 4.63999987 -2.66823629E-11 + 4.80000019 2.61709598E-10 + 4.96000004 4.66057803E-10 + 5.11999989 4.06987694E-10 + 5.28000021 4.53312596E-11 + 5.44000006 -4.55754878E-10 + 5.59999990 -7.98271338E-10 + 5.76000023 -7.17507609E-10 + 5.92000008 -1.53695515E-10 + 6.07999992 6.74590384E-10 + 6.23999977 1.34253919E-09 + 6.40000010 1.41313483E-09 + 6.55999994 6.77273460E-10 + 6.71999979 -6.66993516E-10 + 6.88000011 -2.01404426E-09 + 7.03999996 -2.60413446E-09 + 7.19999981 -1.96760830E-09 + 7.36000013 -3.05539011E-10 + 7.51999998 1.52705049E-09 + 7.67999983 2.56989718E-09 + 7.84000015 2.53992249E-09 + 8.00000000 2.21324292E-09 + 8.15999985 2.91419466E-09 + 8.31999969 5.27233146E-09 + 8.47999954 8.10209855E-09 + 8.64000034 8.34138891E-09 + 8.80000019 2.22464536E-09 + 8.96000004 -1.32286333E-08 + 9.11999989 -3.98541999E-08 + 9.27999973 -7.99890501E-08 + 9.43999958 -1.39727547E-07 + 9.60000038 -2.32461446E-07 + 9.76000023 -3.81634322E-07 + 9.92000008 -6.22973744E-07 + 10.0799999 -1.00786201E-06 + 10.2399998 -1.60986770E-06 + 10.3999996 -2.53553594E-06 + 10.5600004 -3.93908249E-06 + 10.7200003 -6.03985109E-06 + 10.8800001 -9.14168413E-06 + 11.0400000 -1.36541848E-05 + 11.1999998 -2.01160801E-05 + 11.3599997 -2.92197437E-05 + 11.5200005 -4.18338313E-05 + 11.6800003 -5.90189666E-05 + 11.8400002 -8.20301502E-05 + 12.0000000 -1.12299356E-04 + 12.1599998 -1.51392087E-04 + 12.3199997 -2.00931841E-04 + 12.4799995 -2.62488436E-04 + 12.6400003 -3.37427540E-04 + 12.8000002 -4.26722720E-04 + 12.9600000 -5.30736754E-04 + 13.1199999 -6.48985151E-04 + 13.2799997 -7.79900642E-04 + 13.4399996 -9.20625345E-04 + 13.6000004 -1.06685993E-03 + 13.7600002 -1.21280155E-03 + 13.9200001 -1.35119772E-03 + 14.0799999 -1.47354312E-03 + 14.2399998 -1.57042942E-03 + 14.3999996 -1.63205201E-03 + 14.5600004 -1.64885656E-03 + 14.7200003 -1.61228538E-03 + 14.8800001 -1.51556847E-03 + 15.0400000 -1.35448447E-03 + 15.1999998 -1.12801662E-03 + 15.3599997 -8.38828739E-04 + 15.5200005 -4.93497879E-04 + 15.6800003 -1.02456419E-04 + 15.8400002 3.20378022E-04 + 16.0000000 7.58281385E-04 + 16.1599998 1.19267020E-03 + 16.3199997 1.60424609E-03 + 16.4799995 1.97423995E-03 + 16.6399994 2.28564651E-03 + 16.7999992 2.52433843E-03 + 16.9599991 2.67995964E-03 + 17.1200008 2.74653570E-03 + 17.2800007 2.72275344E-03 + 17.4400005 2.61190720E-03 + 17.6000004 2.42153113E-03 + 17.7600002 2.16276431E-03 + 17.9200001 1.84951874E-03 + 18.0799999 1.49753387E-03 + 18.2399998 1.12340576E-03 + 18.3999996 7.43658631E-04 + 18.5599995 3.73915507E-04 + 18.7199993 2.81961420E-05 + 18.8799992 -2.81634828E-04 + 19.0400009 -5.46268246E-04 + 19.2000008 -7.59199844E-04 + 19.3600006 -9.16838297E-04 + 19.5200005 -1.01848261E-03 + 19.6800003 -1.06617634E-03 + 19.8400002 -1.06444629E-03 + 20.0000000 -1.01992988E-03 + 20.1599998 -9.40901518E-04 + 20.3199997 -8.36708990E-04 + 20.4799995 -7.17140560E-04 + 20.6399994 -5.91751654E-04 + 20.7999992 -4.69195540E-04 + 20.9599991 -3.56613338E-04 + 21.1200008 -2.59139517E-04 + 21.2800007 -1.79575814E-04 + 21.4400005 -1.18272153E-04 + 21.6000004 -7.32388071E-05 + 21.7600002 -4.04971652E-05 + 21.9200001 -1.46519105E-05 + 22.0799999 1.03597140E-05 + 22.2399998 4.04119637E-05 + 22.3999996 8.03158400E-05 + 22.5599995 1.33021153E-04 + 22.7199993 1.98990514E-04 + 22.8799992 2.75832339E-04 + 23.0400009 3.58261837E-04 + 23.2000008 4.38427785E-04 + 23.3600006 5.06603392E-04 + 23.5200005 5.52193553E-04 + 23.6800003 5.64970600E-04 + 23.8400002 5.36415610E-04 + 24.0000000 4.61016200E-04 + 24.1599998 3.37359263E-04 + 24.3199997 1.68868195E-04 + 24.4799995 -3.59372498E-05 + 24.6399994 -2.63733033E-04 + 24.7999992 -4.97252855E-04 + 24.9599991 -7.16678158E-04 + 25.1200008 -9.01449996E-04 + 25.2800007 -1.03233452E-03 + 25.4400005 -1.09352532E-03 + 25.6000004 -1.07454392E-03 + 25.7600002 -9.71708039E-04 + 25.9200001 -7.88982376E-04 + 26.0799999 -5.38079825E-04 + 26.2399998 -2.37765053E-04 + 26.3999996 8.76114136E-05 + 26.5599995 4.10227192E-04 + 26.7199993 7.01357494E-04 + 26.8799992 9.34147625E-04 + 27.0400009 1.08631002E-03 + 27.2000008 1.14246726E-03 + 27.3600006 1.09589566E-03 + 27.5200005 9.49476031E-04 + 27.6800003 7.15741888E-04 + 27.8400002 4.16000839E-04 + 28.0000000 7.85996526E-05 + 28.1599998 -2.63513823E-04 + 28.3199997 -5.75711019E-04 + 28.4799995 -8.24819726E-04 + 28.6399994 -9.82189551E-04 + 28.7999992 -1.02641096E-03 + 28.9599991 -9.45441483E-04 + 29.1200008 -7.37951894E-04 + 29.2800007 -4.13774105E-04 + 29.4400005 6.59516854E-06 + 29.6000004 4.93401312E-04 + 29.7600002 1.00983866E-03 + 29.9200001 1.51487917E-03 + 30.0799999 1.96649600E-03 + 30.2399998 2.32502166E-03 + 30.3999996 2.55637802E-03 + 30.5599995 2.63492018E-03 + 30.7199993 2.54566618E-03 + 30.8799992 2.28573312E-03 + 31.0400009 1.86485099E-03 + 31.2000008 1.30491180E-03 + 31.3600006 6.38585188E-04 + 31.5200005 -9.28935260E-05 + 31.6800003 -8.42602109E-04 + 31.8400002 -1.56126020E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X85.MXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X85.MXZ.semd new file mode 100644 index 000000000..f38f4058b --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X85.MXZ.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 0.00000000 + -6.88000011 1.04234977E-29 + -6.71999979 7.62337067E-23 + -6.55999994 8.64096072E-22 + -6.40000010 5.11744333E-21 + -6.23999977 1.86676828E-20 + -6.07999992 4.04988016E-20 + -5.92000008 3.47150836E-20 + -5.76000023 -7.04498483E-20 + -5.59999990 -2.59308999E-19 + -5.44000006 -2.21748614E-19 + -5.28000021 5.58374314E-19 + -5.11999989 2.01610695E-18 + -4.96000004 2.41646071E-18 + -4.80000019 -1.44199770E-18 + -4.63999987 -1.06864977E-17 + -4.48000002 -1.73263286E-17 + -4.32000017 -6.33404248E-19 + -4.15999985 5.53769892E-17 + -4.00000000 1.13260375E-16 + -3.83999991 5.01459585E-17 + -3.68000007 -2.39296310E-16 + -3.51999998 -5.71187509E-16 + -3.35999990 -3.41329661E-16 + -3.20000005 9.17673377E-16 + -3.03999996 2.36003581E-15 + -2.88000011 1.54694654E-15 + -2.72000003 -3.06928212E-15 + -2.55999994 -8.05471836E-15 + -2.40000010 -5.11803480E-15 + -2.24000001 9.65488641E-15 + -2.07999992 2.38909895E-14 + -1.91999996 1.28736895E-14 + -1.75999999 -3.06969551E-14 + -1.60000002 -6.62878362E-14 + -1.44000006 -2.58869938E-14 + -1.27999997 9.96134463E-14 + -1.12000000 1.87962479E-13 + -0.959999979 5.71680968E-14 + -0.800000012 -3.02648450E-13 + -0.639999986 -5.55918647E-13 + -0.479999989 -2.17873489E-13 + -0.319999993 7.66165343E-13 + -0.159999996 1.58582544E-12 + 1.66533454E-16 9.88965420E-13 + 0.159999996 -1.38991553E-12 + 0.319999993 -3.91972002E-12 + 0.479999989 -3.64189668E-12 + 0.639999986 1.01437272E-12 + 0.800000012 7.56331196E-12 + 0.959999979 1.00048849E-11 + 1.12000000 3.58485854E-12 + 1.27999997 -9.56627312E-12 + 1.44000006 -1.96788506E-11 + 1.60000002 -1.61717861E-11 + 1.75999999 2.40496533E-12 + 1.91999996 2.44681688E-11 + 2.07999992 3.29544794E-11 + 2.24000001 1.93032222E-11 + 2.40000010 -8.59083204E-12 + 2.55999994 -3.25956206E-11 + 2.72000003 -3.93179135E-11 + 2.88000011 -2.91281096E-11 + 3.03999996 -1.05851742E-11 + 3.20000005 1.18855620E-11 + 3.35999990 4.05396897E-11 + 3.51999998 7.17901086E-11 + 3.68000007 8.40977912E-11 + 3.83999991 4.74121784E-11 + 4.00000000 -4.55615996E-11 + 4.15999985 -1.54396204E-10 + 4.32000017 -2.03877804E-10 + 4.48000002 -1.35301714E-10 + 4.63999987 4.12561652E-11 + 4.80000019 2.37478731E-10 + 4.96000004 3.31806610E-10 + 5.11999989 2.41067583E-10 + 5.28000021 -2.25567412E-11 + 5.44000006 -3.37562367E-10 + 5.59999990 -5.13950660E-10 + 5.76000023 -3.87599591E-10 + 5.92000008 6.06515047E-11 + 6.07999992 6.34190978E-10 + 6.23999977 9.84039628E-10 + 6.40000010 8.17730605E-10 + 6.55999994 1.27299574E-10 + 6.71999979 -7.62558017E-10 + 6.88000011 -1.41533851E-09 + 7.03999996 -1.61727076E-09 + 7.19999981 -1.51244883E-09 + 7.36000013 -1.35232769E-09 + 7.51999998 -1.03051534E-09 + 7.67999983 1.49188273E-10 + 7.84000015 3.12252513E-09 + 8.00000000 8.23532265E-09 + 8.15999985 1.44772336E-08 + 8.31999969 1.93453626E-08 + 8.47999954 1.94401490E-08 + 8.64000034 1.12795080E-08 + 8.80000019 -8.47834425E-09 + 8.96000004 -4.39721930E-08 + 9.11999989 -1.02247505E-07 + 9.27999973 -1.96151305E-07 + 9.43999958 -3.47733931E-07 + 9.60000038 -5.92463948E-07 + 9.76000023 -9.85228212E-07 + 9.92000008 -1.60942602E-06 + 10.0799999 -2.59036665E-06 + 10.2399998 -4.11386191E-06 + 10.3999996 -6.45073533E-06 + 10.5600004 -9.98796986E-06 + 10.7200003 -1.52671164E-05 + 10.8800001 -2.30300375E-05 + 11.0400000 -3.42707717E-05 + 11.1999998 -5.02906805E-05 + 11.3599997 -7.27517690E-05 + 11.5200005 -1.03720675E-04 + 11.6800003 -1.45693033E-04 + 11.8400002 -2.01584873E-04 + 12.0000000 -2.74676509E-04 + 12.1599998 -3.68493609E-04 + 12.3199997 -4.86611272E-04 + 12.4799995 -6.32371870E-04 + 12.6400003 -8.08509998E-04 + 12.8000002 -1.01669098E-03 + 12.9600000 -1.25698023E-03 + 13.1199999 -1.52727601E-03 + 13.2799997 -1.82275358E-03 + 13.4399996 -2.13538646E-03 + 13.6000004 -2.45361240E-03 + 13.7600002 -2.76222290E-03 + 13.9200001 -3.04255146E-03 + 14.0799999 -3.27302213E-03 + 14.2399998 -3.43008921E-03 + 14.3999996 -3.48957302E-03 + 14.5600004 -3.42834205E-03 + 14.7200003 -3.22624692E-03 + 14.8800001 -2.86817108E-03 + 15.0400000 -2.34601670E-03 + 15.1999998 -1.66043360E-03 + 15.3599997 -8.22072674E-04 + 15.5200005 1.47815241E-04 + 15.6800003 1.21758680E-03 + 15.8400002 2.34629586E-03 + 16.0000000 3.48566263E-03 + 16.1599998 4.58282791E-03 + 16.3199997 5.58370259E-03 + 16.4799995 6.43664692E-03 + 16.6399994 7.09617557E-03 + 16.7999992 7.52634089E-03 + 16.9599991 7.70349149E-03 + 17.1200008 7.61812599E-03 + 17.2800007 7.27566145E-03 + 17.4400005 6.69603096E-03 + 17.6000004 5.91215352E-03 + 17.7600002 4.96741943E-03 + 17.9200001 3.91244004E-03 + 18.0799999 2.80135917E-03 + 18.2399998 1.68806943E-03 + 18.3999996 6.22658932E-04 + 18.5599995 -3.51618306E-04 + 18.7199993 -1.20062160E-03 + 18.8799992 -1.90072018E-03 + 19.0400009 -2.43926910E-03 + 19.2000008 -2.81421491E-03 + 19.3600006 -3.03296302E-03 + 19.5200005 -3.11068213E-03 + 19.6800003 -3.06825433E-03 + 19.8400002 -2.93008285E-03 + 20.0000000 -2.72194529E-03 + 20.1599998 -2.46904790E-03 + 20.3199997 -2.19439087E-03 + 20.4799995 -1.91751565E-03 + 20.6399994 -1.65365823E-03 + 20.7999992 -1.41330028E-03 + 20.9599991 -1.20208948E-03 + 21.1200008 -1.02108438E-03 + 21.2800007 -8.67279014E-04 + 21.4400005 -7.34364381E-04 + 21.6000004 -6.13684417E-04 + 21.7600002 -4.95338056E-04 + 21.9200001 -3.69379297E-04 + 22.0799999 -2.27054203E-04 + 22.2399998 -6.20053470E-05 + 22.3999996 1.28645275E-04 + 22.5599995 3.43440042E-04 + 22.7199993 5.76068065E-04 + 22.8799992 8.15289153E-04 + 23.0400009 1.04537734E-03 + 23.2000008 1.24712661E-03 + 23.3600006 1.39941182E-03 + 23.5200005 1.48123316E-03 + 23.6800003 1.47409935E-03 + 23.8400002 1.36453041E-03 + 24.0000000 1.14641536E-03 + 24.1599998 8.22931470E-04 + 24.3199997 4.07737942E-04 + 24.4799995 -7.48073799E-05 + 24.6399994 -5.90592448E-04 + 24.7999992 -1.09792722E-03 + 24.9599991 -1.55088329E-03 + 25.1200008 -1.90358085E-03 + 25.2800007 -2.11507431E-03 + 25.4400005 -2.15439149E-03 + 25.6000004 -2.00521061E-03 + 25.7600002 -1.66964799E-03 + 25.9200001 -1.17066281E-03 + 26.0799999 -5.52690180E-04 + 26.2399998 1.19728335E-04 + 26.3999996 7.65368342E-04 + 26.5599995 1.29164837E-03 + 26.7199993 1.60152582E-03 + 26.8799992 1.60144933E-03 + 27.0400009 1.20974600E-03 + 27.2000008 3.64739506E-04 + 27.3600006 -9.68095148E-04 + 27.5200005 -2.79057981E-03 + 27.6800003 -5.06840134E-03 + 27.8400002 -7.73016410E-03 + 28.0000000 -1.06691085E-02 + 28.1599998 -1.37474677E-02 + 28.3199997 -1.68032367E-02 + 28.4799995 -1.96589381E-02 + 28.6399994 -2.21318528E-02 + 28.7999992 -2.40450818E-02 + 28.9599991 -2.52387002E-02 + 29.1200008 -2.55802944E-02 + 29.2800007 -2.49741487E-02 + 29.4400005 -2.33685467E-02 + 29.6000004 -2.07606219E-02 + 29.7600002 -1.71984620E-02 + 29.9200001 -1.27802594E-02 + 30.0799999 -7.65054487E-03 + 30.2399998 -1.99362007E-03 + 30.3999996 3.97536159E-03 + 30.5599995 1.00212358E-02 + 30.7199993 1.59009360E-02 + 30.8799992 2.13761851E-02 + 31.0400009 2.62260288E-02 + 31.2000008 3.02584879E-02 + 31.3600006 3.33205946E-02 + 31.5200005 3.53062972E-02 + 31.6800003 3.61617282E-02 + 31.8400002 3.58875245E-02 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X90.MXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X90.MXX.semd new file mode 100644 index 000000000..e9532d1a9 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X90.MXX.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 0.00000000 + -6.88000011 0.00000000 + -6.71999979 2.50709625E-26 + -6.55999994 4.97774929E-25 + -6.40000010 5.69017322E-24 + -6.23999977 4.04802270E-23 + -6.07999992 1.41430669E-22 + -5.92000008 1.05557667E-22 + -5.76000023 -9.07153589E-22 + -5.59999990 -3.07561706E-21 + -5.44000006 -1.50358312E-21 + -5.28000021 1.20885871E-20 + -5.11999989 2.46395407E-20 + -4.96000004 -1.85810405E-20 + -4.80000019 -1.25823348E-19 + -4.63999987 -7.40572347E-20 + -4.48000002 4.34731957E-19 + -4.32000017 8.59141682E-19 + -4.15999985 -6.52917284E-19 + -4.00000000 -4.42424623E-18 + -3.83999991 -4.02281093E-18 + -3.68000007 1.04949549E-17 + -3.51999998 3.07948754E-17 + -3.35999990 1.20256080E-17 + -3.20000005 -8.31992818E-17 + -3.03999996 -1.69911950E-16 + -2.88000011 -1.31489267E-17 + -2.72000003 4.83086607E-16 + -2.55999994 8.00149250E-16 + -2.40000010 -8.14389753E-17 + -2.24000001 -2.28508292E-15 + -2.07999992 -3.37457270E-15 + -1.91999996 5.32277039E-16 + -1.75999999 9.20579463E-15 + -1.60000002 1.31006927E-14 + -1.44000006 -1.27030029E-15 + -1.27999997 -3.21585376E-14 + -1.12000000 -4.72379907E-14 + -0.959999979 -2.78344323E-15 + -0.800000012 9.72987085E-14 + -0.639999986 1.57085228E-13 + -0.479999989 4.35024297E-14 + -0.319999993 -2.49446514E-13 + -0.159999996 -4.73021253E-13 + 1.66533454E-16 -2.50322983E-13 + 0.159999996 5.10227169E-13 + 0.319999993 1.25647257E-12 + 0.479999989 1.01343933E-12 + 0.639999986 -6.83337067E-13 + 0.800000012 -2.83863601E-12 + 0.959999979 -3.20599905E-12 + 1.12000000 -1.37650186E-13 + 1.27999997 5.12353918E-12 + 1.44000006 8.11425840E-12 + 1.60000002 4.24815218E-12 + 1.75999999 -6.27916209E-12 + 1.91999996 -1.61940669E-11 + 2.07999992 -1.51703042E-11 + 2.24000001 1.10604245E-12 + 2.40000010 2.39163602E-11 + 2.55999994 3.44899838E-11 + 2.72000003 1.80364959E-11 + 2.88000011 -2.07192718E-11 + 3.03999996 -5.50047681E-11 + 3.20000005 -5.33363700E-11 + 3.35999990 -6.67095155E-12 + 3.51999998 5.71923238E-11 + 3.68000007 8.89529006E-11 + 3.83999991 5.63451300E-11 + 4.00000000 -2.42120074E-11 + 4.15999985 -9.34997774E-11 + 4.32000017 -9.49008233E-11 + 4.48000002 -2.44959643E-11 + 4.63999987 5.98556760E-11 + 4.80000019 8.52417234E-11 + 4.96000004 3.03249717E-11 + 5.11999989 -4.87935491E-11 + 5.28000021 -6.45243095E-11 + 5.44000006 1.76484626E-11 + 5.59999990 1.31746877E-10 + 5.76000023 1.53923471E-10 + 5.92000008 1.19623113E-11 + 6.07999992 -2.27703023E-10 + 6.23999977 -3.80046689E-10 + 6.40000010 -2.73255807E-10 + 6.55999994 9.80007811E-11 + 6.71999979 5.21105881E-10 + 6.88000011 6.77934930E-10 + 7.03999996 3.66427166E-10 + 7.19999981 -3.14746784E-10 + 7.36000013 -9.62426694E-10 + 7.51999998 -1.08600506E-09 + 7.67999983 -4.36773701E-10 + 7.84000015 7.58064889E-10 + 8.00000000 1.83867854E-09 + 8.15999985 2.05836836E-09 + 8.31999969 1.05178721E-09 + 8.47999954 -8.71841210E-10 + 8.64000034 -2.83299006E-09 + 8.80000019 -3.85418186E-09 + 8.96000004 -3.39873885E-09 + 9.11999989 -1.59133362E-09 + 9.27999973 1.05386988E-09 + 9.43999958 4.18494084E-09 + 9.60000038 7.96083022E-09 + 9.76000023 1.28150059E-08 + 9.92000008 1.87055118E-08 + 10.0799999 2.43884966E-08 + 10.2399998 2.73059406E-08 + 10.3999996 2.41812899E-08 + 10.5600004 1.16970087E-08 + 10.7200003 -1.37386440E-08 + 10.8800001 -5.78087409E-08 + 11.0400000 -1.31605660E-07 + 11.1999998 -2.55851887E-07 + 11.3599997 -4.65691159E-07 + 11.5200005 -8.16669115E-07 + 11.6800003 -1.39348549E-06 + 11.8400002 -2.32338652E-06 + 12.0000000 -3.79557468E-06 + 12.1599998 -6.08727260E-06 + 12.3199997 -9.59668887E-06 + 12.4799995 -1.48832105E-05 + 12.6400003 -2.27151031E-05 + 12.8000002 -3.41240884E-05 + 12.9600000 -5.04641393E-05 + 13.1199999 -7.34690329E-05 + 13.2799997 -1.05300278E-04 + 13.4399996 -1.48574807E-04 + 13.6000004 -2.06359604E-04 + 13.7600002 -2.82119174E-04 + 13.9200001 -3.79600620E-04 + 14.0799999 -5.02641487E-04 + 14.2399998 -6.54889329E-04 + 14.3999996 -8.39428045E-04 + 14.5600004 -1.05831726E-03 + 14.7200003 -1.31206354E-03 + 14.8800001 -1.59905758E-03 + 15.0400000 -1.91502564E-03 + 15.1999998 -2.25255475E-03 + 15.3599997 -2.60076392E-03 + 15.5200005 -2.94519425E-03 + 15.6800003 -3.26798204E-03 + 15.8400002 -3.54837510E-03 + 16.0000000 -3.76361609E-03 + 16.1599998 -3.89019097E-03 + 16.3199997 -3.90539248E-03 + 16.4799995 -3.78911360E-03 + 16.6399994 -3.52573488E-03 + 16.7999992 -3.10594193E-03 + 16.9599991 -2.52829259E-03 + 17.1200008 -1.80035539E-03 + 17.2800007 -9.39254940E-04 + 17.4400005 2.84846992E-05 + 17.6000004 1.06786028E-03 + 17.7600002 2.13705772E-03 + 17.9200001 3.18977516E-03 + 18.0799999 4.17803461E-03 + 18.2399998 5.05525479E-03 + 18.3999996 5.77933248E-03 + 18.5599995 6.31544972E-03 + 18.7199993 6.63837837E-03 + 18.8799992 6.73406431E-03 + 19.0400009 6.60038507E-03 + 19.2000008 6.24700775E-03 + 19.3600006 5.69440844E-03 + 19.5200005 4.97215474E-03 + 19.6800003 4.11663949E-03 + 19.8400002 3.16849188E-03 + 20.0000000 2.16990290E-03 + 20.1599998 1.16208778E-03 + 20.3199997 1.83075215E-04 + 20.4799995 -7.34035391E-04 + 20.6399994 -1.56226614E-03 + 20.7999992 -2.28137942E-03 + 20.9599991 -2.87795230E-03 + 21.1200008 -3.34497960E-03 + 21.2800007 -3.68111976E-03 + 21.4400005 -3.88969551E-03 + 21.6000004 -3.97758977E-03 + 21.7600002 -3.95414047E-03 + 21.9200001 -3.83014092E-03 + 22.0799999 -3.61701800E-03 + 22.2399998 -3.32624349E-03 + 22.3999996 -2.96899863E-03 + 22.5599995 -2.55608675E-03 + 22.7199993 -2.09806208E-03 + 22.8799992 -1.60551863E-03 + 23.0400009 -1.08945754E-03 + 23.2000008 -5.61646943E-04 + 23.3600006 -3.48806061E-05 + 23.5200005 4.76945017E-04 + 23.6800003 9.58993332E-04 + 23.8400002 1.39591284E-03 + 24.0000000 1.77251233E-03 + 24.1599998 2.07463140E-03 + 24.3199997 2.29011453E-03 + 24.4799995 2.40977877E-03 + 24.6399994 2.42824364E-03 + 24.7999992 2.34451494E-03 + 24.9599991 2.16223905E-03 + 25.1200008 1.88957946E-03 + 25.2800007 1.53873663E-03 + 25.4400005 1.12516526E-03 + 25.6000004 6.66601816E-04 + 25.7600002 1.82029878E-04 + 25.9200001 -3.09280062E-04 + 26.0799999 -7.88543082E-04 + 26.2399998 -1.23797113E-03 + 26.3999996 -1.64100563E-03 + 26.5599995 -1.98230962E-03 + 26.7199993 -2.24761828E-03 + 26.8799992 -2.42358260E-03 + 27.0400009 -2.49774870E-03 + 27.2000008 -2.45880568E-03 + 27.3600006 -2.29717814E-03 + 27.5200005 -2.00598035E-03 + 27.6800003 -1.58226490E-03 + 27.8400002 -1.02843216E-03 + 28.0000000 -3.53597978E-04 + 28.1599998 4.25310805E-04 + 28.3199997 1.28296786E-03 + 28.4799995 2.18576309E-03 + 28.6399994 3.09274672E-03 + 28.7999992 3.95743316E-03 + 28.9599991 4.73038573E-03 + 29.1200008 5.36240451E-03 + 29.2800007 5.80803677E-03 + 29.4400005 6.02909643E-03 + 29.6000004 5.99783473E-03 + 29.7600002 5.69944968E-03 + 29.9200001 5.13367075E-03 + 30.0799999 4.31526639E-03 + 30.2399998 3.27340607E-03 + 30.3999996 2.04994786E-03 + 30.5599995 6.96814794E-04 + 30.7199993 -7.27295876E-04 + 30.8799992 -2.16056942E-03 + 31.0400009 -3.54178087E-03 + 31.2000008 -4.81374888E-03 + 31.3600006 -5.92628540E-03 + 31.5200005 -6.83843996E-03 + 31.6800003 -7.51993945E-03 + 31.8400002 -7.95179047E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X90.MXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X90.MXY.semd new file mode 100644 index 000000000..cbfee3d96 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X90.MXY.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 0.00000000 + -6.88000011 0.00000000 + -6.71999979 0.00000000 + -6.55999994 2.08875108E-25 + -6.40000010 6.85436034E-24 + -6.23999977 2.70047851E-23 + -6.07999992 -3.37248411E-24 + -5.92000008 -1.78187826E-22 + -5.76000023 -9.31417979E-23 + -5.59999990 8.72939897E-22 + -5.44000006 -1.07865117E-23 + -5.28000021 -8.55201113E-21 + -5.11999989 -1.22517719E-20 + -4.96000004 3.58693431E-20 + -4.80000019 1.24466655E-19 + -4.63999987 1.32363891E-20 + -4.48000002 -5.45254816E-19 + -4.32000017 -8.58652612E-19 + -4.15999985 9.22371627E-19 + -4.00000000 4.55436629E-18 + -3.83999991 3.09318813E-18 + -3.68000007 -1.15759154E-17 + -3.51999998 -2.68782976E-17 + -3.35999990 -9.63088649E-20 + -3.20000005 8.62197418E-17 + -3.03999996 1.25633356E-16 + -2.88000011 -7.82929361E-17 + -2.72000003 -4.89586949E-16 + -2.55999994 -5.08288854E-16 + -2.40000010 6.08914727E-16 + -2.24000001 2.32096154E-15 + -2.07999992 1.93704217E-15 + -1.91999996 -3.03494764E-15 + -1.75999999 -9.58513749E-15 + -1.60000002 -7.40894383E-15 + -1.44000006 1.14299032E-14 + -1.27999997 3.50744214E-14 + -1.12000000 2.86620872E-14 + -0.959999979 -3.30941295E-14 + -0.800000012 -1.13642819E-13 + -0.639999986 -1.07401257E-13 + -0.479999989 6.68503474E-14 + -0.319999993 3.20830304E-13 + -0.159999996 3.69107902E-13 + 1.66533454E-16 -4.18550286E-14 + 0.159999996 -7.61206961E-13 + 0.319999993 -1.11247545E-12 + 0.479999989 -3.64575964E-13 + 0.639999986 1.39863425E-12 + 0.800000012 2.82486187E-12 + 0.959999979 2.05305759E-12 + 1.12000000 -1.49215568E-12 + 1.27999997 -5.71995793E-12 + 1.44000006 -6.62057952E-12 + 1.60000002 -1.39180876E-12 + 1.75999999 8.14318231E-12 + 1.91999996 1.50790769E-11 + 2.07999992 1.16230307E-11 + 2.24000001 -4.08352952E-12 + 2.40000010 -2.37020559E-11 + 2.55999994 -3.18107658E-11 + 2.72000003 -1.64984415E-11 + 2.88000011 1.89448353E-11 + 3.03999996 5.29725430E-11 + 3.20000005 5.72519879E-11 + 3.35999990 1.80669455E-11 + 3.51999998 -4.73686194E-11 + 3.68000007 -9.55837770E-11 + 3.83999991 -8.51863927E-11 + 4.00000000 -1.12726668E-11 + 4.15999985 8.24040836E-11 + 4.32000017 1.29696434E-10 + 4.48000002 9.24457524E-11 + 4.63999987 -4.49764358E-12 + 4.80000019 -8.76788642E-11 + 4.96000004 -9.45825848E-11 + 5.11999989 -3.14246650E-11 + 5.28000021 2.54015541E-11 + 5.44000006 -3.00469762E-12 + 5.59999990 -1.11320834E-10 + 5.76000023 -1.84617752E-10 + 5.92000008 -7.79070489E-11 + 6.07999992 2.41783454E-10 + 6.23999977 6.03777750E-10 + 6.40000010 6.95511149E-10 + 6.55999994 2.78156137E-10 + 6.71999979 -5.75978931E-10 + 6.88000011 -1.41637835E-09 + 7.03999996 -1.62782088E-09 + 7.19999981 -8.40006675E-10 + 7.36000013 7.29672545E-10 + 7.51999998 2.27733721E-09 + 7.67999983 2.83495960E-09 + 7.84000015 1.88966798E-09 + 8.00000000 -2.10127457E-10 + 8.15999985 -2.37908204E-09 + 8.31999969 -3.42546480E-09 + 8.47999954 -2.79966406E-09 + 8.64000034 -9.53829571E-10 + 8.80000019 9.59291424E-10 + 8.96000004 1.87561833E-09 + 9.11999989 1.57340618E-09 + 9.27999973 8.62479033E-10 + 9.43999958 1.04312703E-09 + 9.60000038 2.96842417E-09 + 9.76000023 6.34212016E-09 + 9.92000008 9.76003545E-09 + 10.0799999 1.15089991E-08 + 10.2399998 1.05862981E-08 + 10.3999996 7.17313497E-09 + 10.5600004 2.07208806E-09 + 10.7200003 -4.75908735E-09 + 10.8800001 -1.59021418E-08 + 11.0400000 -3.76723506E-08 + 11.1999998 -8.06160827E-08 + 11.3599997 -1.59931417E-07 + 11.5200005 -2.97010132E-07 + 11.6800003 -5.23266181E-07 + 11.8400002 -8.86806504E-07 + 12.0000000 -1.46175364E-06 + 12.1599998 -2.35966650E-06 + 12.3199997 -3.74276215E-06 + 12.4799995 -5.83923111E-06 + 12.6400003 -8.96130678E-06 + 12.8000002 -1.35263726E-05 + 12.9600000 -2.00802697E-05 + 13.1199999 -2.93205121E-05 + 13.2799997 -4.21157492E-05 + 13.4399996 -5.95168349E-05 + 13.6000004 -8.27541517E-05 + 13.7600002 -1.13215327E-04 + 13.9200001 -1.52397130E-04 + 14.0799999 -2.01826246E-04 + 14.2399998 -2.62944872E-04 + 14.3999996 -3.36959900E-04 + 14.5600004 -4.24659083E-04 + 14.7200003 -5.26201853E-04 + 14.8800001 -6.40898128E-04 + 15.0400000 -7.66994897E-04 + 15.1999998 -9.01494699E-04 + 15.3599997 -1.04003341E-03 + 15.5200005 -1.17684680E-03 + 15.6800003 -1.30484882E-03 + 15.8400002 -1.41584326E-03 + 16.0000000 -1.50087487E-03 + 16.1599998 -1.55071646E-03 + 16.3199997 -1.55647181E-03 + 16.4799995 -1.51026051E-03 + 16.6399994 -1.40593795E-03 + 16.7999992 -1.23978895E-03 + 16.9599991 -1.01113273E-03 + 17.1200008 -7.22772558E-04 + 17.2800007 -3.81227903E-04 + 17.4400005 3.29603722E-06 + 17.6000004 4.17228090E-04 + 17.7600002 8.44239490E-04 + 17.9200001 1.26611372E-03 + 18.0799999 1.66382315E-03 + 18.2399998 2.01873574E-03 + 18.3999996 2.31385836E-03 + 18.5599995 2.53501744E-03 + 18.7199993 2.67186668E-03 + 18.8799992 2.71864212E-03 + 19.0400009 2.67458172E-03 + 19.2000008 2.54397606E-03 + 19.3600006 2.33583897E-03 + 19.5200005 2.06322572E-03 + 19.6800003 1.74226810E-03 + 19.8400002 1.39101106E-03 + 20.0000000 1.02815987E-03 + 20.1599998 6.71841437E-04 + 20.3199997 3.38483922E-04 + 20.4799995 4.18962409E-05 + 20.6399994 -2.07390694E-04 + 20.7999992 -4.02491773E-04 + 20.9599991 -5.40246197E-04 + 21.1200008 -6.21037965E-04 + 21.2800007 -6.48410758E-04 + 21.4400005 -6.28542213E-04 + 21.6000004 -5.69643104E-04 + 21.7600002 -4.81340743E-04 + 21.9200001 -3.74093768E-04 + 22.0799999 -2.58667656E-04 + 22.2399998 -1.45683254E-04 + 22.3999996 -4.52369204E-05 + 22.5599995 3.34232973E-05 + 22.7199993 8.21836802E-05 + 22.8799992 9.43324630E-05 + 23.0400009 6.48220885E-05 + 23.2000008 -9.47134049E-06 + 23.3600006 -1.29501175E-04 + 23.5200005 -2.93837744E-04 + 23.6800003 -4.98521491E-04 + 23.8400002 -7.37017195E-04 + 24.0000000 -1.00030529E-03 + 24.1599998 -1.27713836E-03 + 24.3199997 -1.55447819E-03 + 24.4799995 -1.81810977E-03 + 24.6399994 -2.05340679E-03 + 24.7999992 -2.24620639E-03 + 24.9599991 -2.38373224E-03 + 25.1200008 -2.45549460E-03 + 25.2800007 -2.45408714E-03 + 25.4400005 -2.37580831E-03 + 25.6000004 -2.22103158E-03 + 25.7600002 -1.99428480E-03 + 25.9200001 -1.70400576E-03 + 26.0799999 -1.36198441E-03 + 26.2399998 -9.82521684E-04 + 26.3999996 -5.81362285E-04 + 26.5599995 -1.74488436E-04 + 26.7199993 2.23128081E-04 + 26.8799992 5.98704210E-04 + 27.0400009 9.42648796E-04 + 27.2000008 1.24929228E-03 + 27.3600006 1.51726010E-03 + 27.5200005 1.74943020E-03 + 27.6800003 1.95244513E-03 + 27.8400002 2.13578460E-03 + 28.0000000 2.31044879E-03 + 28.1599998 2.48734839E-03 + 28.3199997 2.67553469E-03 + 28.4799995 2.88043707E-03 + 28.6399994 3.10230162E-03 + 28.7999992 3.33502446E-03 + 28.9599991 3.56555707E-03 + 29.1200008 3.77403270E-03 + 29.2800007 3.93468933E-03 + 29.4400005 4.01760079E-03 + 29.6000004 3.99113121E-03 + 29.7600002 3.82495672E-03 + 29.9200001 3.49339354E-03 + 30.0799999 2.97874119E-03 + 30.2399998 2.27429299E-03 + 30.3999996 1.38668437E-03 + 30.5599995 3.37279023E-04 + 30.7199993 -8.37630709E-04 + 30.8799992 -2.08793650E-03 + 31.0400009 -3.35214776E-03 + 31.2000008 -4.56102937E-03 + 31.3600006 -5.64220781E-03 + 31.5200005 -6.52540522E-03 + 31.6800003 -7.14789983E-03 + 31.8400002 -7.45973922E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X90.MXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X90.MXZ.semd new file mode 100644 index 000000000..16a019cf0 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X90.MXZ.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 0.00000000 + -6.88000011 0.00000000 + -6.71999979 -3.24280041E-32 + -6.55999994 4.71064592E-25 + -6.40000010 5.86424445E-24 + -6.23999977 2.85981169E-23 + -6.07999992 6.12863513E-23 + -5.92000008 -2.29327087E-23 + -5.76000023 -5.37311919E-22 + -5.59999990 -1.59334020E-21 + -5.44000006 -1.62773443E-21 + -5.28000021 4.57630969E-21 + -5.11999989 2.18300799E-20 + -4.96000004 3.09102305E-20 + -4.80000019 -4.15003654E-20 + -4.63999987 -2.51809650E-19 + -4.48000002 -3.45025331E-19 + -4.32000017 4.36230602E-19 + -4.15999985 2.35275892E-18 + -4.00000000 2.69233827E-18 + -3.83999991 -4.25199786E-18 + -3.68000007 -1.78178575E-17 + -3.51999998 -1.62927631E-17 + -3.35999990 3.32766489E-17 + -3.20000005 1.11466174E-16 + -3.03999996 8.19480157E-17 + -2.88000011 -2.09212175E-16 + -2.72000003 -5.94224053E-16 + -2.55999994 -3.67878400E-16 + -2.40000010 1.08327224E-15 + -2.24000001 2.77481133E-15 + -2.07999992 1.57976907E-15 + -1.91999996 -4.70959213E-15 + -1.75999999 -1.15744537E-14 + -1.60000002 -6.78460812E-15 + -1.44000006 1.72723757E-14 + -1.27999997 4.35034394E-14 + -1.12000000 2.89533818E-14 + -0.959999979 -5.26030872E-14 + -0.800000012 -1.46948629E-13 + -0.639999986 -1.17592026E-13 + -0.479999989 1.25830309E-13 + -0.319999993 4.40234329E-13 + -0.159999996 4.34171877E-13 + 1.66533454E-16 -1.93093114E-13 + 0.159999996 -1.14121874E-12 + 0.319999993 -1.40855047E-12 + 0.479999989 -6.95509934E-14 + 0.639999986 2.44921813E-12 + 0.800000012 3.90975533E-12 + 0.959999979 1.77009709E-12 + 1.12000000 -3.93796324E-12 + 1.27999997 -9.01052410E-12 + 1.44000006 -7.38996624E-12 + 1.60000002 3.11707257E-12 + 1.75999999 1.63791428E-11 + 1.91999996 2.02242580E-11 + 2.07999992 6.11786620E-12 + 2.24000001 -2.06352123E-11 + 2.40000010 -4.02607149E-11 + 2.55999994 -3.16711900E-11 + 2.72000003 8.37618950E-12 + 2.88000011 5.61077122E-11 + 3.03999996 7.30762742E-11 + 3.20000005 3.52673793E-11 + 3.35999990 -4.20613960E-11 + 3.51999998 -1.06638871E-10 + 3.68000007 -1.03649644E-10 + 3.83999991 -2.09137568E-11 + 4.00000000 9.14459411E-11 + 4.15999985 1.50015292E-10 + 4.32000017 1.02037385E-10 + 4.48000002 -2.40042240E-11 + 4.63999987 -1.29620828E-10 + 4.80000019 -1.23324462E-10 + 4.96000004 -6.91677878E-12 + 5.11999989 1.08753097E-10 + 5.28000021 9.12754386E-11 + 5.44000006 -8.16065965E-11 + 5.59999990 -2.64223504E-10 + 5.76000023 -2.37309561E-10 + 5.92000008 9.36054567E-11 + 6.07999992 5.56415469E-10 + 6.23999977 7.77009901E-10 + 6.40000010 4.48181436E-10 + 6.55999994 -3.82319593E-10 + 6.71999979 -1.24701693E-09 + 6.88000011 -1.51968405E-09 + 7.03999996 -8.55772619E-10 + 7.19999981 5.00691877E-10 + 7.36000013 1.79691284E-09 + 7.51999998 2.22748420E-09 + 7.67999983 1.47378620E-09 + 7.84000015 -5.48154855E-11 + 8.00000000 -1.47124957E-09 + 8.15999985 -2.00113726E-09 + 8.31999969 -1.50583157E-09 + 8.47999954 -5.57999147E-10 + 8.64000034 3.63546151E-12 + 8.80000019 -2.60614502E-10 + 8.96000004 -9.78793824E-10 + 9.11999989 -1.11805831E-09 + 9.27999973 3.75163567E-10 + 9.43999958 3.85927912E-09 + 9.60000038 8.68069794E-09 + 9.76000023 1.34725475E-08 + 9.92000008 1.68749779E-08 + 10.0799999 1.81793052E-08 + 10.2399998 1.73942780E-08 + 10.3999996 1.45429189E-08 + 10.5600004 8.43483949E-09 + 10.7200003 -4.58289540E-09 + 10.8800001 -3.15486837E-08 + 11.0400000 -8.36783300E-08 + 11.1999998 -1.77828127E-07 + 11.3599997 -3.39693941E-07 + 11.5200005 -6.09576773E-07 + 11.6800003 -1.05107824E-06 + 11.8400002 -1.76284698E-06 + 12.0000000 -2.89371633E-06 + 12.1599998 -4.66202073E-06 + 12.3199997 -7.38006929E-06 + 12.4799995 -1.14843560E-05 + 12.6400003 -1.75712157E-05 + 12.8000002 -2.64365171E-05 + 12.9600000 -3.91167596E-05 + 13.1199999 -5.69274598E-05 + 13.2799997 -8.14927189E-05 + 13.4399996 -1.14757509E-04 + 13.6000004 -1.58972340E-04 + 13.7600002 -2.16638669E-04 + 13.9200001 -2.90403492E-04 + 14.0799999 -3.82893777E-04 + 14.2399998 -4.96484048E-04 + 14.3999996 -6.32997602E-04 + 14.5600004 -7.93347601E-04 + 14.7200003 -9.77134448E-04 + 14.8800001 -1.18222728E-03 + 15.0400000 -1.40436890E-03 + 15.1999998 -1.63685204E-03 + 15.3599997 -1.87032227E-03 + 15.5200005 -2.09276471E-03 + 15.6800003 -2.28972151E-03 + 15.8400002 -2.44477810E-03 + 16.0000000 -2.54033040E-03 + 16.1599998 -2.55862973E-03 + 16.3199997 -2.48305639E-03 + 16.4799995 -2.29955581E-03 + 16.6399994 -1.99812860E-03 + 16.7999992 -1.57424295E-03 + 16.9599991 -1.03002228E-03 + 17.1200008 -3.75066942E-04 + 17.2800007 3.73217888E-04 + 17.4400005 1.18988298E-03 + 17.6000004 2.04333267E-03 + 17.7600002 2.89685163E-03 + 17.9200001 3.71069089E-03 + 18.0799999 4.44457354E-03 + 18.2399998 5.06043620E-03 + 18.3999996 5.52518060E-03 + 18.5599995 5.81318885E-03 + 18.7199993 5.90836722E-03 + 18.8799992 5.80551988E-03 + 19.0400009 5.51090343E-03 + 19.2000008 5.04189171E-03 + 19.3600006 4.42576502E-03 + 19.5200005 3.69771896E-03 + 19.6800003 2.89827771E-03 + 19.8400002 2.07033264E-03 + 20.0000000 1.25608675E-03 + 20.1599998 4.94167907E-04 + 20.3199997 -1.82837830E-04 + 20.4799995 -7.50233477E-04 + 20.6399994 -1.19231234E-03 + 20.7999992 -1.50266325E-03 + 20.9599991 -1.68371550E-03 + 21.1200008 -1.74563448E-03 + 21.2800007 -1.70473312E-03 + 21.4400005 -1.58160250E-03 + 21.6000004 -1.39916525E-03 + 21.7600002 -1.18084950E-03 + 21.9200001 -9.49033594E-04 + 22.0799999 -7.23867270E-04 + 22.2399998 -5.22506831E-04 + 22.3999996 -3.58745339E-04 + 22.5599995 -2.42967901E-04 + 22.7199993 -1.82331132E-04 + 22.8799992 -1.81054158E-04 + 23.0400009 -2.40715584E-04 + 23.2000008 -3.60474864E-04 + 23.3600006 -5.37171960E-04 + 23.5200005 -7.65302684E-04 + 23.6800003 -1.03690987E-03 + 23.8400002 -1.34146435E-03 + 24.0000000 -1.66583015E-03 + 24.1599998 -1.99440797E-03 + 24.3199997 -2.30952678E-03 + 24.4799995 -2.59213219E-03 + 24.6399994 -2.82276049E-03 + 24.7999992 -2.98274984E-03 + 24.9599991 -3.05559114E-03 + 25.1200008 -3.02829174E-03 + 25.2800007 -2.89261038E-03 + 25.4400005 -2.64601759E-03 + 25.6000004 -2.29226984E-03 + 25.7600002 -1.84151018E-03 + 25.9200001 -1.30986574E-03 + 26.0799999 -7.18553143E-04 + 26.2399998 -9.25638524E-05 + 26.3999996 5.40973328E-04 + 26.5599995 1.15461973E-03 + 26.7199993 1.72250427E-03 + 26.8799992 2.22210749E-03 + 27.0400009 2.63582007E-03 + 27.2000008 2.95215915E-03 + 27.3600006 3.16654588E-03 + 27.5200005 3.28157260E-03 + 27.6800003 3.30671202E-03 + 27.8400002 3.25744948E-03 + 28.0000000 3.15384450E-03 + 28.1599998 3.01857409E-03 + 28.3199997 2.87454436E-03 + 28.4799995 2.74221553E-03 + 28.6399994 2.63682194E-03 + 28.7999992 2.56573292E-03 + 28.9599991 2.52621784E-03 + 29.1200008 2.50390684E-03 + 29.2800007 2.47220718E-03 + 29.4400005 2.39289389E-03 + 29.6000004 2.21798965E-03 + 29.7600002 1.89294782E-03 + 29.9200001 1.36101362E-03 + 30.0799999 5.68498333E-04 + 30.2399998 -5.29424055E-04 + 30.3999996 -1.96289504E-03 + 30.5599995 -3.74207087E-03 + 30.7199993 -5.85289532E-03 + 30.8799992 -8.25442933E-03 + 31.0400009 -1.08781233E-02 + 31.2000008 -1.36292428E-02 + 31.3600006 -1.63904764E-02 + 31.5200005 -1.90275703E-02 + 31.6800003 -2.13966276E-02 + 31.8400002 -2.33525690E-02 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X95.MXX.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X95.MXX.semd new file mode 100644 index 000000000..c68f4a52c --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X95.MXX.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 0.00000000 + -6.88000011 0.00000000 + -6.71999979 0.00000000 + -6.55999994 1.01075523E-26 + -6.40000010 2.12649660E-25 + -6.23999977 3.75567684E-24 + -6.07999992 2.13574513E-23 + -5.92000008 5.54283586E-23 + -5.76000023 6.39564940E-23 + -5.59999990 -1.84509896E-23 + -5.44000006 -3.13117043E-22 + -5.28000021 -1.28242338E-21 + -5.11999989 -2.69546577E-21 + -4.96000004 8.69659144E-22 + -4.80000019 1.85871022E-20 + -4.63999987 3.49410623E-20 + -4.48000002 -1.92851424E-20 + -4.32000017 -1.76276841E-19 + -4.15999985 -2.07505831E-19 + -4.00000000 2.96794058E-19 + -3.83999991 1.07262433E-18 + -3.68000007 5.28638567E-19 + -3.51999998 -2.31309560E-18 + -3.35999990 -3.99257500E-18 + -3.20000005 1.55078001E-18 + -3.03999996 1.07794108E-17 + -2.88000011 4.69975569E-18 + -2.72000003 -2.32222487E-17 + -2.55999994 -2.65640434E-17 + -2.40000010 5.35236381E-17 + -2.24000001 1.36920202E-16 + -2.07999992 -3.31854274E-17 + -1.91999996 -5.05826741E-16 + -1.75999999 -5.87278806E-16 + -1.60000002 7.34133249E-16 + -1.44000006 2.84065035E-15 + -1.27999997 2.16578850E-15 + -1.12000000 -4.52731995E-15 + -0.959999979 -1.26235946E-14 + -0.800000012 -7.69356807E-15 + -0.639999986 1.94312746E-14 + -0.479999989 4.80378812E-14 + -0.319999993 2.80767214E-14 + -0.159999996 -6.56211129E-14 + 1.66533454E-16 -1.61190749E-13 + 0.159999996 -1.03999539E-13 + 0.319999993 1.78454894E-13 + 0.479999989 4.80607362E-13 + 0.639999986 3.69747093E-13 + 0.800000012 -3.76162860E-13 + 0.959999979 -1.26626118E-12 + 1.12000000 -1.20063410E-12 + 1.27999997 5.04068683E-13 + 1.44000006 2.89556812E-12 + 1.60000002 3.45381904E-12 + 1.75999999 1.99857722E-13 + 1.91999996 -5.52838244E-12 + 2.07999992 -8.62307448E-12 + 2.24000001 -3.91829798E-12 + 2.40000010 7.98862886E-12 + 2.55999994 1.82659044E-11 + 2.72000003 1.50644098E-11 + 2.88000011 -5.51895248E-12 + 3.03999996 -3.15068006E-11 + 3.20000005 -3.95345562E-11 + 3.35999990 -1.27228878E-11 + 3.51999998 3.97602506E-11 + 3.68000007 7.96011868E-11 + 3.83999991 6.28367081E-11 + 4.00000000 -2.07567470E-11 + 4.15999985 -1.22813162E-10 + 4.32000017 -1.56195820E-10 + 4.48000002 -6.03944325E-11 + 4.63999987 1.30050581E-10 + 4.80000019 2.78432805E-10 + 4.96000004 2.32809619E-10 + 5.11999989 -3.79297045E-11 + 5.28000021 -3.69763831E-10 + 5.44000006 -4.85284146E-10 + 5.59999990 -2.10326312E-10 + 5.76000023 3.32445432E-10 + 5.92000008 7.42037487E-10 + 6.07999992 6.18801899E-10 + 6.23999977 -7.51249965E-11 + 6.40000010 -8.81825279E-10 + 6.55999994 -1.12355625E-09 + 6.71999979 -4.47247711E-10 + 6.88000011 7.81948728E-10 + 7.03999996 1.62509850E-09 + 7.19999981 1.25328048E-09 + 7.36000013 -3.03181147E-10 + 7.51999998 -1.97921790E-09 + 7.67999983 -2.35536146E-09 + 7.84000015 -7.95988220E-10 + 8.00000000 1.83312932E-09 + 8.15999985 3.56959107E-09 + 8.31999969 2.76705325E-09 + 8.47999954 -4.76639894E-10 + 8.64000034 -4.06523970E-09 + 8.80000019 -5.23781107E-09 + 8.96000004 -2.65470157E-09 + 9.11999989 2.33955610E-09 + 9.27999973 6.39172670E-09 + 9.43999958 6.44751630E-09 + 9.60000038 2.06765716E-09 + 9.76000023 -4.01552835E-09 + 9.92000008 -7.65107089E-09 + 10.0799999 -6.18203089E-09 + 10.2399998 -4.57718086E-10 + 10.3999996 5.55257351E-09 + 10.5600004 7.40213535E-09 + 10.7200003 3.34520212E-09 + 10.8800001 -4.11903844E-09 + 11.0400000 -9.51984624E-09 + 11.1999998 -7.86697818E-09 + 11.3599997 1.87794602E-09 + 11.5200005 1.56741500E-08 + 11.6800003 2.65997375E-08 + 11.8400002 2.91370110E-08 + 12.0000000 2.26878321E-08 + 12.1599998 1.16731282E-08 + 12.3199997 1.68881775E-09 + 12.4799995 -6.11804429E-09 + 12.6400003 -1.89711482E-08 + 12.8000002 -5.24137107E-08 + 12.9600000 -1.27140780E-07 + 13.1199999 -2.66514661E-07 + 13.2799997 -4.99177702E-07 + 13.4399996 -8.68899065E-07 + 13.6000004 -1.45021693E-06 + 13.7600002 -2.36630012E-06 + 13.9200001 -3.80657048E-06 + 14.0799999 -6.04532943E-06 + 14.2399998 -9.46599812E-06 + 14.3999996 -1.45956637E-05 + 14.5600004 -2.21508271E-05 + 14.7200003 -3.30900002E-05 + 14.8800001 -4.86656900E-05 + 15.0400000 -7.04683844E-05 + 15.1999998 -1.00456731E-04 + 15.3599997 -1.40967779E-04 + 15.5200005 -1.94697408E-04 + 15.6800003 -2.64636881E-04 + 15.8400002 -3.53949319E-04 + 16.0000000 -4.65773453E-04 + 16.1599998 -6.02949644E-04 + 16.3199997 -7.67672376E-04 + 16.4799995 -9.61082173E-04 + 16.6399994 -1.18281890E-03 + 16.7999992 -1.43056922E-03 + 16.9599991 -1.69965194E-03 + 17.1200008 -1.98269333E-03 + 17.2800007 -2.26945430E-03 + 17.4400005 -2.54686782E-03 + 17.6000004 -2.79934355E-03 + 17.7600002 -3.00936727E-03 + 17.9200001 -3.15840682E-03 + 18.0799999 -3.22809606E-03 + 18.2399998 -3.20162950E-03 + 18.3999996 -3.06527014E-03 + 18.5599995 -2.80985143E-03 + 18.7199993 -2.43212539E-03 + 18.8799992 -1.93581427E-03 + 19.0400009 -1.33221585E-03 + 19.2000008 -6.40254293E-04 + 19.3600006 1.14101415E-04 + 19.5200005 8.99061852E-04 + 19.6800003 1.67882815E-03 + 19.8400002 2.41587008E-03 + 20.0000000 3.07348790E-03 + 20.1599998 3.61844385E-03 + 20.3199997 4.02342528E-03 + 20.4799995 4.26911609E-03 + 20.6399994 4.34567314E-03 + 20.7999992 4.25345963E-03 + 20.9599991 4.00295481E-03 + 21.1200008 3.61384358E-03 + 21.2800007 3.11337388E-03 + 21.4400005 2.53414898E-03 + 21.6000004 1.91156159E-03 + 21.7600002 1.28111208E-03 + 21.9200001 6.75840711E-04 + 22.0799999 1.24096274E-04 + 22.2399998 -3.52177012E-04 + 22.3999996 -7.38506438E-04 + 22.5599995 -1.02825486E-03 + 22.7199993 -1.22229464E-03 + 22.8799992 -1.32806716E-03 + 23.0400009 -1.35815237E-03 + 23.2000008 -1.32850325E-03 + 23.3600006 -1.25652435E-03 + 23.5200005 -1.15918007E-03 + 23.6800003 -1.05130603E-03 + 23.8400002 -9.44280357E-04 + 24.0000000 -8.45163071E-04 + 24.1599998 -7.56373047E-04 + 24.3199997 -6.75921096E-04 + 24.4799995 -5.98166836E-04 + 24.6399994 -5.15015912E-04 + 24.7999992 -4.17423813E-04 + 24.9599991 -2.97032879E-04 + 25.1200008 -1.47749248E-04 + 25.2800007 3.29388458E-05 + 25.4400005 2.43076036E-04 + 25.6000004 4.75920679E-04 + 25.7600002 7.20259326E-04 + 25.9200001 9.61342885E-04 + 26.0799999 1.18235196E-03 + 26.2399998 1.36622589E-03 + 26.3999996 1.49763236E-03 + 26.5599995 1.56481960E-03 + 26.7199993 1.56109058E-03 + 26.8799992 1.48568267E-03 + 27.0400009 1.34391303E-03 + 27.2000008 1.14655495E-03 + 27.3600006 9.08516871E-04 + 27.5200005 6.46997185E-04 + 27.6800003 3.79366014E-04 + 27.8400002 1.21077675E-04 + 28.0000000 -1.16071438E-04 + 28.1599998 -3.25063709E-04 + 28.3199997 -5.03972929E-04 + 28.4799995 -6.55405049E-04 + 28.6399994 -7.85136886E-04 + 28.7999992 -9.00148647E-04 + 28.9599991 -1.00634934E-03 + 29.1200008 -1.10635976E-03 + 29.2800007 -1.19773555E-03 + 29.4400005 -1.27196324E-03 + 29.6000004 -1.31446845E-03 + 29.7600002 -1.30572740E-03 + 29.9200001 -1.22342247E-03 + 30.0799999 -1.04543334E-03 + 30.2399998 -7.53326516E-04 + 30.3999996 -3.35925259E-04 + 30.5599995 2.07507401E-04 + 30.7199993 8.64911417E-04 + 30.8799992 1.61026383E-03 + 31.0400009 2.40384438E-03 + 31.2000008 3.19401152E-03 + 31.3600006 3.92040797E-03 + 31.5200005 4.51833801E-03 + 31.6800003 4.92393877E-03 + 31.8400002 5.07967919E-03 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X95.MXY.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X95.MXY.semd new file mode 100644 index 000000000..165a3214b --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X95.MXY.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 0.00000000 + -6.88000011 0.00000000 + -6.71999979 0.00000000 + -6.55999994 3.83315949E-27 + -6.40000010 2.09709970E-25 + -6.23999977 2.66810547E-24 + -6.07999992 1.63465942E-23 + -5.92000008 5.29930314E-23 + -5.76000023 7.44539039E-23 + -5.59999990 -6.30243255E-23 + -5.44000006 -4.00012054E-22 + -5.28000021 -4.64863943E-22 + -5.11999989 1.36820452E-22 + -4.96000004 2.43613526E-22 + -4.80000019 1.06883976E-22 + -4.63999987 8.58719216E-21 + -4.48000002 2.75152583E-20 + -4.32000017 7.36786051E-23 + -4.15999985 -1.56819175E-19 + -4.00000000 -2.73289127E-19 + -3.83999991 2.47241157E-19 + -3.68000007 1.49259199E-18 + -3.51999998 1.27518411E-18 + -3.35999990 -3.56508185E-18 + -3.20000005 -9.47384183E-18 + -3.03999996 -1.28553266E-18 + -2.88000011 2.90178499E-17 + -2.72000003 4.42770525E-17 + -2.55999994 -2.79957161E-17 + -2.40000010 -1.72258046E-16 + -2.24000001 -1.59372412E-16 + -2.07999992 2.69199326E-16 + -1.91999996 8.29270825E-16 + -1.75999999 4.50049092E-16 + -1.60000002 -1.56767016E-15 + -1.44000006 -3.44239738E-15 + -1.27999997 -1.01057997E-15 + -1.12000000 7.08905548E-15 + -0.959999979 1.28338392E-14 + -0.800000012 2.00585788E-15 + -0.639999986 -2.68347780E-14 + -0.479999989 -4.41030133E-14 + -0.319999993 -5.54068137E-15 + -0.159999996 8.75909723E-14 + 1.66533454E-16 1.41381224E-13 + 0.159999996 2.70796992E-14 + 0.319999993 -2.48100423E-13 + 0.479999989 -4.22155176E-13 + 0.639999986 -1.40971897E-13 + 0.800000012 6.00998038E-13 + 0.959999979 1.15911859E-12 + 1.12000000 6.14732169E-13 + 1.27999997 -1.18603770E-12 + 1.44000006 -2.86282109E-12 + 1.60000002 -2.19935550E-12 + 1.75999999 1.63184646E-12 + 1.91999996 6.15621139E-12 + 2.07999992 6.51409439E-12 + 2.24000001 -2.85199734E-13 + 2.40000010 -1.09074911E-11 + 2.55999994 -1.59668685E-11 + 2.72000003 -7.04351247E-12 + 2.88000011 1.39399273E-11 + 3.03999996 3.17681992E-11 + 3.20000005 2.72049726E-11 + 3.35999990 -5.75283658E-12 + 3.51999998 -4.84185018E-11 + 3.68000007 -6.50760903E-11 + 3.83999991 -2.96820207E-11 + 4.00000000 4.64296344E-11 + 4.15999985 1.11112439E-10 + 4.32000017 1.03784037E-10 + 4.48000002 6.24799127E-12 + 4.63999987 -1.27797231E-10 + 4.80000019 -1.97501016E-10 + 4.96000004 -1.27878458E-10 + 5.11999989 5.98107328E-11 + 5.28000021 2.42612735E-10 + 5.44000006 2.75774958E-10 + 5.59999990 1.07836254E-10 + 5.76000023 -1.60995106E-10 + 5.92000008 -3.37632089E-10 + 6.07999992 -2.81229623E-10 + 6.23999977 -2.35599752E-11 + 6.40000010 2.41714759E-10 + 6.55999994 3.07967235E-10 + 6.71999979 1.30025574E-10 + 6.88000011 -1.25534888E-10 + 7.03999996 -2.13554549E-10 + 7.19999981 -3.10745353E-11 + 7.36000013 2.61887928E-10 + 7.51999998 3.47642082E-10 + 7.67999983 2.56767420E-11 + 7.84000015 -5.60241797E-10 + 8.00000000 -9.55387769E-10 + 8.15999985 -7.10950021E-10 + 8.31999969 2.29557373E-10 + 8.47999954 1.37941647E-09 + 8.64000034 1.95285632E-09 + 8.80000019 1.37836198E-09 + 8.96000004 -2.56645871E-10 + 9.11999989 -2.14610174E-09 + 9.27999973 -3.16786886E-09 + 9.43999958 -2.53512966E-09 + 9.60000038 -3.22210314E-10 + 9.76000023 2.45852050E-09 + 9.92000008 4.32367075E-09 + 10.0799999 4.12467349E-09 + 10.2399998 1.75603854E-09 + 10.3999996 -1.68548597E-09 + 10.5600004 -4.46374271E-09 + 10.7200003 -5.19557153E-09 + 10.8800001 -3.63479780E-09 + 11.0400000 -6.94722835E-10 + 11.1999998 2.31035302E-09 + 11.3599997 4.62002081E-09 + 11.5200005 6.42597797E-09 + 11.6800003 8.40857250E-09 + 11.8400002 1.08209202E-08 + 12.0000000 1.29051827E-08 + 12.1599998 1.31324143E-08 + 12.3199997 1.00321547E-08 + 12.4799995 2.81075119E-09 + 12.6400003 -9.00662833E-09 + 12.8000002 -2.70827840E-08 + 12.9600000 -5.64160629E-08 + 13.1199999 -1.07383372E-07 + 13.2799997 -1.97359881E-07 + 13.4399996 -3.52435478E-07 + 13.6000004 -6.10429936E-07 + 13.7600002 -1.02643241E-06 + 13.9200001 -1.68139161E-06 + 14.0799999 -2.69345196E-06 + 14.2399998 -4.23142546E-06 + 14.3999996 -6.53026109E-06 + 14.5600004 -9.90901754E-06 + 14.7200003 -1.47916307E-05 + 14.8800001 -2.17294255E-05 + 15.0400000 -3.14223980E-05 + 15.1999998 -4.47348466E-05 + 15.3599997 -6.27006448E-05 + 15.5200005 -8.65134789E-05 + 15.6800003 -1.17497635E-04 + 15.8400002 -1.57054092E-04 + 16.0000000 -2.06576675E-04 + 16.1599998 -2.67334079E-04 + 16.3199997 -3.40316619E-04 + 16.4799995 -4.26050654E-04 + 16.6399994 -5.24389499E-04 + 16.7999992 -6.34294527E-04 + 16.9599991 -7.53628614E-04 + 17.1200008 -8.78985506E-04 + 17.2800007 -1.00558531E-03 + 17.4400005 -1.12726539E-03 + 17.6000004 -1.23659230E-03 + 17.7600002 -1.32511184E-03 + 17.9200001 -1.38374756E-03 + 18.0799999 -1.40333746E-03 + 18.2399998 -1.37528731E-03 + 18.3999996 -1.29230530E-03 + 18.5599995 -1.14915567E-03 + 18.7199993 -9.43369057E-04 + 18.8799992 -6.75833900E-04 + 19.0400009 -3.51203198E-04 + 19.2000008 2.19405574E-05 + 19.3600006 4.31200315E-04 + 19.5200005 8.60773900E-04 + 19.6800003 1.29214814E-03 + 19.8400002 1.70504279E-03 + 20.0000000 2.07854481E-03 + 20.1599998 2.39235535E-03 + 20.3199997 2.62806029E-03 + 20.4799995 2.77032820E-03 + 20.6399994 2.80795177E-03 + 20.7999992 2.73465249E-03 + 20.9599991 2.54959799E-03 + 21.1200008 2.25759996E-03 + 21.2800007 1.86898035E-03 + 21.4400005 1.39911892E-03 + 21.6000004 8.67711206E-04 + 21.7600002 2.97787949E-04 + 21.9200001 -2.85443937E-04 + 22.0799999 -8.55869846E-04 + 22.2399998 -1.38777518E-03 + 22.3999996 -1.85712532E-03 + 22.5599995 -2.24275584E-03 + 22.7199993 -2.52741436E-03 + 22.8799992 -2.69861496E-03 + 23.0400009 -2.74926773E-03 + 23.2000008 -2.67806393E-03 + 23.3600006 -2.48959730E-03 + 23.5200005 -2.19421950E-03 + 23.6800003 -1.80762052E-03 + 23.8400002 -1.35012984E-03 + 24.0000000 -8.45752773E-04 + 24.1599998 -3.20958497E-04 + 24.3199997 1.96728724E-04 + 24.4799995 6.80279918E-04 + 24.6399994 1.10477069E-03 + 24.7999992 1.44895469E-03 + 24.9599991 1.69668568E-03 + 25.1200008 1.83805765E-03 + 25.2800007 1.87014288E-03 + 25.4400005 1.79722998E-03 + 25.6000004 1.63050846E-03 + 25.7600002 1.38720055E-03 + 25.9200001 1.08918827E-03 + 26.0799999 7.61248055E-04 + 26.2399998 4.29044652E-04 + 26.3999996 1.17081647E-04 + 26.5599995 -1.53192057E-04 + 26.7199993 -3.64932814E-04 + 26.8799992 -5.06965735E-04 + 27.0400009 -5.74277830E-04 + 27.2000008 -5.67922485E-04 + 27.3600006 -4.94390202E-04 + 27.5200005 -3.64558393E-04 + 27.6800003 -1.92374326E-04 + 27.8400002 6.55662188E-06 + 28.0000000 2.16312954E-04 + 28.1599998 4.21797595E-04 + 28.3199997 6.09591661E-04 + 28.4799995 7.68490951E-04 + 28.6399994 8.89752293E-04 + 28.7999992 9.67119355E-04 + 28.9599991 9.96724586E-04 + 29.1200008 9.76960175E-04 + 29.2800007 9.08394984E-04 + 29.4400005 7.93780317E-04 + 29.6000004 6.38145662E-04 + 29.7600002 4.48942563E-04 + 29.9200001 2.36151696E-04 + 30.0799999 1.22504644E-05 + 30.2399998 -2.08059035E-04 + 30.3999996 -4.08433931E-04 + 30.5599995 -5.71816694E-04 + 30.7199993 -6.81681500E-04 + 30.8799992 -7.23526115E-04 + 31.0400009 -6.86480722E-04 + 31.2000008 -5.64860005E-04 + 31.3600006 -3.59471334E-04 + 31.5200005 -7.84994772E-05 + 31.6800003 2.62167858E-04 + 31.8400002 6.39256905E-04 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X95.MXZ.semd b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X95.MXZ.semd new file mode 100644 index 000000000..66ade1597 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/DB.X95.MXZ.semd @@ -0,0 +1,250 @@ + -8.00000000 0.00000000 + -7.84000015 0.00000000 + -7.67999983 0.00000000 + -7.51999998 0.00000000 + -7.36000013 0.00000000 + -7.19999981 0.00000000 + -7.03999996 0.00000000 + -6.88000011 0.00000000 + -6.71999979 0.00000000 + -6.55999994 2.92912386E-32 + -6.40000010 3.31244617E-25 + -6.23999977 2.64631713E-24 + -6.07999992 1.35698102E-23 + -5.92000008 5.18389026E-23 + -5.76000023 1.08194760E-22 + -5.59999990 -2.61437434E-23 + -5.44000006 -7.31242101E-22 + -5.28000021 -1.41755886E-21 + -5.11999989 8.17129843E-22 + -4.96000004 7.48710495E-21 + -4.80000019 8.89729199E-21 + -4.63999987 -1.28749257E-20 + -4.48000002 -4.77396466E-20 + -4.32000017 -2.97015936E-20 + -4.15999985 9.10949710E-20 + -4.00000000 2.13853072E-19 + -3.83999991 1.20619748E-19 + -3.68000007 -2.86018428E-19 + -3.51999998 -9.14564076E-19 + -3.35999990 -1.44406875E-18 + -3.20000005 -2.80795403E-19 + -3.03999996 5.90291553E-18 + -2.88000011 1.52723912E-17 + -2.72000003 7.43852588E-18 + -2.55999994 -4.62437009E-17 + -2.40000010 -1.13912604E-16 + -2.24000001 -3.94913892E-17 + -2.07999992 3.15196577E-16 + -1.91999996 6.59330976E-16 + -1.75999999 1.20197072E-16 + -1.60000002 -1.76317214E-15 + -1.44000006 -3.19197780E-15 + -1.27999997 -2.07206348E-16 + -1.12000000 8.26928959E-15 + -0.959999979 1.35703504E-14 + -0.800000012 2.05582493E-16 + -0.639999986 -3.33258303E-14 + -0.479999989 -5.22016614E-14 + -0.319999993 -2.04326687E-15 + -0.159999996 1.17151921E-13 + 1.66533454E-16 1.84430948E-13 + 0.159999996 2.41866108E-14 + 0.319999993 -3.60678284E-13 + 0.479999989 -6.00170358E-13 + 0.639999986 -1.65892514E-13 + 0.800000012 9.64466137E-13 + 0.959999979 1.78787161E-12 + 1.12000000 8.19813672E-13 + 1.27999997 -2.18059555E-12 + 1.44000006 -4.81477575E-12 + 1.60000002 -3.21318037E-12 + 1.75999999 3.88375269E-12 + 1.91999996 1.15086994E-11 + 2.07999992 1.04170145E-11 + 2.24000001 -4.17662476E-12 + 2.40000010 -2.37536258E-11 + 2.55999994 -2.84072904E-11 + 2.72000003 -3.51792705E-12 + 2.88000011 4.02800467E-11 + 3.03999996 6.52192467E-11 + 3.20000005 3.39927426E-11 + 3.35999990 -4.94561649E-11 + 3.51999998 -1.24215374E-10 + 3.68000007 -1.09726284E-10 + 3.83999991 2.02881306E-11 + 4.00000000 1.88301597E-10 + 4.15999985 2.47465215E-10 + 4.32000017 9.75836426E-11 + 4.48000002 -2.01136149E-10 + 4.63999987 -4.26993135E-10 + 4.80000019 -3.47742557E-10 + 4.96000004 6.82754062E-11 + 5.11999989 5.58257551E-10 + 5.28000021 7.11475101E-10 + 5.44000006 2.94352015E-10 + 5.59999990 -4.90002650E-10 + 5.76000023 -1.06158049E-09 + 5.92000008 -8.75671258E-10 + 6.07999992 9.03280714E-11 + 6.23999977 1.19191490E-09 + 6.40000010 1.52514368E-09 + 6.55999994 6.51897092E-10 + 6.71999979 -9.27238675E-10 + 6.88000011 -2.01778638E-09 + 7.03999996 -1.61914016E-09 + 7.19999981 1.94025088E-10 + 7.36000013 2.15168661E-09 + 7.51999998 2.65378053E-09 + 7.67999983 1.04442277E-09 + 7.84000015 -1.70358472E-09 + 8.00000000 -3.53644025E-09 + 8.15999985 -2.81765167E-09 + 8.31999969 3.01857844E-10 + 8.47999954 3.74312714E-09 + 8.64000034 4.85120166E-09 + 8.80000019 2.37662090E-09 + 8.96000004 -2.35950637E-09 + 9.11999989 -6.11080697E-09 + 9.27999973 -5.90177374E-09 + 9.43999958 -1.30854261E-09 + 9.60000038 4.89115637E-09 + 9.76000023 8.39601810E-09 + 9.92000008 6.40270592E-09 + 10.0799999 -1.61418795E-10 + 10.2399998 -6.98161040E-09 + 10.3999996 -9.28910371E-09 + 10.5600004 -5.39301137E-09 + 10.7200003 1.87047400E-09 + 10.8800001 7.10984827E-09 + 11.0400000 6.54134436E-09 + 11.1999998 1.22091970E-09 + 11.3599997 -3.37830519E-09 + 11.5200005 -1.49964230E-09 + 11.6800003 8.04066680E-09 + 11.8400002 2.02026236E-08 + 12.0000000 2.69590359E-08 + 12.1599998 2.31349802E-08 + 12.3199997 1.00454454E-08 + 12.4799995 -6.58560051E-09 + 12.6400003 -2.35119106E-08 + 12.8000002 -4.67247254E-08 + 12.9600000 -9.31837718E-08 + 13.1199999 -1.87127981E-07 + 13.2799997 -3.56025879E-07 + 13.4399996 -6.32924923E-07 + 13.6000004 -1.06820016E-06 + 13.7600002 -1.74753029E-06 + 13.9200001 -2.80965605E-06 + 14.0799999 -4.46002741E-06 + 14.2399998 -6.98270742E-06 + 14.3999996 -1.07575315E-05 + 14.5600004 -1.62883807E-05 + 14.7200003 -2.42420138E-05 + 14.8800001 -3.54896947E-05 + 15.0400000 -5.11404505E-05 + 15.1999998 -7.25567807E-05 + 15.3599997 -1.01348029E-04 + 15.5200005 -1.39339580E-04 + 15.6800003 -1.88514590E-04 + 15.8400002 -2.50920508E-04 + 16.0000000 -3.28528316E-04 + 16.1599998 -4.23033518E-04 + 16.3199997 -5.35594765E-04 + 16.4799995 -6.66519103E-04 + 16.6399994 -8.14916275E-04 + 16.7999992 -9.78352735E-04 + 16.9599991 -1.15254498E-03 + 17.1200008 -1.33112923E-03 + 17.2800007 -1.50555070E-03 + 17.4400005 -1.66511186E-03 + 17.6000004 -1.79722102E-03 + 17.7600002 -1.88787014E-03 + 17.9200001 -1.92235888E-03 + 18.0799999 -1.88624603E-03 + 18.2399998 -1.76648551E-03 + 18.3999996 -1.55266607E-03 + 18.5599995 -1.23825355E-03 + 18.7199993 -8.21718539E-04 + 18.8799992 -3.07431765E-04 + 19.0400009 2.93787685E-04 + 19.2000008 9.64562758E-04 + 19.3600006 1.68134947E-03 + 19.5200005 2.41534947E-03 + 19.6800003 3.13391024E-03 + 19.8400002 3.80233000E-03 + 20.0000000 4.38594306E-03 + 20.1599998 4.85232612E-03 + 20.3199997 5.17345220E-03 + 20.4799995 5.32761542E-03 + 20.6399994 5.30097540E-03 + 20.7999992 5.08858124E-03 + 20.9599991 4.69481060E-03 + 21.1200008 4.13319794E-03 + 21.2800007 3.42568173E-03 + 21.4400005 2.60136253E-03 + 21.6000004 1.69487344E-03 + 21.7600002 7.44507357E-04 + 21.9200001 -2.09768303E-04 + 22.0799999 -1.12828054E-03 + 22.2399998 -1.97349652E-03 + 22.3999996 -2.71166326E-03 + 22.5599995 -3.31418426E-03 + 22.7199993 -3.75870406E-03 + 22.8799992 -4.02989145E-03 + 23.0400009 -4.11992846E-03 + 23.2000008 -4.02871752E-03 + 23.3600006 -3.76381725E-03 + 23.5200005 -3.34009621E-03 + 23.6800003 -2.77912407E-03 + 23.8400002 -2.10828078E-03 + 24.0000000 -1.35960348E-03 + 24.1599998 -5.68364514E-04 + 24.3199997 2.28582649E-04 + 24.4799995 9.94634582E-04 + 24.6399994 1.69534667E-03 + 24.7999992 2.30030203E-03 + 24.9599991 2.78480235E-03 + 25.1200008 3.13124387E-03 + 25.2800007 3.33004748E-03 + 25.4400005 3.38003645E-03 + 25.6000004 3.28820292E-03 + 25.7600002 3.06887296E-03 + 25.9200001 2.74233101E-03 + 26.0799999 2.33302522E-03 + 26.2399998 1.86751725E-03 + 26.3999996 1.37236516E-03 + 26.5599995 8.72154953E-04 + 26.7199993 3.87880078E-04 + 26.8799992 -6.41663573E-05 + 27.0400009 -4.72895714E-04 + 27.2000008 -8.32306163E-04 + 27.3600006 -1.14080275E-03 + 27.5200005 -1.40007306E-03 + 27.6800003 -1.61369191E-03 + 27.8400002 -1.78566133E-03 + 28.0000000 -1.91910029E-03 + 28.1599998 -2.01527751E-03 + 28.3199997 -2.07311823E-03 + 28.4799995 -2.08925898E-03 + 28.6399994 -2.05864757E-03 + 28.7999992 -1.97560783E-03 + 28.9599991 -1.83522166E-03 + 29.1200008 -1.63482095E-03 + 29.2800007 -1.37535587E-03 + 29.4400005 -1.06241938E-03 + 29.6000004 -7.06741004E-04 + 29.7600002 -3.24025401E-04 + 29.9200001 6.59152502E-05 + 30.0799999 4.40692384E-04 + 30.2399998 7.77391950E-04 + 30.3999996 1.05491409E-03 + 30.5599995 1.25631283E-03 + 30.7199993 1.37083069E-03 + 30.8799992 1.39533973E-03 + 31.0400009 1.33494136E-03 + 31.2000008 1.20256329E-03 + 31.3600006 1.01750402E-03 + 31.5200005 8.03011062E-04 + 31.6800003 5.83117187E-04 + 31.8400002 3.79064324E-04 diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/output_generate_databases.txt b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/output_generate_databases.txt new file mode 100644 index 000000000..6357135c1 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/output_generate_databases.txt @@ -0,0 +1,285 @@ + + ***************************************** + *** Specfem3D MPI database generation *** + ***************************************** + + Running Git package version of the code: v4.1.1-226-g3d986bd3 + which is Git 3d986bd39b93e0580327562c40981c85dce6c1a9 + dating 2025-08-28 18:59:46 +0200 + + This is process 0 + There are 1 MPI processes + Processes are numbered from 0 to 0 + + There is a total of 1 slices + + NGLLX = 5 + NGLLY = 5 + NGLLZ = 5 + + Shape functions defined by NGNOD = 8 control nodes + Surface shape functions defined by NGNOD2D = 4 control nodes + Beware! Curvature (i.e. HEX27 elements) is not handled by our internal mesher + + velocity model: default + + + suppressing UTM projection + + no attenuation + + no anisotropy + + no oceans + + no absorbing condition + + using a FORCESOLUTION source instead of a CMTSOLUTION source + with a quasi-Heaviside source time function + + + ************************************ + reading partition files in the model + ************************************ + + external mesh points : 14725 + defined materials : 1 + undefined materials : 0 + total number of spectral elements: 1620 + absorbing boundaries: + xmin,xmax : 108 108 + ymin,ymax : 135 135 + bottom,top: 180 180 + + total number of C-PML elements in the global mesh: 0 + + number of MPI partition interfaces: 0 + + minimum memory used so far : 5.82233429 MB per process + minimum total memory requested : 26.4719124 MB per process + + create regions: + + ...allocating arrays + NGLLX = 5 + NGLLY = 5 + NGLLZ = 5 + NGNOD = 8 + NGNOD2D = 4 + + main process setup: + nspec = 1620 + + required minimum memory per process for model setup = 18.5456085 MB + = 1.81109458E-02 GB + + separating regular/irregular element shapes + nspec regular = 59 + nspec irregular = 1561 + + absorbing boundary faces: + num_abs_boundary_faces = 666 + + free surface faces: + num_free_surface_faces = 180 + + + File DATA/Par_file_faults not found: assuming that there are no faults + + + ...setting up jacobian + mesh jacobian: min/max = 3.7037E+10 / 3.7037E+10 + + + ...indexing global points + creating ibool indexing : x min/max = 0.00000000 / 100000.000 + creating indirect addressing: nglob = 110593 + creating unique point locations + + ...preparing MPI interfaces + number of interfaces : 0 + + total MPI interface points: 0 + total assembled MPI interface points: 0 + + ...setting up absorbing boundaries + boundary xmin : 108 + boundary xmax : 108 + boundary ymin : 135 + boundary ymax : 135 + boundary bottom : 180 + boundary top : 180 + absorbing boundary: + total number of free faces = 180 + total number of faces = 666 + + ...setting up mesh surface + + ...determining velocity model + 10 % - elapsed time: 1.22700003E-03 s + 20 % - elapsed time: 2.45900010E-03 s + 30 % - elapsed time: 3.67600005E-03 s + 40 % - elapsed time: 4.89200000E-03 s + 50 % - elapsed time: 6.10799994E-03 s + 60 % - elapsed time: 7.34200003E-03 s + 70 % - elapsed time: 8.56800005E-03 s + 80 % - elapsed time: 9.77000035E-03 s + 90 % - elapsed time: 1.09970002E-02 s + 100 % - elapsed time: 1.21970000E-02 s + + ...detecting acoustic-elastic-poroelastic surfaces + total acoustic elements : 0 + total elastic elements : 1620 + total poroelastic elements: 0 + + acoustic - elastic coupling : total number of faces = 0 + acoustic - poroelastic coupling : total number of faces = 0 + elastic - poroelastic coupling : total number of faces = 0 + + + ...element inner/outer separation + for overlapping of communications with calculations: + percentage of edge elements 0.00000000 % + percentage of volume elements 100.000000 % + + + ...element mesh coloring + use coloring = F + + ...external binary models + no external binary model used + + ...creating mass matrix + + ...setting up mesh adjacency + + mesh adjacency: + total number of elements in this slice = 1620 + + maximum number of neighbors allowed = 300 + minimum array memory required per slice = 1.86012268 (MB) + + maximum number of elements per shared node = 8 + node-to-element array memory required per slice = 3.37503052 (MB) + + 10 % - elapsed time: 1.46900001E-03 s + 20 % - elapsed time: 2.54000002E-03 s + 30 % - elapsed time: 3.83000006E-03 s + 40 % - elapsed time: 5.05199982E-03 s + 50 % - elapsed time: 6.23800000E-03 s + 60 % - elapsed time: 7.42699997E-03 s + 70 % - elapsed time: 8.58699996E-03 s + 80 % - elapsed time: 9.71799996E-03 s + 90 % - elapsed time: 1.07020000E-02 s + 100 % - elapsed time: 1.13260001E-02 s + + maximum neighbors found per element = 26 + (maximum neighbor of neighbors) = 98 + total number of neighbors = 143694 + + Elapsed time for detection of neighbors in seconds = 1.23100001E-02 + + + ...saving mesh databases + using binary file format + database file (for rank 0): OUTPUT_FILES/DATABASES_MPI/proc000000_external_mesh.bin + + saving mesh files for AVS, OpenDX, Paraview + saving additional mesh files with surface/coupling points + + ...checking mesh resolution + Mesh resolution: + + ******** + minimum and maximum number of elements + and points in the CUBIT + SCOTCH mesh: + + NSPEC_global_min = 1620 + NSPEC_global_max = 1620 + NSPEC_global_max / NSPEC_global_min imbalance = 1.00000000 = 0.00000000 % + NSPEC_global_sum = 1620 + + NGLOB_global_min = 110593 + NGLOB_global_max = 110593 + NGLOB_global_max / NGLOB_global_min imbalance = 1.00000000 = 0.00000000 % + NGLOB_global_sum = 110593 + + If you have elements of a single type (all acoustic, all elastic, all poroelastic, and without CPML) + in the whole mesh, then there should be no significant imbalance in the above numbers. + Otherwise, it is normal to have imbalance in elements and points because the domain decomposer + compensates for the different cost of different elements by partitioning them unevenly among processes. + ******** + + + ******** + Model: P velocity min,max = 2800.00000 2800.00000 + Model: S velocity min,max = 1500.00000 1500.00000 + + Model: Poisson's ratio min,max = 0.298747778 0.298747778 + ******** + + ********************************************* + *** Verification of simulation parameters *** + ********************************************* + + *** Xmin and Xmax of the model = 0.00000000 100000.000 + *** Ymin and Ymax of the model = 0.00000000 80000.0000 + *** Zmin and Zmax of the model = -60000.0000 0.00000000 + + *** Max GLL point distance = 2182.17969 + *** Min GLL point distance = 1151.14844 + *** Max/min ratio = 1.89565444 + + *** Max element size = 6666.67188 + *** Min element size = 6666.66406 + *** Max/min ratio = 1.00000119 + + *** Minimum period resolved = 5.55556011 + *** Maximum suggested time step = 0.204999998 + + Elapsed time for checking mesh resolution in seconds = 1.0019999999999474E-003 + saving VTK files for Courant number and minimum period + + + mesh regions done + + min and max of elevation (i.e. height of the upper surface of the mesh) included in mesh in m is 0.0000000000000000 0.0000000000000000 + + + done mesh setup + + + Repartition of elements: + ----------------------- + + load distribution: + element loads: min/max = 66420 66420 + + partition 0 has 66420 load units + + load per partition: min/max = 66420 66420 + load per partition: imbalance = 0.00000000 % + (0% being totally balanced, 100% being unbalanced) + + total number of elements in mesh slice 0: 1620 + total number of regular elements in mesh slice 0: 59 + total number of irregular elements in mesh slice 0: 1561 + total number of points in mesh slice 0: 110593 + + total number of elements in entire mesh: 1620 + approximate total number of points in entire mesh (with duplicates on MPI edges): 110593 + approximate total number of DOFs in entire mesh (with duplicates on MPI edges): 331779 + + total number of time steps in the solver will be: 250 + + using single precision for the calculations + + smallest and largest possible floating-point numbers are: 1.17549435E-38 3.40282347E+38 + + + Elapsed time for mesh generation and buffer creation in seconds = 0.627614021 + Elapsed time for mesh generation and buffer creation in hh:mm:ss = 0 h 00 m 00 s + + End of mesh generation + + done diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/output_meshfem3D.txt b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/output_meshfem3D.txt new file mode 100644 index 000000000..8b5a02ca4 --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/output_meshfem3D.txt @@ -0,0 +1,256 @@ + + ****************************************** + *** Specfem3D MPI meshfem3D - f90 version *** + ****************************************** + + Running Git package version of the code: v4.1.1-226-g3d986bd3 + which is Git 3d986bd39b93e0580327562c40981c85dce6c1a9 + dating 2025-08-28 18:59:46 +0200 + + Reading parameters from ./DATA/Par_file + + Reading mesh parameters from file ./DATA/meshfem3D_files/Mesh_Par_file + input parameters... + doubling layers... + visualization... + CPML... + domain materials... + material 1 elastic + domain regions... + region 1 with material 1 + nex_xi begin/end = 1 15 + nex_eta begin/end = 1 12 + nz begin/end = 1 9 + + reading Mesh_Par_file done successfully + + checking mesh setup... + all okay + + + Reading interface data from file ./DATA/meshfem3D_files/interfaces.txt + maximum interface points x/y = 2 2 + interfaces done + + parameter setup: + total number of elements = 1620 + total number of points = 14725 + + + Creating global slice addressing + + Spatial distribution of slice numbers: + 0 + This is process 0 + There are 1 MPI processes + Processes are numbered from 0 to 0 + + There are 15 elements along xi + There are 12 elements along eta + There are 9 elements along Z + + There are 9 spectral elements along Z in layer 1 + + There are 1 slices along xi + There are 1 slices along eta + There is a total of 1 slices + + Shape functions defined by NGNOD = 8 control nodes + Surface shape functions defined by NGNOD2D = 4 control nodes + Beware! Curvature (i.e. HEX27 elements) is not handled by our internal mesher + + region selected: + + latitude min = 0.0000000000000000 + latitude max = 80000.000000000000 + + longitude min = 0.0000000000000000 + longitude max = 100000.00000000000 + + this is given directly as UTM + + UTM X min = 0.0000000000000000 + UTM X max = 100000.00000000000 + + UTM Y min = 0.0000000000000000 + UTM Y max = 80000.000000000000 + + UTM size of model along X is 100.00000000000000 km + UTM size of model along Y is 80.000000000000000 km + + Bottom of the mesh is at a depth of 60.000000000000000 km + + + suppressing UTM projection + + + ************************** + Creating interfaces + ************************** + + Reading interface data from file ./DATA/meshfem3D_files/interfaces.txt + + number of interfaces: 1 + + mesh: + origin UTM minimum x/y (m) = 0.00000000 0.00000000 + origin UTM maximum x/y (m) = 100000.000 80000.0000 + + reading interface 1 + interface file : interface1.txt + + number of points x/y = 2 2 + origin x/y (m) = 0.00000000 0.00000000 + spacing x/y (m) = 1000.00000 1000.00000 + + dimension x-direction (m) = 0.00000000 / 1000.00000 + dimension y-direction (m) = 0.00000000 / 1000.00000 + + total number of file points = 4 should be 4 + this point total is okay + + original elevation min/max = 0.00000000 0.00000000 + interpolated mesh elevation min/max = 0.00000000 0.00000000 + + interpolated mesh UTM minimum x/y (m) = 0.00000000 0.00000000 + interpolated mesh UTM maximum x/y (m) = 100000.000 80000.0000 + + + ************************** + Creating mesh in the model + ************************** + + creating mesh: + NGLLX_M/NGLLY_M/NGLLZ_M = 3 3 3 + NGNOD/NGNOD2D = 8 4 + NSPEC_AB = 1620 + NGLOB_AB = 14725 + + allocating mesh arrays + + number of subregions = 1 + defining subregion 1 + has material 1 + + number of mesh regions = 1 + creating mesh region 1 (regular mesh) + + mesh dimensions: + Xmin and Xmax of the model = 0.00000000 100000.000 + Ymin and Ymax of the model = 0.00000000 80000.0000 + Zmin and Zmax of the model = -60000.0000 0.00000000 + + exact area = 8.00000000E+09 (m^2) + = 8000.00000 (km^2) + + Max element size = 6666.67188 (m) + Min element size = 6666.66406 (m) + Max/min ratio = 1.00000119 + + + creating indirect addressing for unstructured mesh + + + File "./DATA/meshfem3D_files/no_cavity.dat" not found: assume no cavity + + no PML region + + + saving mesh files + + ************************** + Checking mesh quality + ************************** + + start computing the minimum and maximum edge size + done processing + + ------------ + mesh quality parameter definitions: + + equiangle skewness: 0. perfect, 1. bad + skewness max deviation angle: 0. perfect, 90. bad + edge aspect ratio: 1. perfect, above 1. gives stretching factor + diagonal aspect ratio: 1. perfect, above 1. gives stretching factor + ------------ + + minimum length of an edge in the whole mesh (m) = 6666.6666666666570 + + maximum length of an edge in the whole mesh (m) = 6666.6666666666715 + + *** + *** max equiangle skewness = 1.4135798584282298E-015 in element 61 of slice 0 + *** + + max deviation angle from a right angle (90 degrees) is therefore = 1.2722218725854067E-013 + + worst angle in the mesh is therefore 89.999999999999872 + or 90.000000000000128 degrees + + max edge aspect ratio = 1.0000000000000022 + + max diagonal aspect ratio = 1.0000000000000022 + + *** + *** Maximum suggested time step for simulation = 0.19339394 + *** + *** Max CFL stability condition of the time scheme (must be below about 0.55 or so) = 0.47039999999999993 + *** computed using the maximum P wave velocity = 2800.0000000000000 + *** + that value is below the upper CFL limit of 0.55000000000000004 + therefore the run should be stable + + creating histogram of mesh quality + + histogram of skewness (0. good - 1. bad): + + 0.00000000 - 5.00000007E-02 1620 100.000000 % + 5.00000007E-02 - 0.100000001 0 0.00000000 % + 0.100000001 - 0.150000006 0 0.00000000 % + 0.150000006 - 0.200000003 0 0.00000000 % + 0.200000003 - 0.250000000 0 0.00000000 % + 0.250000000 - 0.300000012 0 0.00000000 % + 0.300000012 - 0.349999994 0 0.00000000 % + 0.349999994 - 0.400000006 0 0.00000000 % + 0.400000006 - 0.449999988 0 0.00000000 % + 0.449999988 - 0.500000000 0 0.00000000 % + 0.500000000 - 0.550000012 0 0.00000000 % + 0.550000012 - 0.600000024 0 0.00000000 % + 0.600000024 - 0.649999976 0 0.00000000 % + 0.649999976 - 0.699999988 0 0.00000000 % + 0.699999988 - 0.750000000 0 0.00000000 % + 0.750000000 - 0.800000012 0 0.00000000 % + 0.800000012 - 0.850000024 0 0.00000000 % + 0.850000024 - 0.899999976 0 0.00000000 % + 0.899999976 - 0.949999988 0 0.00000000 % + 0.949999988 - 1.00000000 0 0.00000000 % + + plotting skewness to VTK-file: ./OUTPUT_FILES/DATABASES_MPI/proc000000_skewness.vtk + + + mesh files: + saving files: proc***_Database + done mesh files + + + Repartition of elements: + ----------------------- + + total number of elements in mesh slice 0: 1620 + total number of points in mesh slice 0: 14725 + + total number of elements in entire mesh: 1620 + approximate total number of points in entire mesh (with duplicates on MPI edges): 14725 + approximate total number of DOFs in entire mesh (with duplicates on MPI edges): 44175 + + using single precision for the calculations + + smallest and largest possible floating-point numbers are: 1.17549435E-38 3.40282347E+38 + + + Elapsed time for mesh generation and buffer creation in seconds = 4.66569997E-02 + Elapsed time for mesh generation and buffer creation in hh:mm:ss = 0 h 00 m 00 s + + End of mesh generation + + done diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/output_solver.txt b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/output_solver.txt new file mode 100644 index 000000000..73eca6e7a --- /dev/null +++ b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/output_solver.txt @@ -0,0 +1,587 @@ + ********************************************** + **** Specfem 3-D Solver - MPI version f90 **** + ********************************************** + + Running Git package version of the code: v4.1.1-226-g3d986bd3 + which is Git 3d986bd39b93e0580327562c40981c85dce6c1a9 + dating 2025-08-28 18:59:46 +0200 + + + + + There are 1 MPI processes + Processes are numbered from 0 to 0 + + There is a total of 1 slices + + NDIM = 3 + + NGLLX = 5 + NGLLY = 5 + NGLLZ = 5 + + using single precision for the calculations + + smallest and largest possible floating-point numbers are: 1.17549435E-38 3.40282347E+38 + + velocity model: default + + Reading mesh databases... + reads binary mesh files: proc***_external_mesh.bin + from directory : OUTPUT_FILES/DATABASES_MPI + + simulation w/ acoustic domain: F + simulation w/ elastic domain: T + simulation w/ poroelastic domain: F + + slice 0 has: + number of elements acoustic : 0 + number of elements elastic : 1620 + number of elements poroelastic: 0 + done + + total acoustic elements : 0 + total elastic elements : 1620 + total poroelastic elements : 0 + + Mesh resolution: + + ******** + minimum and maximum number of elements + and points in the CUBIT + SCOTCH mesh: + + NSPEC_global_min = 1620 + NSPEC_global_max = 1620 + NSPEC_global_max / NSPEC_global_min imbalance = 1.00000000 = 0.00000000 % + NSPEC_global_sum = 1620 + + NGLOB_global_min = 110593 + NGLOB_global_max = 110593 + NGLOB_global_max / NGLOB_global_min imbalance = 1.00000000 = 0.00000000 % + NGLOB_global_sum = 110593 + + If you have elements of a single type (all acoustic, all elastic, all poroelastic, and without CPML) + in the whole mesh, then there should be no significant imbalance in the above numbers. + Otherwise, it is normal to have imbalance in elements and points because the domain decomposer + compensates for the different cost of different elements by partitioning them unevenly among processes. + ******** + + + ******** + Model: P velocity min,max = 2800.00000 2800.00000 + Model: S velocity min,max = 1500.00000 1500.00000 + + Model: Poisson's ratio min,max = 0.298747778 0.298747778 + ******** + + ********************************************* + *** Verification of simulation parameters *** + ********************************************* + + *** Xmin and Xmax of the model = 0.00000000 100000.000 + *** Ymin and Ymax of the model = 0.00000000 80000.0000 + *** Zmin and Zmax of the model = -60000.0000 0.00000000 + + *** Max GLL point distance = 2182.17969 + *** Min GLL point distance = 1151.14844 + *** Max/min ratio = 1.89565444 + + *** Max element size = 6666.67188 + *** Min element size = 6666.66406 + *** Max/min ratio = 1.00000119 + + *** Minimum period resolved = 5.55556011 + *** Maximum suggested time step = 0.204999998 + + *** for DT : 0.16000000000000000 + *** Max stability for wave velocities = 0.389176577 + + Elapsed time for checking mesh resolution in seconds = 7.5999999999999679E-004 + saving VTK files for Courant number and minimum period + + + ****************************************** + There is a total of 1 slices + ****************************************** + + + kd-tree: + total data points: 43740 + theoretical number of nodes: 87471 + tree memory size: 2.66940308 MB + actual number of nodes: 87479 + tree memory size: 2.66964722 MB + maximum depth : 17 + creation timing : 5.49500063E-03 (s) + + + sources: 1 + + ******************** + locating sources + ******************** + + reading source information from ./DATA/FORCESOLUTION file + + no UTM projection + + + source # 1 + source located in slice 0 + in element 803 + in elastic domain + + using force point source: + xi coordinate of source in that element: 0.0000000000000000 + eta coordinate of source in that element: 1.0000000000000000 + gamma coordinate of source in that element: -2.9296877861023226E-007 + + component of direction vector in East direction: 0.00000000 + component of direction vector in North direction: 0.00000000 + component of direction vector in Vertical direction: 1.00000000 + + nu1 = 1.00000000 0.00000000 0.00000000 + nu2 = 0.00000000 1.00000000 0.00000000 + nu3 = 0.00000000 0.00000000 1.00000000 + + at (x,y,z) coordinates = 50000.000000000000 40000.000000000000 -30000.000000000000 + + source time function: + using Ricker source time function + + using a source of dominant frequency 0.14999999999999999 + t0_ricker = 8.0000000000000000 tshift_src = 0.0000000000000000 + + lambda_S at dominant frequency = 11547.005208333334 + lambda_S at highest significant frequency = 4618.8020833333330 + + half duration in frequency: 0.14999999999999999 seconds**(-1) + + time shift: 0.0000000000000000 seconds + + magnitude of the source: + factor = 100000000000000.00 + + original (requested) position of the source: + + latitude: 40000.000000000000 + longitude: 50000.000000000000 + + x: 50000.000000000000 + y: 40000.000000000000 + depth: 30.000000000000000 km + topo elevation: 0.0000000000000000 + + position of the source that will be used: + + x: 50000.000000000000 + y: 40000.000000000000 + depth: 30.000000000000000 km + z: -30000.000000000000 + + error in location of the source: 0.00000000 m + + + + maximum error in location of the sources: 0.00000000 m + + + Elapsed time for detection of sources in seconds = 5.15000022E-04 + + End of source detection - done + + + receivers: + + there are 9 stations in file ./DATA/STATIONS + saving 9 stations inside the model in file ./DATA/STATIONS_FILTERED + excluding 0 stations located outside the model + + Total number of receivers = 9 + + + ******************** + locating receivers + ******************** + + reading receiver information from ./DATA/STATIONS_FILTERED file + + + station # 1 DB X55 + original latitude: 40000.0000 + original longitude: 55000.0000 + original x: 55000.0000 + original y: 40000.0000 + original depth: 0.00000000 m + horizontal distance: 5.00000000 + target x, y, z: 55000.0000 40000.0000 0.00000000 + closest estimate found: 0.00000000 m away + + receiver located in slice 0 + in element 1539 + in elastic domain + at coordinates: + xi = -0.49999970703130830 + eta = -1.0000000000000000 + gamma = 1.0000000000000000 + rotation matrix: + nu1 = 1.00000000 0.00000000 0.00000000 + nu2 = 0.00000000 1.00000000 0.00000000 + nu3 = 0.00000000 0.00000000 1.00000000 + x: 55000.000000000000 + y: 40000.000000000000 + depth: 0.0000000000000000 m + z: 0.0000000000000000 + + + + station # 2 DB X60 + original latitude: 41000.0000 + original longitude: 60000.0000 + original x: 60000.0000 + original y: 41000.0000 + original depth: 0.00000000 m + horizontal distance: 10.0498753 + target x, y, z: 60000.0000 41000.0000 0.00000000 + closest estimate found: 0.00000000 m away + + receiver located in slice 0 + in element 1540 + in elastic domain + at coordinates: + xi = -1.0000000000000000 + eta = -0.70000005859373959 + gamma = 1.0000000000000000 + rotation matrix: + nu1 = 1.00000000 0.00000000 0.00000000 + nu2 = 0.00000000 1.00000000 0.00000000 + nu3 = 0.00000000 0.00000000 1.00000000 + x: 60000.000000000000 + y: 41000.000000000000 + depth: 0.0000000000000000 m + z: 0.0000000000000000 + + + + station # 3 DB X65 + original latitude: 42000.0000 + original longitude: 65000.0000 + original x: 65000.0000 + original y: 42000.0000 + original depth: 0.00000000 m + horizontal distance: 15.1327457 + target x, y, z: 65000.0000 42000.0000 0.00000000 + closest estimate found: 0.00000000 m away + + receiver located in slice 0 + in element 1540 + in elastic domain + at coordinates: + xi = 0.50000058593772634 + eta = -0.40000011718747813 + gamma = 1.0000000000000000 + rotation matrix: + nu1 = 1.00000000 0.00000000 0.00000000 + nu2 = 0.00000000 1.00000000 0.00000000 + nu3 = 0.00000000 0.00000000 1.00000000 + x: 65000.000000000000 + y: 42000.000000000000 + depth: 0.0000000000000000 m + z: 0.0000000000000000 + + + + station # 4 DB X70 + original latitude: 44000.0000 + original longitude: 70000.0000 + original x: 70000.0000 + original y: 44000.0000 + original depth: 0.00000000 m + horizontal distance: 20.3960781 + target x, y, z: 70000.0000 44000.0000 0.00000000 + closest estimate found: 0.00000000 m away + + receiver located in slice 0 + in element 1541 + in elastic domain + at coordinates: + xi = 0.0000000000000000 + eta = 0.19999976562504579 + gamma = 1.0000000000000000 + rotation matrix: + nu1 = 1.00000000 0.00000000 0.00000000 + nu2 = 0.00000000 1.00000000 0.00000000 + nu3 = 0.00000000 0.00000000 1.00000000 + x: 70000.000000000000 + y: 44000.000000000000 + depth: 0.0000000000000000 m + z: 0.0000000000000000 + + + + station # 5 DB X75 + original latitude: 46000.0000 + original longitude: 75000.0000 + original x: 75000.0000 + original y: 46000.0000 + original depth: 0.00000000 m + horizontal distance: 25.7099209 + target x, y, z: 75000.0000 46000.0000 0.00000000 + closest estimate found: 0.00000000 m away + + receiver located in slice 0 + in element 1542 + in elastic domain + at coordinates: + xi = -0.50000058593772900 + eta = 0.79999964843756954 + gamma = 1.0000000000000000 + rotation matrix: + nu1 = 1.00000000 0.00000000 0.00000000 + nu2 = 0.00000000 1.00000000 0.00000000 + nu3 = 0.00000000 0.00000000 1.00000000 + x: 75000.000000000000 + y: 46000.000000000000 + depth: 0.0000000000000000 m + z: 0.0000000000000000 + + + + station # 6 DB X80 + original latitude: 49000.0000 + original longitude: 80000.0000 + original x: 80000.0000 + original y: 49000.0000 + original depth: 0.00000000 m + horizontal distance: 31.3209190 + target x, y, z: 80000.0000 49000.0000 0.00000000 + closest estimate found: 0.00000000 m away + + receiver located in slice 0 + in element 1557 + in elastic domain + at coordinates: + xi = 1.0000000000000000 + eta = -0.30000011718754577 + gamma = 1.0000000000000000 + rotation matrix: + nu1 = 1.00000000 0.00000000 0.00000000 + nu2 = 0.00000000 1.00000000 0.00000000 + nu3 = 0.00000000 0.00000000 1.00000000 + x: 80000.000000000000 + y: 49000.000000000000 + depth: 0.0000000000000000 m + z: 0.0000000000000000 + + + + station # 7 DB X85 + original latitude: 52000.0000 + original longitude: 85000.0000 + original x: 85000.0000 + original y: 52000.0000 + original depth: 0.00000000 m + horizontal distance: 37.0000000 + target x, y, z: 85000.0000 52000.0000 0.00000000 + closest estimate found: 0.00000000 m away + + receiver located in slice 0 + in element 1558 + in elastic domain + at coordinates: + xi = 0.50000058593772834 + eta = 0.60000023437509120 + gamma = 1.0000000000000000 + rotation matrix: + nu1 = 1.00000000 0.00000000 0.00000000 + nu2 = 0.00000000 1.00000000 0.00000000 + nu3 = 0.00000000 0.00000000 1.00000000 + x: 85000.000000000000 + y: 52000.000000000000 + depth: 0.0000000000000000 m + z: 0.0000000000000000 + + + + station # 8 DB X90 + original latitude: 56000.0000 + original longitude: 90000.0000 + original x: 90000.0000 + original y: 56000.0000 + original depth: 0.00000000 m + horizontal distance: 43.0813179 + target x, y, z: 90000.0000 56000.0000 0.00000000 + closest estimate found: 0.00000000 m away + + receiver located in slice 0 + in element 1574 + in elastic domain + at coordinates: + xi = 0.0000000000000000 + eta = -0.19999976562504579 + gamma = 1.0000000000000000 + rotation matrix: + nu1 = 1.00000000 0.00000000 0.00000000 + nu2 = 0.00000000 1.00000000 0.00000000 + nu3 = 0.00000000 0.00000000 1.00000000 + x: 90000.000000000000 + y: 56000.000000000000 + depth: 0.0000000000000000 m + z: 0.0000000000000000 + + + + station # 9 DB X95 + original latitude: 60000.0000 + original longitude: 95000.0000 + original x: 95000.0000 + original y: 60000.0000 + original depth: 0.00000000 m + horizontal distance: 49.2442894 + target x, y, z: 95000.0000 60000.0000 0.00000000 + closest estimate found: 0.00000000 m away + + receiver located in slice 0 + in element 1575 + in elastic domain + at coordinates: + xi = -0.50000058593772856 + eta = 1.0000000000000000 + gamma = 1.0000000000000000 + rotation matrix: + nu1 = 1.00000000 0.00000000 0.00000000 + nu2 = 0.00000000 1.00000000 0.00000000 + nu3 = 0.00000000 0.00000000 1.00000000 + x: 95000.000000000000 + y: 60000.000000000000 + depth: 0.0000000000000000 m + z: 0.0000000000000000 + + + + maximum error in location of all the receivers: 0.00000000 m + + Elapsed time for receiver detection in seconds = 1.20599999E-03 + + End of receiver detection - done + + found a total of 9 receivers in all the slices + + source arrays: + number of sources is 1 + size of source array = 1.43051147E-03 MB + = 1.39698386E-06 GB + + seismograms: + seismograms written by all processes + + Total number of simulation steps (NSTEP) = 250 + writing out seismograms at every NTSTEP_BETWEEN_OUTPUT_SEISMOS = 250 + number of subsampling steps for seismograms = 1 + Total number of samples for seismograms = 250 + + + maximum number of local receivers is 9 in slice 0 + size of maximum seismogram array = 2.57492065E-02 MB + = 2.51457095E-05 GB + + + Total number of samples for seismograms = 250 + + + Simulation setup: + + no acoustic simulation + incorporating elastic simulation + no poroelastic simulation + + no attenuation + no anisotropy + no oceans + no gravity + no movie simulation + + + preparing mass matrices + preparing constants + preparing wavefields + preparing fault simulation + no dynamic faults + no kinematic faults + no fault simulation + preparing gravity + no gravity simulation + preparing optimized arrays + number of regular shaped elements : 59 + number of irregular shaped elements: 1561 + fused array done + bandwidth test (STREAM TRIAD): + memory accesses = 3.79690933 MB + timing min/max = 3.30000003E-05 s / 4.40000003E-05 s + timing avg = 3.88000008E-05 s + bandwidth = 95.5649261 GB/s + + + Elapsed time for preparing timerun in seconds = 1.2229999999999949E-003 + + ************ + time loop + ************ + scheme: Newmark + + time step: 0.159999996 s + number of time steps: 250 + total simulated time: 40.0000000 seconds + start time: -8.00000000 seconds + + All processes are synchronized before the time loop + + Starting time iteration loop... + + Time step # 5 + Time: -7.36000013 seconds + Elapsed time in seconds = 1.4899999999999997E-002 + Elapsed time in hh:mm:ss = 0 h 00 m 00 s + Mean elapsed time per time step in seconds = 2.98000011E-03 + Max norm displacement vector U in all slices (m) = 4.05930878E-05 + Time steps done = 5 out of 250 + Time steps remaining = 245 + Estimated remaining time in seconds = 0.730099976 + Estimated remaining time in hh:mm:ss = 0 h 00 m 00 s + Estimated total run time in seconds = 0.745000005 + Estimated total run time in hh:mm:ss = 0 h 00 m 00 s + We have done 2.00000000 % of that + The run will finish approximately on (in local time): Fri Sep 19, 2025 14:13 + ************************************************************ + **** BEWARE: the above time estimates are not very reliable + **** because fewer than 100 iterations have been performed + ************************************************************ + + Time step # 250 + Time: 31.8400002 seconds + Elapsed time in seconds = 0.87902800000000003 + Elapsed time in hh:mm:ss = 0 h 00 m 00 s + Mean elapsed time per time step in seconds = 3.51611199E-03 + Max norm displacement vector U in all slices (m) = 5.76220118E-02 + Time steps done = 250 out of 250 + Time steps remaining = 0 + Estimated remaining time in seconds = 0.00000000 + Estimated remaining time in hh:mm:ss = 0 h 00 m 00 s + Estimated total run time in seconds = 0.879028022 + Estimated total run time in hh:mm:ss = 0 h 00 m 00 s + We have done 100.000000 % of that + + Writing the seismograms + Component: .semd + Total number of receivers saved is 9 + Total number of time steps written: 250 + Writing the seismograms in parallel took 6.78399997E-03 seconds + + Time loop finished. Timing info: + Total elapsed time in seconds = 0.88991600000000004 + Total elapsed time in hh:mm:ss = 0 h 00 m 00 s + + finalizing simulation + + + End of the simulation diff --git a/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/seismogram_plot.png b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/seismogram_plot.png new file mode 100644 index 000000000..dbd3e6f42 Binary files /dev/null and b/tests/unit-tests/displacement_tests/Newmark/serial/dim3/HomogeneousHalfspaceSmallNoABCForceSource/traces/seismogram_plot.png differ diff --git a/tests/unit-tests/io/README.md b/tests/unit-tests/io/README.md new file mode 100644 index 000000000..a6d324188 --- /dev/null +++ b/tests/unit-tests/io/README.md @@ -0,0 +1,6 @@ +# Note on the sources and receiver tests + +We implemented read_yaml_sources and read_yaml_receivers tests only to cover +the parsing of YAML specfem_config dictionaries from python. If we ever change +how the Python API parses sources and receivers to the cpp code, the tests and +io implementation are likely to require updates or deprecation. diff --git a/tests/unit-tests/io/io_framework_tests.cpp b/tests/unit-tests/io/io_framework_tests.cpp index 44734cf2b..203a738af 100644 --- a/tests/unit-tests/io/io_framework_tests.cpp +++ b/tests/unit-tests/io/io_framework_tests.cpp @@ -3,9 +3,12 @@ #include // Include all I/O framework headers +#include "../Kokkos_Environment.hpp" #include "io/ADIOS2/ADIOS2.hpp" #include "io/ASCII/ASCII.hpp" #include "io/HDF5/HDF5.hpp" +#include "io/NPY/NPY.hpp" +#include "io/NPZ/NPZ.hpp" #include "io/operators.hpp" // Test utilities @@ -26,6 +29,12 @@ template <> struct GetWriteType > { template <> struct GetWriteType > { using type = specfem::io::ADIOS2; }; +template <> struct GetWriteType > { + using type = specfem::io::NPY; +}; +template <> struct GetWriteType > { + using type = specfem::io::NPZ; +}; // Base test class class IOFrameworkTestBase : public ::testing::Test { @@ -53,6 +62,18 @@ class IOFrameworkTestBase : public ::testing::Test { } else if constexpr (std::is_same_v< IOType, specfem::io::ADIOS2 >) { base_name = "test_adios2_read"; + } else if constexpr (std::is_same_v< + IOType, specfem::io::NPY >) { + base_name = "test_npy_write"; + } else if constexpr (std::is_same_v >) { + base_name = "test_npy_read"; + } else if constexpr (std::is_same_v< + IOType, specfem::io::NPZ >) { + base_name = "test_npz_write"; + } else if constexpr (std::is_same_v >) { + base_name = "test_npz_read"; } else { base_name = "test_unknown"; } @@ -150,19 +171,24 @@ template class IOFrameworkTest : public IOFrameworkTestBase { // Type list for all I/O frameworks - conditionally include based on available // packages -using IOTypes = ::testing::Types, - specfem::io::ASCII +using IOTypes = ::testing::Types< + specfem::io::ASCII, + specfem::io::ASCII, specfem::io::NPY, + specfem::io::NPY +#ifndef NO_NPZ + , + specfem::io::NPZ, specfem::io::NPZ +#endif #ifndef NO_HDF5 - , - specfem::io::HDF5, - specfem::io::HDF5 + , + specfem::io::HDF5, specfem::io::HDF5 #endif #ifndef NO_ADIOS2 - , - specfem::io::ADIOS2, - specfem::io::ADIOS2 + , + specfem::io::ADIOS2, + specfem::io::ADIOS2 #endif - >; + >; TYPED_TEST_SUITE(IOFrameworkTest, IOTypes); @@ -184,6 +210,9 @@ TYPED_TEST(IOFrameworkTest, BasicFileOperations) { } else if constexpr (std::is_same_v >) { expected_name += ".bp"; + } else if constexpr (std::is_same_v< + IOType, specfem::io::NPZ >) { + expected_name += ".npz"; } EXPECT_TRUE(fs::exists(expected_name)); @@ -597,9 +626,8 @@ TYPED_TEST(IOFrameworkTest, ComplexWorkflow) { // Main test runner int main(int argc, char *argv[]) { - Kokkos::initialize(argc, argv); ::testing::InitGoogleTest(&argc, argv); + ::testing::AddGlobalTestEnvironment(new KokkosEnvironment); int result = RUN_ALL_TESTS(); - Kokkos::finalize(); return result; } diff --git a/tests/unit-tests/io/receivers/data/dim2/empty_stations.txt b/tests/unit-tests/io/receivers/data/dim2/empty_stations.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/unit-tests/io/receivers/data/dim2/single_station.txt b/tests/unit-tests/io/receivers/data/dim2/single_station.txt new file mode 100644 index 000000000..cc9372623 --- /dev/null +++ b/tests/unit-tests/io/receivers/data/dim2/single_station.txt @@ -0,0 +1 @@ +S0001 AA 300.0000000 3000.0000000 0.0 0.0 diff --git a/tests/unit-tests/io/receivers/data/dim2/ten_stations.txt b/tests/unit-tests/io/receivers/data/dim2/ten_stations.txt new file mode 100644 index 000000000..c7c638e55 --- /dev/null +++ b/tests/unit-tests/io/receivers/data/dim2/ten_stations.txt @@ -0,0 +1,10 @@ +S0001 AA 300.0000000 3000.0000000 0.0 0.0 +S0002 AA 640.0000000 3000.0000000 0.0 0.0 +S0003 AA 980.0000000 3000.0000000 0.0 0.0 +S0004 AA 1320.0000000 3000.0000000 0.0 0.0 +S0005 AA 1660.0000000 3000.0000000 0.0 0.0 +S0006 AA 2000.0000000 3000.0000000 0.0 0.0 +S0007 AA 2340.0000000 3000.0000000 0.0 0.0 +S0008 AA 2680.0000000 3000.0000000 0.0 0.0 +S0009 AA 3020.0000000 3000.0000000 0.0 0.0 +S0010 AA 3360.0000000 3000.0000000 0.0 0.0 diff --git a/tests/unit-tests/io/receivers/data/dim2/three_stations.txt b/tests/unit-tests/io/receivers/data/dim2/three_stations.txt new file mode 100644 index 000000000..90c7d83de --- /dev/null +++ b/tests/unit-tests/io/receivers/data/dim2/three_stations.txt @@ -0,0 +1,3 @@ +S0001 AA 300.0000000 3000.0000000 0.0 0.0 +S0002 AA 640.0000000 3000.0000000 0.0 0.0 +S0003 AA 980.0000000 3000.0000000 0.0 0.0 diff --git a/tests/unit-tests/io/receivers/data/dim2/two_stations.txt b/tests/unit-tests/io/receivers/data/dim2/two_stations.txt new file mode 100644 index 000000000..f26e9d738 --- /dev/null +++ b/tests/unit-tests/io/receivers/data/dim2/two_stations.txt @@ -0,0 +1,2 @@ +S0001 AA 300.0000000 3000.0000000 0.0 0.0 +S0002 AA 640.0000000 3000.0000000 0.0 0.0 diff --git a/tests/unit-tests/io/receivers/data/dim3/empty_stations_3d.txt b/tests/unit-tests/io/receivers/data/dim3/empty_stations_3d.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/unit-tests/io/receivers/data/dim3/single_station_3d.txt b/tests/unit-tests/io/receivers/data/dim3/single_station_3d.txt new file mode 100644 index 000000000..bf85729a8 --- /dev/null +++ b/tests/unit-tests/io/receivers/data/dim3/single_station_3d.txt @@ -0,0 +1 @@ +S0001 AA 3000.0000000 300.0000000 0.0 2000.0000000 diff --git a/tests/unit-tests/io/receivers/data/dim3/three_stations_3d.txt b/tests/unit-tests/io/receivers/data/dim3/three_stations_3d.txt new file mode 100644 index 000000000..03ecb2764 --- /dev/null +++ b/tests/unit-tests/io/receivers/data/dim3/three_stations_3d.txt @@ -0,0 +1,3 @@ +S0001 AA 3000.0000000 300.0000000 0.0 2000.0000000 +S0002 AA 3000.0000000 640.0000000 0.0 2000.0000000 +S0003 AA 3000.0000000 980.0000000 0.0 2000.0000000 diff --git a/tests/unit-tests/io/receivers/data/dim3/two_stations_3d.txt b/tests/unit-tests/io/receivers/data/dim3/two_stations_3d.txt new file mode 100644 index 000000000..a4d2b06a3 --- /dev/null +++ b/tests/unit-tests/io/receivers/data/dim3/two_stations_3d.txt @@ -0,0 +1,2 @@ +S0001 AA 3000.0000000 300.0000000 0.0 2000.0000000 +S0002 AA 3000.0000000 640.0000000 0.0 2000.0000000 diff --git a/tests/unit-tests/io/receivers/test_read_stations_file.cpp b/tests/unit-tests/io/receivers/test_read_stations_file.cpp new file mode 100644 index 000000000..b59baa1b4 --- /dev/null +++ b/tests/unit-tests/io/receivers/test_read_stations_file.cpp @@ -0,0 +1,117 @@ +#include "../../Kokkos_Environment.hpp" +#include "enumerations/specfem_enums.hpp" +#include "io/interface.hpp" +#include "specfem/receivers.hpp" +#include "test_receiver_solutions.hpp" +#include +#include +#include + +/** + * @brief Parameters for testing receiver reading from files. + * + * @tparam DimensionTag + */ +template struct ReceiverTestParam { + std::string testname; + std::string stationsfilename; + std::vector > > + expected_receivers; + type_real angle; +}; + +/** + * @brief Stream insertion operator for ReceiverTestParam. + * + * @tparam DimensionTag + * @param os + * @param params + * @return std::ostream& + */ +template +std::ostream &operator<<(std::ostream &os, + const ReceiverTestParam ¶ms) { + os << params.testname; + return os; +} + +using ReceiverTestParam2D = ReceiverTestParam; +using ReceiverTestParam3D = ReceiverTestParam; + +class Read2DReceiversTest + : public ::testing::TestWithParam {}; + +TEST_P(Read2DReceiversTest, ReadSTATIONSfile) { + const auto ¶m = GetParam(); + + auto receivers = + specfem::io::read_2d_receivers(param.stationsfilename, param.angle); + + ASSERT_EQ(receivers.size(), param.expected_receivers.size()); + + for (size_t i = 0; i < receivers.size(); ++i) { + auto receiver = receivers[i]; + auto expected_receiver = param.expected_receivers[i]; + + EXPECT_EQ(*receiver, *expected_receiver) + << "Receiver mismatch at index " << i << ":\n" + << "Expected: " << expected_receiver->print() + << "\nActual: " << receiver->print(); + } +} + +INSTANTIATE_TEST_SUITE_P( + IO_TESTS, Read2DReceiversTest, + ::testing::Values( + ReceiverTestParam2D{ "Empty file", + "io/receivers/data/dim2/empty_stations.txt", + empty_receivers_2d, 0.0 }, + ReceiverTestParam2D{ "Single receiver", + "io/receivers/data/dim2/single_station.txt", + single_receiver_2d, 0.0 }, + ReceiverTestParam2D{ "Two receivers", + "io/receivers/data/dim2/two_stations.txt", + two_receivers_2d, 0.0 }, + ReceiverTestParam2D{ "Three receivers", + "io/receivers/data/dim2/three_stations.txt", + three_receivers_2d, 0.0 }, + ReceiverTestParam2D{ "Ten receivers", + "io/receivers/data/dim2/ten_stations.txt", + ten_receivers_2d, 0.0 })); + +class Read3DReceiversTest + : public ::testing::TestWithParam {}; + +TEST_P(Read3DReceiversTest, ReadSTATIONSfile) { + const auto ¶m = GetParam(); + + auto receivers = specfem::io::read_3d_receivers(param.stationsfilename); + + ASSERT_EQ(receivers.size(), param.expected_receivers.size()); + + for (size_t i = 0; i < receivers.size(); ++i) { + auto receiver = receivers[i]; + auto expected_receiver = param.expected_receivers[i]; + + EXPECT_EQ(*receiver, *expected_receiver) + << "Receiver mismatch at index " << i << ":\n" + << "Expected: " << expected_receiver->print() + << "\nActual: " << receiver->print(); + } +} + +INSTANTIATE_TEST_SUITE_P( + IO_TESTS, Read3DReceiversTest, + ::testing::Values( + ReceiverTestParam3D{ "Empty file", + "io/receivers/data/dim3/empty_stations_3d.txt", + empty_receivers_3d, 0.0 }, + ReceiverTestParam3D{ "Single receiver", + "io/receivers/data/dim3/single_station_3d.txt", + single_receiver_3d, 0.0 }, + ReceiverTestParam3D{ "Two receivers", + "io/receivers/data/dim3/two_stations_3d.txt", + two_receivers_3d, 0.0 }, + ReceiverTestParam3D{ "Three receivers", + "io/receivers/data/dim3/three_stations_3d.txt", + three_receivers_3d, 0.0 })); diff --git a/tests/unit-tests/io/receivers/test_read_yaml.cpp b/tests/unit-tests/io/receivers/test_read_yaml.cpp new file mode 100644 index 000000000..01999ddec --- /dev/null +++ b/tests/unit-tests/io/receivers/test_read_yaml.cpp @@ -0,0 +1,198 @@ +#include "../../Kokkos_Environment.hpp" +#include "enumerations/specfem_enums.hpp" +#include "io/interface.hpp" +#include "specfem/receivers.hpp" +#include "test_receiver_solutions.hpp" +#include +#include +#include +#include + +/** + * @brief Parameters for testing receiver reading from YAML nodes. + * + * @tparam DimensionTag + */ +template struct ReceiverYAMLTestParam { + std::string testname; + YAML::Node stations_node; + std::vector > > + expected_receivers; + type_real angle; +}; + +/** + * @brief Stream insertion operator for ReceiverYAMLTestParam. + * + * @tparam DimensionTag + * @param os + * @param params + * @return std::ostream& + */ +template +std::ostream &operator<<(std::ostream &os, + const ReceiverYAMLTestParam ¶ms) { + os << params.testname; + return os; +} + +using ReceiverYAMLTestParam2D = + ReceiverYAMLTestParam; + +// YAML node test data for 2D receivers +const static YAML::Node empty_stations_yaml_2d = []() { + YAML::Node node; + node["stations"] = YAML::Node(YAML::NodeType::Sequence); + return node; +}(); + +const static YAML::Node single_receiver_yaml_2d = []() { + YAML::Node node; + YAML::Node station; + station["network"] = "AA"; + station["station"] = "S0001"; + station["x"] = 300.0; + station["z"] = 3000.0; + node["stations"].push_back(station); + return node; +}(); + +const static YAML::Node two_receivers_yaml_2d = []() { + YAML::Node node; + YAML::Node station1; + station1["network"] = "AA"; + station1["station"] = "S0001"; + station1["x"] = 300.0; + station1["z"] = 3000.0; + node["stations"].push_back(station1); + + YAML::Node station2; + station2["network"] = "AA"; + station2["station"] = "S0002"; + station2["x"] = 640.0; + station2["z"] = 3000.0; + node["stations"].push_back(station2); + return node; +}(); + +// YAML node test data for 3D receivers +const static YAML::Node empty_stations_yaml_3d = []() { + YAML::Node node; + node["stations"] = YAML::Node(YAML::NodeType::Sequence); + return node; +}(); + +const static YAML::Node single_receiver_yaml_3d = []() { + YAML::Node node; + YAML::Node station; + station["network"] = "AA"; + station["station"] = "S0001"; + station["x"] = 300.0; + station["y"] = 3000.0; + station["z"] = 2000.0; + node["stations"].push_back(station); + return node; +}(); + +const static YAML::Node two_receivers_yaml_3d = []() { + YAML::Node node; + YAML::Node station1; + station1["network"] = "AA"; + station1["station"] = "S0001"; + station1["x"] = 300.0; + station1["y"] = 3000.0; + station1["z"] = 2000.0; + node["stations"].push_back(station1); + + YAML::Node station2; + station2["network"] = "AA"; + station2["station"] = "S0002"; + station2["x"] = 640.0; + station2["y"] = 3000.0; + station2["z"] = 2000.0; + node["stations"].push_back(station2); + return node; +}(); + +class Read2DReceiversYAMLTest + : public ::testing::TestWithParam {}; + +TEST_P(Read2DReceiversYAMLTest, ReadYAMLnode) { + const auto ¶m = GetParam(); + + if (param.expected_receivers.empty()) { + EXPECT_THROW( + specfem::io::read_2d_receivers(param.stations_node, param.angle), + std::runtime_error); + return; + } + + auto receivers = + specfem::io::read_2d_receivers(param.stations_node, param.angle); + + ASSERT_EQ(receivers.size(), param.expected_receivers.size()); + + for (size_t i = 0; i < receivers.size(); ++i) { + auto receiver = receivers[i]; + auto expected_receiver = param.expected_receivers[i]; + + EXPECT_EQ(*receiver, *expected_receiver) + << "Receiver mismatch at index " << i << ":\n" + << "Expected: " << expected_receiver->print() + << "\nActual: " << receiver->print(); + } +} + +INSTANTIATE_TEST_SUITE_P( + IO_TESTS, Read2DReceiversYAMLTest, + ::testing::Values(ReceiverYAMLTestParam2D{ "2D YAML Empty", + empty_stations_yaml_2d, + empty_receivers_2d, 0.0 }, + ReceiverYAMLTestParam2D{ "2D YAML Single receiver", + single_receiver_yaml_2d, + single_receiver_2d, 0.0 }, + ReceiverYAMLTestParam2D{ "2D YAML Two receivers", + two_receivers_yaml_2d, + two_receivers_2d, 0.0 })); + +using ReceiverYAMLTestParam3D = + ReceiverYAMLTestParam; + +class Read3DReceiversYAMLTest + : public ::testing::TestWithParam {}; + +TEST_P(Read3DReceiversYAMLTest, ReadYAMLnode) { + const auto ¶m = GetParam(); + + if (param.expected_receivers.empty()) { + EXPECT_THROW(specfem::io::read_3d_receivers(param.stations_node), + std::runtime_error); + return; + } + + auto receivers = specfem::io::read_3d_receivers(param.stations_node); + + ASSERT_EQ(receivers.size(), param.expected_receivers.size()); + + for (size_t i = 0; i < receivers.size(); ++i) { + auto receiver = receivers[i]; + auto expected_receiver = param.expected_receivers[i]; + + EXPECT_EQ(*receiver, *expected_receiver) + << "Receiver mismatch at index " << i << ":\n" + << "Expected: " << expected_receiver->print() + << "\nActual: " << receiver->print(); + } +} + +INSTANTIATE_TEST_SUITE_P( + IO_TESTS, Read3DReceiversYAMLTest, + ::testing::Values(ReceiverYAMLTestParam3D{ "3D YAML Empty", + empty_stations_yaml_3d, + empty_receivers_3d, 0.0 }, + ReceiverYAMLTestParam3D{ "3D YAML Single receiver", + single_receiver_yaml_3d, + single_receiver_3d, 0.0 }, + ReceiverYAMLTestParam3D{ "3D YAML Two receivers", + two_receivers_yaml_3d, + two_receivers_3d, 0.0 })); diff --git a/tests/unit-tests/io/receivers/test_receiver_solutions.cpp b/tests/unit-tests/io/receivers/test_receiver_solutions.cpp new file mode 100644 index 000000000..1fa6a3403 --- /dev/null +++ b/tests/unit-tests/io/receivers/test_receiver_solutions.cpp @@ -0,0 +1,90 @@ +#include "test_receiver_solutions.hpp" + +// 2D receiver test solutions +const ReceiverVector2DType empty_receivers_2d = {}; + +const ReceiverVector2DType single_receiver_2d = { std::make_shared< + specfem::receivers::receiver >( + "AA", "S0001", 300.0, 3000.0, 0.0) }; + +const ReceiverVector2DType two_receivers_2d = { + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0001", 300.0, 3000.0, 0.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0002", 640.0, 3000.0, 0.0) +}; + +const ReceiverVector2DType three_receivers_2d = { + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0001", 300.0, 3000.0, 0.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0002", 640.0, 3000.0, 0.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0003", 980.0, 3000.0, 0.0) +}; + +const ReceiverVector2DType ten_receivers_2d = { + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0001", 300.0, 3000.0, 0.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0002", 640.0, 3000.0, 0.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0003", 980.0, 3000.0, 0.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0004", 1320.0, 3000.0, 0.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0005", 1660.0, 3000.0, 0.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0006", 2000.0, 3000.0, 0.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0007", 2340.0, 3000.0, 0.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0008", 2680.0, 3000.0, 0.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0009", 3020.0, 3000.0, 0.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0010", 3360.0, 3000.0, 0.0) +}; + +// 3D receiver test solutions +const ReceiverVector3DType empty_receivers_3d = {}; + +const ReceiverVector3DType single_receiver_3d = { std::make_shared< + specfem::receivers::receiver >( + "AA", "S0001", 300.0, 3000.0, 2000.0) }; + +const ReceiverVector3DType two_receivers_3d = { + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0001", 300.0, 3000.0, 2000.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0002", 640.0, 3000.0, 2000.0) +}; + +const ReceiverVector3DType three_receivers_3d = { + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0001", 300.0, 3000.0, 2000.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0002", 640.0, 3000.0, 2000.0), + std::make_shared< + specfem::receivers::receiver >( + "AA", "S0003", 980.0, 3000.0, 2000.0) +}; diff --git a/tests/unit-tests/io/receivers/test_receiver_solutions.hpp b/tests/unit-tests/io/receivers/test_receiver_solutions.hpp new file mode 100644 index 000000000..28694cf85 --- /dev/null +++ b/tests/unit-tests/io/receivers/test_receiver_solutions.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include "specfem/receivers.hpp" +#include +#include + +/** + * @brief Shared test receiver solutions for both file and YAML tests + */ + +using ReceiverVector2DType = std::vector > >; +using ReceiverVector3DType = std::vector > >; + +// 2D receiver test solutions +extern const ReceiverVector2DType empty_receivers_2d; +extern const ReceiverVector2DType single_receiver_2d; +extern const ReceiverVector2DType two_receivers_2d; +extern const ReceiverVector2DType three_receivers_2d; +extern const ReceiverVector2DType ten_receivers_2d; + +// 3D receiver test solutions +extern const ReceiverVector3DType empty_receivers_3d; +extern const ReceiverVector3DType single_receiver_3d; +extern const ReceiverVector3DType two_receivers_3d; +extern const ReceiverVector3DType three_receivers_3d; diff --git a/tests/unit-tests/io/sources/data/dim2/multiple_sources.yaml b/tests/unit-tests/io/sources/data/dim2/multiple_sources.yaml new file mode 100644 index 000000000..06b1ef91d --- /dev/null +++ b/tests/unit-tests/io/sources/data/dim2/multiple_sources.yaml @@ -0,0 +1,23 @@ +number-of-sources: 2 +sources: + - moment-tensor: + x: 2000.0 + z: 3000.0 + Mxx: 1.0 + Mzz: 1.0 + Mxz: 0.0 + Ricker: + factor: 1.0e10 + tshift: 30.0 + f0: 1.0 + - force: + x : 2500.0 + z : 2500.0 + source_surf: false + angle : 0.0 + vx : 0.0 + vz : 0.0 + Ricker: + factor: 1e10 + tshift: 5.0 + f0: 10.0 diff --git a/tests/unit-tests/io/sources/data/dim3/multiple_sources.yaml b/tests/unit-tests/io/sources/data/dim3/multiple_sources.yaml new file mode 100644 index 000000000..90b63c8cc --- /dev/null +++ b/tests/unit-tests/io/sources/data/dim3/multiple_sources.yaml @@ -0,0 +1,29 @@ +number-of-sources: 2 +sources: + - force: + x : 2500.0 + y : 2500.0 + z : 2500.0 + source_surf: false + angle : 0.0 + fx : 0.0 + fy : 0.0 + fz : 0.0 + Ricker: + factor: 1e10 + tshift: 5.0 + f0: 10.0 + - moment-tensor: + x: 2000.0 + y: 3000.0 + z: 2000.0 + Mxx: 1.0 + Myy: 1.0 + Mzz: 0.0 + Mxy: 1.0 + Mxz: 0.0 + Myz: 0.0 + Ricker: + factor: 1.0e10 + tshift: 30.0 + f0: 1.0 diff --git a/tests/unit-tests/io/sources/test_config.yaml b/tests/unit-tests/io/sources/test_config.yaml deleted file mode 100644 index dedee9070..000000000 --- a/tests/unit-tests/io/sources/test_config.yaml +++ /dev/null @@ -1,12 +0,0 @@ -2D Tests: - - name : "2D Single Force" - sources: io/sources/data/dim2/single_force.yaml - - name : "2D Single Moment Tensor" - sources: io/sources/data/dim2/single_moment_tensor.yaml - - name : "2D Single Cosserat Force" - sources: io/sources/data/dim2/single_cosserat_force.yaml -3D Tests: - - name : "3D Single Force" - sources: io/sources/data/dim3/single_force.yaml - - name : "3D Single Moment Tensor" - sources: io/sources/data/dim3/single_moment_tensor.yaml diff --git a/tests/unit-tests/io/sources/test_read_sources.cpp b/tests/unit-tests/io/sources/test_read_sources.cpp deleted file mode 100644 index ef64ad47a..000000000 --- a/tests/unit-tests/io/sources/test_read_sources.cpp +++ /dev/null @@ -1,178 +0,0 @@ -#include "../../Kokkos_Environment.hpp" -#include "enumerations/specfem_enums.hpp" -#include "enumerations/wavefield.hpp" -#include "io/interface.hpp" -#include "source_time_function/interface.hpp" -#include "specfem/source.hpp" -#include "specfem_setup.hpp" -#include -#include -#include - -// Local constants since these would be set by the simulation. -int nsteps = 100; -type_real dt = 0.01; -int tshift = 0; // for the single sources we are reading! -type_real user_t0 = -10.0; // user defined t0 - -// Internal t0 is being fixed using the halfduration of the source - -specfem::wavefield::simulation_field wavefield_type = - specfem::wavefield::simulation_field::forward; -using SourceVector2DType = std::vector > >; -using SourceVector3DType = std::vector > >; - -const static std::unordered_map expected_2d = { - { "2D Single Moment Tensor", - { std::make_shared< - specfem::sources::moment_tensor >( - 2000.0, 3000.0, 1.0, 1.0, 0.0, - std::make_unique( - nsteps, dt, 1.0, 30.0, 1.0e10, false), - wavefield_type) } }, - { "2D Single Force", - { std::make_shared< - specfem::sources::force >( - 2500.0, 2500.0, 0.0, - std::make_unique(nsteps, dt, 10.0, - 5.0, 1.0e10, false), - wavefield_type) } }, - { "2D Single Cosserat Force", - { std::make_shared< - specfem::sources::cosserat_force >( - 2500.0, 2500.0, 0.0, 1.0, 0.0, - std::make_unique(nsteps, dt, 10.0, - 0.0, 1e10, false), - wavefield_type) } } -}; - -const static std::unordered_map expected_3d = { - { "3D Single Force", - { std::make_shared< - specfem::sources::force >( - 2500.0, 2500.0, 2500.0, 0.0, 0.0, 0.0, - std::make_unique(nsteps, dt, 10.0, - 5.0, 1.0e10, false), - wavefield_type) } }, - { "3D Single Moment Tensor", - { std::make_shared< - specfem::sources::moment_tensor >( - 2000.0, 3000.0, 2000.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, - std::make_unique( - nsteps, dt, 1.0, 30.0, 1.0e10, false), - wavefield_type) } } -}; - -TEST(IO_TESTS, read_2d_sources) { - /** - * This test checks whether 2D sources are read correctly - */ - - std::string test_data_file = "io/sources/test_config.yaml"; - - YAML::Node test_config = YAML::LoadFile(test_data_file); - YAML::Node sources_configs = test_config["2D Tests"]; - - for (const auto &source_config : sources_configs) { - - std::string source_file = source_config["sources"].as(); - std::string key = source_config["name"].as(); - - std::cout << "-------------------------------------------------------\n" - << "\033[0;32m[RUNNING]\033[0m Test read " << key << ":\n" - << "-------------------------------------------------------\n\n" - << std::endl; - - auto [sources, _t0] = specfem::io::read_2d_sources( - source_file, nsteps, user_t0, dt, specfem::simulation::type::forward); - - if (expected_2d.find(key) != expected_2d.end()) { - - auto expected_sources = expected_2d.at(key); - - ASSERT_EQ(sources.size(), expected_sources.size()); - - for (size_t i = 0; i < sources.size(); ++i) { - - auto source = sources[i]; - auto expected_source = expected_sources[i]; - - // Print source id - std::cout << "Act. Source type: " << typeid(source).name() << "\n"; - std::cout << "Exp. Source type: " << typeid(expected_source).name() - << "\n"; - - // Since we have comparison operators defined, we can use them - EXPECT_EQ(*source, *expected_source) - << "Source mismatch at index " << i << ":\n" - << "Expected:\n" - << expected_source->print() - << "\n" - "!=\n" - << "Actual:\n" - << source->print() << "\n"; - } - } else { - FAIL() << "Source not in expected list: " << key; - } - - std::cout << "-------------------------------------------------------\n" - << "\033[0;32m[FINISHED]\033[0m Test read" << key << ".\n" - << "-------------------------------------------------------\n\n" - << std::endl; - } -} - -TEST(IO_TESTS, read_3d_sources) { - /** - * This test checks whether 3D sources are read correctly - */ - - std::string test_data_file = "io/sources/test_config.yaml"; - - YAML::Node test_config = YAML::LoadFile(test_data_file); - YAML::Node sources_configs = test_config["3D Tests"]; - - for (const auto &source_config : sources_configs) { - - std::string source_file = source_config["sources"].as(); - std::string key = source_config["name"].as(); - - auto [sources, _t0] = specfem::io::read_3d_sources( - source_file, nsteps, user_t0, dt, specfem::simulation::type::forward); - - if (expected_3d.find(key) != expected_3d.end()) { - - auto expected_sources = expected_3d.at(key); - - ASSERT_EQ(sources.size(), expected_sources.size()); - - for (size_t i = 0; i < sources.size(); ++i) { - - SCOPED_TRACE("Testing source: " + key); - - auto source = sources[i]; - auto expected_source = expected_sources[i]; - - // Print source id - std::cout << "Act. Source type: " << typeid(source).name() << "\n"; - std::cout << "Exp. Source type: " << typeid(expected_source).name() - << "\n"; - - // Since we have comparison operators defined, we can use them - EXPECT_EQ(*source, *expected_source) - << "Source mismatch at index " << i << ":\n" - << "Expected:\n" - << expected_source->print() - << "\n" - "!=\n" - << "Actual:\n" - << source->print() << "\n"; - } - } else { - FAIL() << "Source not in expected list: " << key; - } - } -} diff --git a/tests/unit-tests/io/sources/test_read_sources_file.cpp b/tests/unit-tests/io/sources/test_read_sources_file.cpp new file mode 100644 index 000000000..23e958932 --- /dev/null +++ b/tests/unit-tests/io/sources/test_read_sources_file.cpp @@ -0,0 +1,136 @@ +#include "../../Kokkos_Environment.hpp" +#include "enumerations/specfem_enums.hpp" +#include "enumerations/wavefield.hpp" +#include "io/interface.hpp" +#include "source_time_function/interface.hpp" +#include "specfem/source.hpp" +#include "specfem_setup.hpp" +#include "test_source_solutions.hpp" +#include +#include +#include + +// Local constants since these would be set by the simulation. +extern int nsteps; +extern type_real dt; +extern int tshift; +extern type_real user_t0; + +/** + * @brief Parameters for testing source reading. + * + * @tparam DimensionTag + */ +template struct SourceTestParam { + std::string testname; + std::string sourcefilename; + std::vector > > + expected_sources; +}; + +/** + * @brief Stream insertion operator for SourceTestParam. + * + * @tparam DimensionTag + * @param os + * @param params + * @return std::ostream& + */ +template +std::ostream &operator<<(std::ostream &os, + const SourceTestParam ¶ms) { + os << params.testname; + return os; +} + +using SourceTestParam2D = SourceTestParam; + +class Read2DSourcesTest : public ::testing::TestWithParam {}; + +TEST_P(Read2DSourcesTest, ReadSources) { + const auto ¶m = GetParam(); + + auto [sources, _t0] = + specfem::io::read_2d_sources(param.sourcefilename, nsteps, user_t0, dt, + specfem::simulation::type::forward); + + ASSERT_EQ(sources.size(), param.expected_sources.size()); + + for (size_t i = 0; i < sources.size(); ++i) { + auto source = sources[i]; + auto expected_source = param.expected_sources[i]; + + std::cout << "Act. Source type: " << typeid(source).name() << "\n"; + std::cout << "Exp. Source type: " << typeid(expected_source).name() << "\n"; + + EXPECT_EQ(*source, *expected_source) + << "Source mismatch at index " << i << ":\n" + << "Expected:\n" + << expected_source->print() + << "\n" + "!=\n" + << "Actual:\n" + << source->print() << "\n"; + } +} + +INSTANTIATE_TEST_SUITE_P( + IO_TESTS, Read2DSourcesTest, + ::testing::Values( + SourceTestParam2D{ "2D Single Moment Tensor", + "io/sources/data/dim2/single_moment_tensor.yaml", + single_moment_tensor_2d }, + SourceTestParam2D{ "2D Single Force", + "io/sources/data/dim2/single_force.yaml", + single_force_2d }, + SourceTestParam2D{ "2D Single Cosserat Force", + "io/sources/data/dim2/single_cosserat_force.yaml", + single_cosserat_force_2d }, + SourceTestParam2D{ "2D Multiple Sources", + "io/sources/data/dim2/multiple_sources.yaml", + multiple_sources_2d })); + +using SourceTestParam3D = SourceTestParam; + +class Read3DSourcesTest : public ::testing::TestWithParam {}; + +TEST_P(Read3DSourcesTest, ReadSources) { + const auto ¶m = GetParam(); + + auto [sources, _t0] = + specfem::io::read_3d_sources(param.sourcefilename, nsteps, user_t0, dt, + specfem::simulation::type::forward); + + ASSERT_EQ(sources.size(), param.expected_sources.size()); + + for (size_t i = 0; i < sources.size(); ++i) { + + auto source = sources[i]; + auto expected_source = param.expected_sources[i]; + + std::cout << "Act. Source type: " << typeid(source).name() << "\n"; + std::cout << "Exp. Source type: " << typeid(expected_source).name() << "\n"; + + EXPECT_EQ(*source, *expected_source) + << "Source mismatch at index " << i << ":\n" + << "Expected:\n" + << expected_source->print() + << "\n" + "!=\n" + << "Actual:\n" + << source->print() << "\n"; + } +} + +INSTANTIATE_TEST_SUITE_P( + IO_TESTS, Read3DSourcesTest, + ::testing::Values( + SourceTestParam3D{ "3D Single Force", + "io/sources/data/dim3/single_force.yaml", + single_force_3d }, + SourceTestParam3D{ "3D Single Moment Tensor", + "io/sources/data/dim3/single_moment_tensor.yaml", + single_moment_tensor_3d }, + SourceTestParam3D{ "3D Multiple Sources", + "io/sources/data/dim3/multiple_sources.yaml", + multiple_sources_3d })); diff --git a/tests/unit-tests/io/sources/test_read_sources_yaml.cpp b/tests/unit-tests/io/sources/test_read_sources_yaml.cpp new file mode 100644 index 000000000..6b52b01c1 --- /dev/null +++ b/tests/unit-tests/io/sources/test_read_sources_yaml.cpp @@ -0,0 +1,312 @@ +#include "../../Kokkos_Environment.hpp" +#include "enumerations/specfem_enums.hpp" +#include "enumerations/wavefield.hpp" +#include "io/interface.hpp" +#include "source_time_function/interface.hpp" +#include "specfem/source.hpp" +#include "specfem_setup.hpp" +#include "test_source_solutions.hpp" +#include +#include +#include +#include + +// Local constants since these would be set by the simulation. +extern int nsteps; +extern type_real dt; +extern int tshift; +extern type_real user_t0; + +/** + * @brief Parameters for testing source reading from YAML nodes. + * + * @tparam DimensionTag + */ +template struct SourceYAMLTestParam { + std::string testname; + YAML::Node sources_node; + std::vector > > + expected_sources; +}; + +/** + * @brief Stream insertion operator for SourceYAMLTestParam. + * + * @tparam DimensionTag + * @param os + * @param params + * @return std::ostream& + */ +template +std::ostream &operator<<(std::ostream &os, + const SourceYAMLTestParam ¶ms) { + os << params.testname; + return os; +} + +using SourceYAMLTestParam2D = + SourceYAMLTestParam; +using SourceYAMLTestParam3D = + SourceYAMLTestParam; + +// YAML node test data for 2D sources +const static YAML::Node single_moment_tensor_yaml_2d = []() { + YAML::Node node; + node["number-of-sources"] = 1; + YAML::Node source; + YAML::Node moment_tensor; + moment_tensor["x"] = 2000.0; + moment_tensor["z"] = 3000.0; + moment_tensor["Mxx"] = 1.0; + moment_tensor["Mzz"] = 1.0; + moment_tensor["Mxz"] = 0.0; + moment_tensor["Ricker"]["factor"] = 1.0e10; + moment_tensor["Ricker"]["tshift"] = 30.0; + moment_tensor["Ricker"]["f0"] = 1.0; + source["moment-tensor"] = moment_tensor; + node["sources"].push_back(source); + return node; +}(); + +const static YAML::Node single_force_yaml_2d = []() { + YAML::Node node; + node["number-of-sources"] = 1; + YAML::Node source; + YAML::Node force; + force["x"] = 2500.0; + force["z"] = 2500.0; + force["source_surf"] = false; + force["angle"] = 0.0; + force["vx"] = 0.0; + force["vz"] = 0.0; + force["Ricker"]["factor"] = 1e10; + force["Ricker"]["tshift"] = 5.0; + force["Ricker"]["f0"] = 10.0; + source["force"] = force; + node["sources"].push_back(source); + return node; +}(); + +const static YAML::Node single_cosserat_force_yaml_2d = []() { + YAML::Node node; + node["number-of-sources"] = 1; + YAML::Node source; + YAML::Node cosserat_force; + cosserat_force["x"] = 2500.0; + cosserat_force["z"] = 2500.0; + cosserat_force["source_surf"] = false; + cosserat_force["angle"] = 0.0; + cosserat_force["vx"] = 0.0; + cosserat_force["vz"] = 0.0; + cosserat_force["f"] = 0.0; + cosserat_force["fc"] = 1.0; + cosserat_force["Ricker"]["factor"] = 1.0e10; + cosserat_force["Ricker"]["tshift"] = 0.0; + cosserat_force["Ricker"]["f0"] = 10.0; + source["cosserat-force"] = cosserat_force; + node["sources"].push_back(source); + return node; +}(); + +// YAML node test data for 3D sources +const static YAML::Node single_force_yaml_3d = []() { + YAML::Node node; + node["number-of-sources"] = 1; + YAML::Node source; + YAML::Node force; + force["x"] = 2500.0; + force["y"] = 2500.0; + force["z"] = 2500.0; + force["source_surf"] = false; + force["angle"] = 0.0; + force["fx"] = 0.0; + force["fy"] = 0.0; + force["fz"] = 0.0; + force["Ricker"]["factor"] = 1e10; + force["Ricker"]["tshift"] = 5.0; + force["Ricker"]["f0"] = 10.0; + source["force"] = force; + node["sources"].push_back(source); + return node; +}(); + +const static YAML::Node single_moment_tensor_yaml_3d = []() { + YAML::Node node; + node["number-of-sources"] = 1; + YAML::Node source; + YAML::Node moment_tensor; + moment_tensor["x"] = 2000.0; + moment_tensor["y"] = 3000.0; + moment_tensor["z"] = 2000.0; + moment_tensor["Mxx"] = 1.0; + moment_tensor["Myy"] = 1.0; + moment_tensor["Mzz"] = 0.0; + moment_tensor["Mxy"] = 1.0; + moment_tensor["Mxz"] = 0.0; + moment_tensor["Myz"] = 0.0; + moment_tensor["Ricker"]["factor"] = 1.0e10; + moment_tensor["Ricker"]["tshift"] = 30.0; + moment_tensor["Ricker"]["f0"] = 1.0; + source["moment-tensor"] = moment_tensor; + node["sources"].push_back(source); + return node; +}(); + +const static YAML::Node multiple_sources_yaml_2d = []() { + YAML::Node node; + node["number-of-sources"] = 2; + + // First source - moment tensor + YAML::Node source1; + YAML::Node moment_tensor; + moment_tensor["x"] = 2000.0; + moment_tensor["z"] = 3000.0; + moment_tensor["Mxx"] = 1.0; + moment_tensor["Mzz"] = 1.0; + moment_tensor["Mxz"] = 0.0; + moment_tensor["Ricker"]["factor"] = 1.0e10; + moment_tensor["Ricker"]["tshift"] = 30.0; + moment_tensor["Ricker"]["f0"] = 1.0; + source1["moment-tensor"] = moment_tensor; + + // Second source - force + YAML::Node source2; + YAML::Node force; + force["x"] = 2500.0; + force["z"] = 2500.0; + force["source_surf"] = false; + force["angle"] = 0.0; + force["vx"] = 0.0; + force["vz"] = 0.0; + force["Ricker"]["factor"] = 1e10; + force["Ricker"]["tshift"] = 5.0; + force["Ricker"]["f0"] = 10.0; + source2["force"] = force; + + node["sources"].push_back(source1); + node["sources"].push_back(source2); + return node; +}(); + +const static YAML::Node multiple_sources_yaml_3d = []() { + YAML::Node node; + node["number-of-sources"] = 2; + + // First source - force + YAML::Node source1; + YAML::Node force; + force["x"] = 2500.0; + force["y"] = 2500.0; + force["z"] = 2500.0; + force["source_surf"] = false; + force["angle"] = 0.0; + force["fx"] = 0.0; + force["fy"] = 0.0; + force["fz"] = 0.0; + force["Ricker"]["factor"] = 1e10; + force["Ricker"]["tshift"] = 5.0; + force["Ricker"]["f0"] = 10.0; + source1["force"] = force; + + // Second source - moment tensor + YAML::Node source2; + YAML::Node moment_tensor; + moment_tensor["x"] = 2000.0; + moment_tensor["y"] = 3000.0; + moment_tensor["z"] = 2000.0; + moment_tensor["Mxx"] = 1.0; + moment_tensor["Myy"] = 1.0; + moment_tensor["Mzz"] = 0.0; + moment_tensor["Mxy"] = 1.0; + moment_tensor["Mxz"] = 0.0; + moment_tensor["Myz"] = 0.0; + moment_tensor["Ricker"]["factor"] = 1.0e10; + moment_tensor["Ricker"]["tshift"] = 30.0; + moment_tensor["Ricker"]["f0"] = 1.0; + source2["moment-tensor"] = moment_tensor; + + node["sources"].push_back(source1); + node["sources"].push_back(source2); + return node; +}(); + +class Read2DSourcesYAMLTest + : public ::testing::TestWithParam {}; + +TEST_P(Read2DSourcesYAMLTest, ReadYAMLnode) { + const auto ¶m = GetParam(); + + auto [sources, _t0] = + specfem::io::read_2d_sources(param.sources_node, nsteps, user_t0, dt, + specfem::simulation::type::forward); + + ASSERT_EQ(sources.size(), param.expected_sources.size()); + + for (size_t i = 0; i < sources.size(); ++i) { + auto source = sources[i]; + auto expected_source = param.expected_sources[i]; + + EXPECT_EQ(*source, *expected_source) + << "Source mismatch at index " << i << ":\n" + << "Expected:\n" + << expected_source->print() + << "\n" + "!=\n" + << "Actual:\n" + << source->print() << "\n"; + } +} + +INSTANTIATE_TEST_SUITE_P( + IO_TESTS, Read2DSourcesYAMLTest, + ::testing::Values(SourceYAMLTestParam2D{ "2D YAML Moment Tensor", + single_moment_tensor_yaml_2d, + single_moment_tensor_2d }, + SourceYAMLTestParam2D{ "2D YAML Force", + single_force_yaml_2d, + single_force_2d }, + SourceYAMLTestParam2D{ "2D YAML Cosserat Force", + single_cosserat_force_yaml_2d, + single_cosserat_force_2d }, + SourceYAMLTestParam2D{ "2D YAML Multiple Sources", + multiple_sources_yaml_2d, + multiple_sources_2d })); + +class Read3DSourcesYAMLTest + : public ::testing::TestWithParam {}; + +TEST_P(Read3DSourcesYAMLTest, ReadYAMLnode) { + const auto ¶m = GetParam(); + + auto [sources, _t0] = + specfem::io::read_3d_sources(param.sources_node, nsteps, user_t0, dt, + specfem::simulation::type::forward); + + ASSERT_EQ(sources.size(), param.expected_sources.size()); + + for (size_t i = 0; i < sources.size(); ++i) { + auto source = sources[i]; + auto expected_source = param.expected_sources[i]; + + EXPECT_EQ(*source, *expected_source) + << "Source mismatch at index " << i << ":\n" + << "Expected:\n" + << expected_source->print() + << "\n" + "!=\n" + << "Actual:\n" + << source->print() << "\n"; + } +} + +INSTANTIATE_TEST_SUITE_P( + IO_TESTS, Read3DSourcesYAMLTest, + ::testing::Values(SourceYAMLTestParam3D{ "3D YAML Force", + single_force_yaml_3d, + single_force_3d }, + SourceYAMLTestParam3D{ "3D YAML Moment Tensor", + single_moment_tensor_yaml_3d, + single_moment_tensor_3d }, + SourceYAMLTestParam3D{ "3D YAML Multiple Sources", + multiple_sources_yaml_3d, + multiple_sources_3d })); diff --git a/tests/unit-tests/io/sources/test_source_solutions.cpp b/tests/unit-tests/io/sources/test_source_solutions.cpp new file mode 100644 index 000000000..7926c269c --- /dev/null +++ b/tests/unit-tests/io/sources/test_source_solutions.cpp @@ -0,0 +1,80 @@ +#include "test_source_solutions.hpp" +#include "enumerations/wavefield.hpp" +#include "source_time_function/interface.hpp" + +// Local constants since these would be set by the simulation. +int nsteps = 100; +type_real dt = 0.01; +int tshift = 0; // for the single sources we are reading! +type_real user_t0 = -10.0; // user defined t0 + +// Internal t0 is being fixed using the halfduration of the source +specfem::wavefield::simulation_field wavefield_type = + specfem::wavefield::simulation_field::forward; + +// 2D source test solutions +const SourceVector2DType single_moment_tensor_2d = { std::make_shared< + specfem::sources::moment_tensor >( + 2000.0, 3000.0, 1.0, 1.0, 0.0, + std::make_unique(nsteps, dt, 1.0, 30.0, + 1.0e10, false), + wavefield_type) }; + +const SourceVector2DType single_force_2d = { + std::make_shared >( + 2500.0, 2500.0, 0.0, + std::make_unique(nsteps, dt, 10.0, 5.0, + 1.0e10, false), + wavefield_type) +}; + +const SourceVector2DType single_cosserat_force_2d = { std::make_shared< + specfem::sources::cosserat_force >( + 2500.0, 2500.0, 0.0, 1.0, 0.0, + std::make_unique(nsteps, dt, 10.0, 0.0, + 1e10, false), + wavefield_type) }; + +const SourceVector2DType multiple_sources_2d = { + std::make_shared< + specfem::sources::moment_tensor >( + 2000.0, 3000.0, 1.0, 1.0, 0.0, + std::make_unique(nsteps, dt, 1.0, 30.0, + 1.0e10, false), + wavefield_type), + std::make_shared >( + 2500.0, 2500.0, 0.0, + std::make_unique(nsteps, dt, 10.0, 5.0, + 1.0e10, false), + wavefield_type) +}; + +// 3D source test solutions +const SourceVector3DType single_force_3d = { + std::make_shared >( + 2500.0, 2500.0, 2500.0, 0.0, 0.0, 0.0, + std::make_unique(nsteps, dt, 10.0, 5.0, + 1.0e10, false), + wavefield_type) +}; + +const SourceVector3DType single_moment_tensor_3d = { std::make_shared< + specfem::sources::moment_tensor >( + 2000.0, 3000.0, 2000.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, + std::make_unique(nsteps, dt, 1.0, 30.0, + 1.0e10, false), + wavefield_type) }; + +const SourceVector3DType multiple_sources_3d = { + std::make_shared >( + 2500.0, 2500.0, 2500.0, 0.0, 0.0, 0.0, + std::make_unique(nsteps, dt, 10.0, 5.0, + 1.0e10, false), + wavefield_type), + std::make_shared< + specfem::sources::moment_tensor >( + 2000.0, 3000.0, 2000.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, + std::make_unique(nsteps, dt, 1.0, 30.0, + 1.0e10, false), + wavefield_type) +}; diff --git a/tests/unit-tests/io/sources/test_source_solutions.hpp b/tests/unit-tests/io/sources/test_source_solutions.hpp new file mode 100644 index 000000000..2db86b947 --- /dev/null +++ b/tests/unit-tests/io/sources/test_source_solutions.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include "specfem/source.hpp" +#include +#include + +/** + * @brief Shared test source solutions for both file and YAML tests + */ + +using SourceVector2DType = std::vector > >; +using SourceVector3DType = std::vector > >; + +// 2D source test solutions +extern const SourceVector2DType single_moment_tensor_2d; +extern const SourceVector2DType single_force_2d; +extern const SourceVector2DType single_cosserat_force_2d; +extern const SourceVector2DType multiple_sources_2d; + +// 3D source test solutions +extern const SourceVector3DType single_force_3d; +extern const SourceVector3DType single_moment_tensor_3d; +extern const SourceVector3DType multiple_sources_3d; diff --git a/tests/unit-tests/mass_matrix/dim2/acoustic.cpp b/tests/unit-tests/medium/mass_matrix/dim2/acoustic.cpp similarity index 100% rename from tests/unit-tests/mass_matrix/dim2/acoustic.cpp rename to tests/unit-tests/medium/mass_matrix/dim2/acoustic.cpp diff --git a/tests/unit-tests/mass_matrix/dim2/elastic_anisotropic.cpp b/tests/unit-tests/medium/mass_matrix/dim2/elastic_anisotropic.cpp similarity index 100% rename from tests/unit-tests/mass_matrix/dim2/elastic_anisotropic.cpp rename to tests/unit-tests/medium/mass_matrix/dim2/elastic_anisotropic.cpp diff --git a/tests/unit-tests/mass_matrix/dim2/elastic_isotropic.cpp b/tests/unit-tests/medium/mass_matrix/dim2/elastic_isotropic.cpp similarity index 100% rename from tests/unit-tests/mass_matrix/dim2/elastic_isotropic.cpp rename to tests/unit-tests/medium/mass_matrix/dim2/elastic_isotropic.cpp diff --git a/tests/unit-tests/mass_matrix/dim2/poroelastic.cpp b/tests/unit-tests/medium/mass_matrix/dim2/poroelastic.cpp similarity index 100% rename from tests/unit-tests/mass_matrix/dim2/poroelastic.cpp rename to tests/unit-tests/medium/mass_matrix/dim2/poroelastic.cpp diff --git a/tests/unit-tests/mass_matrix/dim3/elastic_isotropic.cpp b/tests/unit-tests/medium/mass_matrix/dim3/elastic_isotropic.cpp similarity index 100% rename from tests/unit-tests/mass_matrix/dim3/elastic_isotropic.cpp rename to tests/unit-tests/medium/mass_matrix/dim3/elastic_isotropic.cpp diff --git a/tests/unit-tests/mass_matrix/main.cpp b/tests/unit-tests/medium/mass_matrix/main.cpp similarity index 100% rename from tests/unit-tests/mass_matrix/main.cpp rename to tests/unit-tests/medium/mass_matrix/main.cpp diff --git a/tests/unit-tests/medium/source/dim2/acoustic.cpp b/tests/unit-tests/medium/source/dim2/acoustic.cpp new file mode 100644 index 000000000..edbbfc366 --- /dev/null +++ b/tests/unit-tests/medium/source/dim2/acoustic.cpp @@ -0,0 +1,83 @@ +#include "enumerations/interface.hpp" +#include "enumerations/wavefield.hpp" +#include "medium/compute_source.hpp" +#include "specfem/point.hpp" +#include +#include + +namespace { + +TEST(Source, AcousticIsotropic2D) { + static constexpr auto dimension = specfem::dimension::type::dim2; + static constexpr auto medium_tag = specfem::element::medium_tag::acoustic; + static constexpr auto property_tag = + specfem::element::property_tag::isotropic; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real rho_inverse = 2.0; + const type_real kappa = 10.0; + const PointPropertiesType properties(rho_inverse, kappa); + + PointSourceType point_source; + point_source.stf(0) = 5.0; + point_source.lagrange_interpolant(0) = 3.0; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + expected_acceleration(0) = + -point_source.stf(0) * point_source.lagrange_interpolant(0) / kappa; + + std::ostringstream message; + message << "Source acceleration is not equal to expected value: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +TEST(Source, AcousticIsotropic2D_ZeroSource) { + static constexpr auto dimension = specfem::dimension::type::dim2; + static constexpr auto medium_tag = specfem::element::medium_tag::acoustic; + static constexpr auto property_tag = + specfem::element::property_tag::isotropic; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real rho_inverse = 2.0; + const type_real kappa = 10.0; + const PointPropertiesType properties(rho_inverse, kappa); + + PointSourceType point_source; + point_source.stf(0) = 0.0; + point_source.lagrange_interpolant(0) = 3.0; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + expected_acceleration(0) = 0.0; + + std::ostringstream message; + message << "Source acceleration should be zero for zero STF: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +} // namespace diff --git a/tests/unit-tests/medium/source/dim2/elastic_anisotropic.cpp b/tests/unit-tests/medium/source/dim2/elastic_anisotropic.cpp new file mode 100644 index 000000000..656b45669 --- /dev/null +++ b/tests/unit-tests/medium/source/dim2/elastic_anisotropic.cpp @@ -0,0 +1,94 @@ +#include "enumerations/interface.hpp" +#include "enumerations/wavefield.hpp" +#include "medium/compute_source.hpp" +#include "specfem/point.hpp" +#include +#include + +namespace { + +TEST(Source, ElasticAnisotropicPSV2D) { + static constexpr auto dimension = specfem::dimension::type::dim2; + static constexpr auto medium_tag = specfem::element::medium_tag::elastic_psv; + static constexpr auto property_tag = + specfem::element::property_tag::anisotropic; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real c11 = 50e9, c13 = 30e9, c15 = 0.0; + const type_real c33 = 45e9, c35 = 0.0, c55 = 25e9; + const type_real rho = 2000.0; + const type_real c12 = 25e9, c23 = 20e9, c25 = 0.0; + const PointPropertiesType properties(c11, c13, c15, c33, c35, c55, c12, c23, + c25, rho); + + PointSourceType point_source; + point_source.stf(0) = 6.0; + point_source.stf(1) = 4.0; + point_source.lagrange_interpolant(0) = 2.5; + point_source.lagrange_interpolant(1) = 3.5; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + expected_acceleration(0) = + point_source.stf(0) * point_source.lagrange_interpolant(0); + expected_acceleration(1) = + point_source.stf(1) * point_source.lagrange_interpolant(1); + + std::ostringstream message; + message << "Source acceleration is not equal to expected value: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +TEST(Source, ElasticAnisotropicSH2D) { + static constexpr auto dimension = specfem::dimension::type::dim2; + static constexpr auto medium_tag = specfem::element::medium_tag::elastic_sh; + static constexpr auto property_tag = + specfem::element::property_tag::anisotropic; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real c11 = 30e9, c13 = 0.0, c15 = 0.0; + const type_real c33 = 30e9, c35 = 0.0, c55 = 25e9; + const type_real rho = 2000.0; + const type_real c12 = 0.0, c23 = 0.0, c25 = 0.0; + const PointPropertiesType properties(c11, c13, c15, c33, c35, c55, c12, c23, + c25, rho); + + PointSourceType point_source; + point_source.stf(0) = 8.0; + point_source.lagrange_interpolant(0) = 1.2; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + expected_acceleration(0) = + point_source.stf(0) * point_source.lagrange_interpolant(0); + + std::ostringstream message; + message << "Source acceleration is not equal to expected value: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +} // namespace diff --git a/tests/unit-tests/medium/source/dim2/elastic_isotropic.cpp b/tests/unit-tests/medium/source/dim2/elastic_isotropic.cpp new file mode 100644 index 000000000..e5619c70d --- /dev/null +++ b/tests/unit-tests/medium/source/dim2/elastic_isotropic.cpp @@ -0,0 +1,130 @@ +#include "enumerations/interface.hpp" +#include "enumerations/wavefield.hpp" +#include "medium/compute_source.hpp" +#include "specfem/point.hpp" +#include +#include + +namespace { + +TEST(Source, ElasticIsotropicPSV2D) { + static constexpr auto dimension = specfem::dimension::type::dim2; + static constexpr auto medium_tag = specfem::element::medium_tag::elastic_psv; + static constexpr auto property_tag = + specfem::element::property_tag::isotropic; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real rho = 2000.0; + const type_real mu = 30e9; + const type_real kappa = 50e9; + const PointPropertiesType properties(kappa, mu, rho); + + PointSourceType point_source; + point_source.stf(0) = 5.0; + point_source.stf(1) = 3.0; + point_source.lagrange_interpolant(0) = 2.0; + point_source.lagrange_interpolant(1) = 4.0; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + expected_acceleration(0) = + point_source.stf(0) * point_source.lagrange_interpolant(0); + expected_acceleration(1) = + point_source.stf(1) * point_source.lagrange_interpolant(1); + + std::ostringstream message; + message << "Source acceleration is not equal to expected value: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +TEST(Source, ElasticIsotropicSH2D) { + static constexpr auto dimension = specfem::dimension::type::dim2; + static constexpr auto medium_tag = specfem::element::medium_tag::elastic_sh; + static constexpr auto property_tag = + specfem::element::property_tag::isotropic; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real rho = 2000.0; + const type_real mu = 30e9; + const type_real kappa = 40e9; + const PointPropertiesType properties(kappa, mu, rho); + + PointSourceType point_source; + point_source.stf(0) = 7.0; + point_source.lagrange_interpolant(0) = 1.5; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + expected_acceleration(0) = + point_source.stf(0) * point_source.lagrange_interpolant(0); + + std::ostringstream message; + message << "Source acceleration is not equal to expected value: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +TEST(Source, ElasticIsotropicPSV2D_ZeroSource) { + static constexpr auto dimension = specfem::dimension::type::dim2; + static constexpr auto medium_tag = specfem::element::medium_tag::elastic_psv; + static constexpr auto property_tag = + specfem::element::property_tag::isotropic; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real rho = 2000.0; + const type_real mu = 30e9; + const type_real kappa = 50e9; + const PointPropertiesType properties(kappa, mu, rho); + + PointSourceType point_source; + point_source.stf(0) = 0.0; + point_source.stf(1) = 0.0; + point_source.lagrange_interpolant(0) = 2.0; + point_source.lagrange_interpolant(1) = 4.0; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + expected_acceleration(0) = 0.0; + expected_acceleration(1) = 0.0; + + std::ostringstream message; + message << "Source acceleration should be zero for zero STF: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +} // namespace diff --git a/tests/unit-tests/medium/source/dim2/elastic_isotropic_cosserat.cpp b/tests/unit-tests/medium/source/dim2/elastic_isotropic_cosserat.cpp new file mode 100644 index 000000000..4c6811875 --- /dev/null +++ b/tests/unit-tests/medium/source/dim2/elastic_isotropic_cosserat.cpp @@ -0,0 +1,113 @@ +#include "enumerations/interface.hpp" +#include "enumerations/wavefield.hpp" +#include "medium/compute_source.hpp" +#include "specfem/point.hpp" +#include +#include + +namespace { + +TEST(Source, ElasticIsotropicCosserat2D) { + static constexpr auto dimension = specfem::dimension::type::dim2; + static constexpr auto medium_tag = + specfem::element::medium_tag::elastic_psv_t; + static constexpr auto property_tag = + specfem::element::property_tag::isotropic_cosserat; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real rho = 2000.0; + const type_real kappa = 40e9; + const type_real mu = 30e9; + const type_real nu = 0.25; + const type_real j = 1e-6; + const type_real lambda_c = 20e9; + const type_real mu_c = 5e9; + const type_real nu_c = 0.2; + const PointPropertiesType properties(rho, kappa, mu, nu, j, lambda_c, mu_c, + nu_c); + + PointSourceType point_source; + point_source.stf(0) = 2.0; + point_source.stf(1) = 3.0; + point_source.stf(2) = 4.0; + point_source.lagrange_interpolant(0) = 1.5; + point_source.lagrange_interpolant(1) = 2.5; + point_source.lagrange_interpolant(2) = 3.5; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + expected_acceleration(0) = + point_source.stf(0) * point_source.lagrange_interpolant(0); + expected_acceleration(1) = + point_source.stf(1) * point_source.lagrange_interpolant(1); + expected_acceleration(2) = + point_source.stf(2) * point_source.lagrange_interpolant(2); + + std::ostringstream message; + message << "Source acceleration is not equal to expected value: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +TEST(Source, ElasticIsotropicCosserat2D_ZeroSource) { + static constexpr auto dimension = specfem::dimension::type::dim2; + static constexpr auto medium_tag = + specfem::element::medium_tag::elastic_psv_t; + static constexpr auto property_tag = + specfem::element::property_tag::isotropic_cosserat; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real rho = 2000.0; + const type_real kappa = 40e9; + const type_real mu = 30e9; + const type_real nu = 0.25; + const type_real j = 1e-6; + const type_real lambda_c = 20e9; + const type_real mu_c = 5e9; + const type_real nu_c = 0.2; + const PointPropertiesType properties(rho, kappa, mu, nu, j, lambda_c, mu_c, + nu_c); + + PointSourceType point_source; + point_source.stf(0) = 0.0; + point_source.stf(1) = 0.0; + point_source.stf(2) = 0.0; + point_source.lagrange_interpolant(0) = 1.5; + point_source.lagrange_interpolant(1) = 2.5; + point_source.lagrange_interpolant(2) = 3.5; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + expected_acceleration(0) = 0.0; + expected_acceleration(1) = 0.0; + expected_acceleration(2) = 0.0; + + std::ostringstream message; + message << "Source acceleration should be zero for zero STF: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +} // namespace diff --git a/tests/unit-tests/medium/source/dim2/poroelastic.cpp b/tests/unit-tests/medium/source/dim2/poroelastic.cpp new file mode 100644 index 000000000..7ee29151a --- /dev/null +++ b/tests/unit-tests/medium/source/dim2/poroelastic.cpp @@ -0,0 +1,127 @@ +#include "enumerations/interface.hpp" +#include "enumerations/wavefield.hpp" +#include "medium/compute_source.hpp" +#include "specfem/point.hpp" +#include +#include + +namespace { + +TEST(Source, PoroelasticIsotropic2D) { + static constexpr auto dimension = specfem::dimension::type::dim2; + static constexpr auto medium_tag = specfem::element::medium_tag::poroelastic; + static constexpr auto property_tag = + specfem::element::property_tag::isotropic; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real phi = 0.3; + const type_real rho_s = 2500.0; + const type_real rho_f = 1000.0; + const type_real tortuosity = 1.2; + const type_real mu_G = 10e9; + const type_real H_Biot = 36e9; + const type_real C_Biot = 2.2e9; + const type_real M_Biot = 2.2e9; + const type_real permxx = 1e-12; + const type_real permxz = 0.0; + const type_real permzz = 1e-12; + const type_real eta_f = 1e-3; + + const PointPropertiesType properties(phi, rho_s, rho_f, tortuosity, mu_G, + H_Biot, C_Biot, M_Biot, permxx, permxz, + permzz, eta_f); + + PointSourceType point_source; + point_source.stf(0) = 1.0; + point_source.stf(1) = 2.0; + point_source.stf(2) = 3.0; + point_source.stf(3) = 4.0; + point_source.lagrange_interpolant(0) = 1.5; + point_source.lagrange_interpolant(1) = 2.5; + point_source.lagrange_interpolant(2) = 3.5; + point_source.lagrange_interpolant(3) = 4.5; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + // Values from actual implementation - calculated using the property methods + expected_acceleration(0) = 1.125; // 1.0 * 1.5 * (1.0 - 0.3/1.2) = 1.125 + expected_acceleration(1) = 3.75; // 2.0 * 2.5 * (1.0 - 0.3/1.2) = 3.75 + expected_acceleration(2) = 5.37805; // 3.0 * 3.5 * (1.0 - rho_f/rho_bar) + expected_acceleration(3) = 9.21951; // 4.0 * 4.5 * (1.0 - rho_f/rho_bar) + + std::ostringstream message; + message << "Source acceleration is not equal to expected value: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +TEST(Source, PoroelasticIsotropic2D_ZeroSource) { + static constexpr auto dimension = specfem::dimension::type::dim2; + static constexpr auto medium_tag = specfem::element::medium_tag::poroelastic; + static constexpr auto property_tag = + specfem::element::property_tag::isotropic; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real phi = 0.3; + const type_real rho_s = 2500.0; + const type_real rho_f = 1000.0; + const type_real tortuosity = 1.2; + const type_real mu_G = 10e9; + const type_real H_Biot = 36e9; + const type_real C_Biot = 2.2e9; + const type_real M_Biot = 2.2e9; + const type_real permxx = 1e-12; + const type_real permxz = 0.0; + const type_real permzz = 1e-12; + const type_real eta_f = 1e-3; + + const PointPropertiesType properties(phi, rho_s, rho_f, tortuosity, mu_G, + H_Biot, C_Biot, M_Biot, permxx, permxz, + permzz, eta_f); + + PointSourceType point_source; + point_source.stf(0) = 0.0; + point_source.stf(1) = 0.0; + point_source.stf(2) = 0.0; + point_source.stf(3) = 0.0; + point_source.lagrange_interpolant(0) = 1.5; + point_source.lagrange_interpolant(1) = 2.5; + point_source.lagrange_interpolant(2) = 3.5; + point_source.lagrange_interpolant(3) = 4.5; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + expected_acceleration(0) = 0.0; + expected_acceleration(1) = 0.0; + expected_acceleration(2) = 0.0; + expected_acceleration(3) = 0.0; + + std::ostringstream message; + message << "Source acceleration should be zero for zero STF: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +} // namespace diff --git a/tests/unit-tests/medium/source/dim3/elastic_isotropic.cpp b/tests/unit-tests/medium/source/dim3/elastic_isotropic.cpp new file mode 100644 index 000000000..5ebe23f78 --- /dev/null +++ b/tests/unit-tests/medium/source/dim3/elastic_isotropic.cpp @@ -0,0 +1,99 @@ +#include "enumerations/interface.hpp" +#include "enumerations/wavefield.hpp" +#include "medium/compute_source.hpp" +#include "specfem/point.hpp" +#include +#include + +namespace { + +TEST(Source, ElasticIsotropic3D) { + static constexpr auto dimension = specfem::dimension::type::dim3; + static constexpr auto medium_tag = specfem::element::medium_tag::elastic; + static constexpr auto property_tag = + specfem::element::property_tag::isotropic; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real rho = 2700.0; + const type_real mu = 40e9; + const type_real lambda = 25e9; + const PointPropertiesType properties(rho, mu, lambda); + + PointSourceType point_source; + point_source.stf(0) = 1.5; + point_source.stf(1) = 2.5; + point_source.stf(2) = 3.5; + point_source.lagrange_interpolant(0) = 2.0; + point_source.lagrange_interpolant(1) = 3.0; + point_source.lagrange_interpolant(2) = 4.0; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + expected_acceleration(0) = + point_source.stf(0) * point_source.lagrange_interpolant(0); + expected_acceleration(1) = + point_source.stf(1) * point_source.lagrange_interpolant(1); + expected_acceleration(2) = + point_source.stf(2) * point_source.lagrange_interpolant(2); + + std::ostringstream message; + message << "Source acceleration is not equal to expected value: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +TEST(Source, ElasticIsotropic3D_ZeroSource) { + static constexpr auto dimension = specfem::dimension::type::dim3; + static constexpr auto medium_tag = specfem::element::medium_tag::elastic; + static constexpr auto property_tag = + specfem::element::property_tag::isotropic; + + using PointPropertiesType = + specfem::point::properties; + using PointSourceType = + specfem::point::source; + using PointAccelerationType = + specfem::point::acceleration; + + const type_real rho = 2700.0; + const type_real mu = 40e9; + const type_real lambda = 25e9; + const PointPropertiesType properties(rho, mu, lambda); + + PointSourceType point_source; + point_source.stf(0) = 0.0; + point_source.stf(1) = 0.0; + point_source.stf(2) = 0.0; + point_source.lagrange_interpolant(0) = 2.0; + point_source.lagrange_interpolant(1) = 3.0; + point_source.lagrange_interpolant(2) = 4.0; + + const PointAccelerationType acceleration = + specfem::medium::compute_source_contribution(point_source, properties); + + PointAccelerationType expected_acceleration; + expected_acceleration(0) = 0.0; + expected_acceleration(1) = 0.0; + expected_acceleration(2) = 0.0; + + std::ostringstream message; + message << "Source acceleration should be zero for zero STF: \n" + << "Computed: " << acceleration.print() << "\n" + << "Expected: " << expected_acceleration.print() << "\n"; + + EXPECT_TRUE(acceleration == expected_acceleration) << message.str(); +} + +} // namespace diff --git a/tests/unit-tests/stress/main.cpp b/tests/unit-tests/medium/source/main.cpp similarity index 100% rename from tests/unit-tests/stress/main.cpp rename to tests/unit-tests/medium/source/main.cpp diff --git a/tests/unit-tests/stress/dim2/acoustic.cpp b/tests/unit-tests/medium/stress/dim2/acoustic.cpp similarity index 100% rename from tests/unit-tests/stress/dim2/acoustic.cpp rename to tests/unit-tests/medium/stress/dim2/acoustic.cpp diff --git a/tests/unit-tests/stress/dim2/elastic_anisotropic.cpp b/tests/unit-tests/medium/stress/dim2/elastic_anisotropic.cpp similarity index 100% rename from tests/unit-tests/stress/dim2/elastic_anisotropic.cpp rename to tests/unit-tests/medium/stress/dim2/elastic_anisotropic.cpp diff --git a/tests/unit-tests/stress/dim2/elastic_isotropic.cpp b/tests/unit-tests/medium/stress/dim2/elastic_isotropic.cpp similarity index 100% rename from tests/unit-tests/stress/dim2/elastic_isotropic.cpp rename to tests/unit-tests/medium/stress/dim2/elastic_isotropic.cpp diff --git a/tests/unit-tests/stress/dim2/elastic_isotropic_cosserat.cpp b/tests/unit-tests/medium/stress/dim2/elastic_isotropic_cosserat.cpp similarity index 100% rename from tests/unit-tests/stress/dim2/elastic_isotropic_cosserat.cpp rename to tests/unit-tests/medium/stress/dim2/elastic_isotropic_cosserat.cpp diff --git a/tests/unit-tests/stress/dim2/poroelastic_isotropic.cpp b/tests/unit-tests/medium/stress/dim2/poroelastic_isotropic.cpp similarity index 100% rename from tests/unit-tests/stress/dim2/poroelastic_isotropic.cpp rename to tests/unit-tests/medium/stress/dim2/poroelastic_isotropic.cpp diff --git a/tests/unit-tests/stress/dim3/elastic_isotropic.cpp b/tests/unit-tests/medium/stress/dim3/elastic_isotropic.cpp similarity index 100% rename from tests/unit-tests/stress/dim3/elastic_isotropic.cpp rename to tests/unit-tests/medium/stress/dim3/elastic_isotropic.cpp diff --git a/tests/unit-tests/medium/stress/main.cpp b/tests/unit-tests/medium/stress/main.cpp new file mode 100644 index 000000000..4d820af77 --- /dev/null +++ b/tests/unit-tests/medium/stress/main.cpp @@ -0,0 +1,6 @@ +#include + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/tests/unit-tests/mesh/adjacency_graph/adjacency_graph_irregular_mesh.cpp b/tests/unit-tests/mesh/adjacency_graph/adjacency_graph_irregular_mesh.cpp index e12b2510a..06509c4d0 100644 --- a/tests/unit-tests/mesh/adjacency_graph/adjacency_graph_irregular_mesh.cpp +++ b/tests/unit-tests/mesh/adjacency_graph/adjacency_graph_irregular_mesh.cpp @@ -1,5 +1,6 @@ #include "../../MPI_environment.hpp" +#include "enumerations/mesh_entities.hpp" #include "io/interface.hpp" #include "mesh/mesh.hpp" #include @@ -11,13 +12,46 @@ #include #include +#include "predicate.tpp" + const static std::unordered_map mesh_files = { - { "Circular mesh", "data/mesh/circular_mesh/database.bin" } + { "Circular mesh", "data/dim2/circular_mesh/database.bin" }, + { "3 Element Nonconforming", + "data/dim2/3_elem_nonconforming/database.bin" } }; -const static std::unordered_map > > - expected_adjacency_graph = { - { "Circular mesh", { { 37, { 39, 38, 64, 63, 36, 83, 2, 3, 1 } } } } +const static std::unordered_map< + std::string, std::vector > + expected_adjacency_rules = { + { "Circular mesh", + { + specfem::testing::predicate::connects(37, 39), + specfem::testing::predicate::connects(37, 38), + specfem::testing::predicate::connects(37, 64), + specfem::testing::predicate::connects(37, 63), + specfem::testing::predicate::connects(37, 36), + specfem::testing::predicate::connects(37, 83), + specfem::testing::predicate::connects(37, 2), + specfem::testing::predicate::connects(37, 3), + specfem::testing::predicate::connects(37, 1), + specfem::testing::predicate::number_of_out_edges(37, 9), + } }, + { "3 Element Nonconforming", + { + specfem::testing::predicate::connects( + 0, specfem::mesh_entity::type::top, 1, + specfem::mesh_entity::type::bottom) + .with(specfem::connections::type::nonconforming), + specfem::testing::predicate::connects( + 0, specfem::mesh_entity::type::top, 2, + specfem::mesh_entity::type::bottom) + .with(specfem::connections::type::nonconforming), + specfem::testing::predicate::connects(1, 2).with( + specfem::connections::type::strongly_conforming), + specfem::testing::predicate::number_of_out_edges(0, 2), + specfem::testing::predicate::number_of_out_edges(1, 2), + specfem::testing::predicate::number_of_out_edges(2, 2), + } } }; class CheckConnections : public ::testing::TestWithParam { @@ -41,55 +75,15 @@ TEST_P(CheckConnections, Test) { const auto &adjacency_graph = mesh.adjacency_graph; ASSERT_FALSE(adjacency_graph.empty()) << "Adjacency graph is empty"; - - const auto &g = adjacency_graph.graph(); - EXPECT_NO_THROW(adjacency_graph.assert_symmetry()); - const auto expected_adjacency = expected_adjacency_graph.at(mesh_name); - - for (const auto &[ispec, expected_neighbors] : expected_adjacency) { - const auto out_edges = boost::out_edges(ispec, g); - std::vector computed_neighbors; - for (auto edge_it = out_edges.first; edge_it != out_edges.second; - ++edge_it) { - const int neighbor = boost::target(*edge_it, g); - computed_neighbors.push_back(neighbor); - } - - { - std::ostringstream message; - message << "Length mismatch for node " << ispec << ":\n" - << "Expected length: " << expected_neighbors.size() << "\n" - << "Actual length: " << computed_neighbors.size() << "\n"; - - EXPECT_EQ(computed_neighbors.size(), expected_neighbors.size()) - << message.str(); - } - - { - std::sort(computed_neighbors.begin(), computed_neighbors.end()); - auto expected_sorted = expected_neighbors; - std::sort(expected_sorted.begin(), expected_sorted.end()); - - std::ostringstream message; - message << "Adjacency list mismatch for node " << ispec << ":\n" - << "Expected: "; - for (const auto &n : expected_sorted) { - message << n << " "; - } - message << "\nActual: "; - for (const auto &n : computed_neighbors) { - message << n << " "; - } - message << "\n"; - - EXPECT_EQ(computed_neighbors, expected_sorted) << message.str(); - } + for (const auto &rule : expected_adjacency_rules.at(mesh_name)) { + specfem::testing::predicate::verify(rule, adjacency_graph); } } INSTANTIATE_TEST_SUITE_P(AdjacencyGraphIrregularMesh, CheckConnections, - ::testing::Values("Circular mesh" + ::testing::Values("Circular mesh", + "3 Element Nonconforming" // Add more mesh names here as needed )); diff --git a/tests/unit-tests/mesh/adjacency_graph/adjacency_graph_regular_mesh.cpp b/tests/unit-tests/mesh/adjacency_graph/adjacency_graph_regular_mesh.cpp index e2bb9a668..f7d413b93 100644 --- a/tests/unit-tests/mesh/adjacency_graph/adjacency_graph_regular_mesh.cpp +++ b/tests/unit-tests/mesh/adjacency_graph/adjacency_graph_regular_mesh.cpp @@ -12,9 +12,9 @@ #include constexpr static int nx = - 80; // See Par_file in data/mesh/regular_mesh/provenance + 80; // See Par_file in data/dim2/regular_mesh/provenance constexpr static int nz = - 60; // See Par_file in data/mesh/regular_mesh/provenance + 60; // See Par_file in data/dim2/regular_mesh/provenance const static std::unordered_map > expected_adjacency{ // Interior node example @@ -33,7 +33,7 @@ const static std::unordered_map > expected_adjacency{ TEST(AdjacencyGraphRegularMesh, CheckConnections) { - const std::string mesh_file = "data/mesh/regular_mesh/database.bin"; + const std::string mesh_file = "data/dim2/regular_mesh/database.bin"; specfem::MPI::MPI *mpi = MPIEnvironment::get_mpi(); auto mesh = diff --git a/tests/unit-tests/mesh/adjacency_graph/predicate.hpp b/tests/unit-tests/mesh/adjacency_graph/predicate.hpp new file mode 100644 index 000000000..09ce0e588 --- /dev/null +++ b/tests/unit-tests/mesh/adjacency_graph/predicate.hpp @@ -0,0 +1,185 @@ +#pragma once +#include "enumerations/connections.hpp" +#include "enumerations/mesh_entities.hpp" +#include "mesh/dim2/adjacency_graph/adjacency_graph.hpp" +#include "mesh/mesh.hpp" +#include +#include + +namespace specfem::testing::predicate { +/** + * @brief Stores a single mesher-side connection with optional matching of + * parameters. This is used to check if an adjacency map has the expected + * connections. + * + */ +struct connects { +public: + int ispec; + int jspec; + specfem::mesh_entity::type ispec_mesh_entity; + specfem::mesh_entity::type jspec_mesh_entity; + specfem::connections::type connection_type; + bool check_ispec_mesh_entity; + bool check_jspec_mesh_entity; + bool check_connection_type; + + /** + * @brief Construct a new connects object that tests if a mesh connects two + * elements, without verifying orientation or connection type. + * + * @param ispec - element 1 + * @param jspec - element 2 + */ + connects(const int &ispec, const int &jspec) + : ispec(ispec), jspec(jspec), check_connection_type(false), + check_ispec_mesh_entity(false), check_jspec_mesh_entity(false) {}; + + /** + * @brief Construct a new connects object that tests if a mesh connects two + * elements, without verifying connection type, and only testing ispec's + * orientation. + * + * @param ispec - element 1 + * @param ispec_mesh_entity - orientation on ispec + * @param jspec - element 2 + */ + connects(const int &ispec, + const specfem::mesh_entity::type &ispec_mesh_entity, + const int &jspec) + : ispec(ispec), jspec(jspec), check_connection_type(false), + check_ispec_mesh_entity(true), ispec_mesh_entity(ispec_mesh_entity), + check_jspec_mesh_entity(false) {}; + /** + * @brief Construct a new connects object that tests if a mesh connects two + * elements, without verifying connection type, and only testing jspec's + * orientation. + * + * @param ispec - element 1 + * @param jspec - element 2 + * @param jspec_mesh_entity - orientation on jspec + */ + connects(const int &ispec, const int &jspec, + const specfem::mesh_entity::type &jspec_mesh_entity) + : ispec(ispec), jspec(jspec), check_connection_type(false), + check_ispec_mesh_entity(false), check_jspec_mesh_entity(true), + jspec_mesh_entity(jspec_mesh_entity) {}; + /** + * @brief Construct a new connects object that tests if a mesh connects two + * elements, without verifying connection type. + * + * @param ispec - element 1 + * @param ispec_mesh_entity - orientation on ispec + * @param jspec - element 2 + * @param jspec_mesh_entity - orientation on jspec + */ + connects(const int &ispec, + const specfem::mesh_entity::type &ispec_mesh_entity, + const int &jspec, + const specfem::mesh_entity::type &jspec_mesh_entity) + : ispec(ispec), jspec(jspec), check_connection_type(false), + check_ispec_mesh_entity(true), ispec_mesh_entity(ispec_mesh_entity), + check_jspec_mesh_entity(false), jspec_mesh_entity(jspec_mesh_entity) {}; + + /** + * @brief Adds ispec's orientation to test + * + * @param ispec_mesh_entity - orientation to set + * @return connects& - *this to be used in a builder pattern + */ + connects &i(const specfem::mesh_entity::type &ispec_mesh_entity) { + this->ispec_mesh_entity = ispec_mesh_entity; + check_ispec_mesh_entity = true; + return *this; + } + + /** + * @brief Adds jspec's orientation to test + * + * @param ispec_mesh_entity - orientation to set + * @return connects& - *this to be used in a builder pattern + */ + connects &j(const specfem::mesh_entity::type &jspec_mesh_entity) { + this->jspec_mesh_entity = jspec_mesh_entity; + check_jspec_mesh_entity = true; + return *this; + } + + /** + * @brief Adds connection type to test + * + * @param connection_type - type to ensure + * @return connects& - *this to be used in a builder pattern + */ + connects &with(const specfem::connections::type &connection_type) { + this->connection_type = connection_type; + check_connection_type = true; + return *this; + } + + /** + * @brief Runs the test on this object. specfem::testing::predicate::verify() + * delegates to this method for `connects`. If the graph has the desired + * connection, nothing is returned. Otherwise, FAIL()s. + * + * @tparam dimension - dimension of the adjacency graph + * @param adjacency_graph - graph to verify has the connection + */ + template + void expect_in( + const specfem::mesh::adjacency_graph &adjacency_graph) const; + + std::string ispec_to_jspec_string() const; + std::string jspec_to_ispec_string() const; + std::string str() const; +}; + +/** + * @brief To assert the number of edges from some ispec is equal to a known + * value. + * + */ +struct number_of_out_edges { +public: + int ispec; + int edge_count; + + /** + * @brief Construct a test to ensure the element ispec has exactly edge_count + * number of adjacencies. Only the out-edges are counted, which for a + * symmetric graph, is equal to the number of adjacent elements. + * + * @param ispec - mesh index of the element + * @param edge_count - number of adjacencies to expect + */ + number_of_out_edges(const int &ispec, const int &edge_count) + : ispec(ispec), edge_count(edge_count) {} + + /** + * @brief Runs the test on this object. specfem::testing::predicate::verify() + * delegates to this method for `number_of_out_edges`. If the graph has the + * desired connection, nothing is returned. Otherwise, FAIL()s. + * + * @tparam dimension - dimension of the adjacency graph + * @param adjacency_graph - graph to verify has the connections + */ + template + void expect_in( + const specfem::mesh::adjacency_graph &adjacency_graph) const; +}; + +using variant = std::variant; + +/** + * @brief Ensures the adjacency graph satisfies the given predicate. FAIL()s if + * not. + * + * @tparam dimension - dimension of the adjacency graph + * @param predicate - test to apply to adjacency_graph + * @param adjacency_graph - graph to check + */ +template +void verify(const variant &predicate, + const specfem::mesh::adjacency_graph &adjacency_graph); + +} // namespace specfem::testing::predicate diff --git a/tests/unit-tests/mesh/adjacency_graph/predicate.tpp b/tests/unit-tests/mesh/adjacency_graph/predicate.tpp new file mode 100644 index 000000000..768573d2e --- /dev/null +++ b/tests/unit-tests/mesh/adjacency_graph/predicate.tpp @@ -0,0 +1,135 @@ +#pragma once + +#include "enumerations/connections.hpp" +#include "enumerations/dimension.hpp" +#include "enumerations/mesh_entities.hpp" +#include "predicate.hpp" +#include +#include +#include + +namespace specfem::testing::predicate { +std::string connects::ispec_to_jspec_string() const { + std::stringstream str; + str << "[" << ispec << " -> " << jspec << "]"; + return str.str(); +} +std::string connects::jspec_to_ispec_string() const { + std::stringstream str; + str << "[" << jspec << " -> " << ispec << "]"; + return str.str(); +} +std::string connects::str() const { + std::stringstream str; + str << "[" << ispec; + if (check_ispec_mesh_entity) { + str << " (" << specfem::mesh_entity::to_string(ispec_mesh_entity) << ")"; + } + str << " <-"; + if (check_connection_type) { + str << specfem::connections::to_string(connection_type); + } + str << "-> " << jspec; + if (check_jspec_mesh_entity) { + str << " (" << specfem::mesh_entity::to_string(jspec_mesh_entity) << ")"; + } + str << "]"; + return str.str(); +} + +template +void connects::expect_in( + const specfem::mesh::adjacency_graph &adjacency_graph) const { + const auto &g = adjacency_graph.graph(); + { // test ispec -> jspec edge + const auto [edge_, exists] = boost::edge(ispec, jspec, g); + const auto edge = g[edge_]; + if (!exists) { + std::ostringstream msg; + msg << "Failed expected adjacency " << str() << ":\n"; + msg << " Adjacency graph did not contain " << ispec_to_jspec_string() + << "\n"; + FAIL() << msg.str(); + } + if (check_connection_type && (edge.connection != connection_type)) { + std::ostringstream msg; + msg << "Failed expected adjacency " << str() << ":\n"; + msg << " Found connection type " + << specfem::connections::to_string(edge.connection) << " for edge " + << ispec_to_jspec_string() << "\n"; + FAIL() << msg.str(); + } + if (check_ispec_mesh_entity && (edge.orientation != ispec_mesh_entity)) { + std::ostringstream msg; + msg << "Failed expected adjacency " << str() << ":\n"; + msg << " Found ispec orientation " + << specfem::mesh_entity::to_string(edge.orientation) << " for edge " + << ispec_to_jspec_string() << "\n"; + FAIL() << msg.str(); + } + } + { // test jspec -> ispec edge + const auto [edge_, exists] = boost::edge(ispec, jspec, g); + const auto edge = g[edge_]; + if (!exists) { + std::ostringstream msg; + msg << "Failed expected adjacency " << str() << ":\n"; + msg << " Adjacency graph did not contain " << jspec_to_ispec_string() + << "\n"; + FAIL() << msg.str(); + } + if (check_connection_type && (edge.connection != connection_type)) { + std::ostringstream msg; + msg << "Failed expected adjacency " << str() << ":\n"; + msg << " Found connection type " + << specfem::connections::to_string(edge.connection) << " for edge " + << jspec_to_ispec_string() << "\n"; + FAIL() << msg.str(); + } + if (check_jspec_mesh_entity && (edge.orientation != jspec_mesh_entity)) { + std::ostringstream msg; + msg << "Failed expected adjacency " << str() << ":\n"; + msg << " Found jspec orientation " + << specfem::mesh_entity::to_string(edge.orientation) << " for edge " + << jspec_to_ispec_string() << "\n"; + FAIL() << msg.str(); + } + } +} +template +void number_of_out_edges::expect_in( + const specfem::mesh::adjacency_graph &adjacency_graph) const { + + const auto &g = adjacency_graph.graph(); + + const auto out_edges = boost::out_edges(ispec, g); + std::vector computed_neighbors; + for (auto edge_it = out_edges.first; edge_it != out_edges.second; ++edge_it) { + const int neighbor = boost::target(*edge_it, g); + computed_neighbors.push_back(neighbor); + } + + if (computed_neighbors.size() != edge_count) { + std::ostringstream msg; + msg << "Length mismatch for node " << ispec << ":\n" + << "Expected length: " << edge_count << "\n" + << "Actual length: " << computed_neighbors.size() << "\n"; + FAIL() << msg.str(); + } +} + +template +void verify(const variant &predicate, + const specfem::mesh::adjacency_graph &adjacency_graph) { + std::visit( + [&adjacency_graph](auto &&predicate) { + using PredicateType = std::decay_t; + if constexpr (std::is_same_v || + std::is_same_v) { + predicate.expect_in(adjacency_graph); + } + }, + predicate); +} + +} // namespace predicate diff --git a/tests/unit-tests/mesh/test_config.yaml b/tests/unit-tests/mesh/test_config.yaml index 74dbfddaf..2b37e2f03 100644 --- a/tests/unit-tests/mesh/test_config.yaml +++ b/tests/unit-tests/mesh/test_config.yaml @@ -7,9 +7,9 @@ Tests: nproc : 1 elastic_wave: "P_SV" databases: - mesh : "data/mesh/simple_mesh_flat_topography/database.bin" - sources : "data/mesh/simple_mesh_flat_topography/sources.yaml" - stations : "data/mesh/simple_mesh_flat_topography/STATIONS" + mesh : "data/dim2/simple_mesh_flat_topography/database.bin" + sources : "data/dim2/simple_mesh_flat_topography/sources.yaml" + stations : "data/dim2/simple_mesh_flat_topography/STATIONS" # Simple mesh with flat topography SH wave - name : "Simple mesh with flat topography (SH wave)" @@ -19,9 +19,9 @@ Tests: nproc : 1 elastic_wave: "SH" databases: - mesh : "data/mesh/simple_mesh_flat_topography/database.bin" - sources : "data/mesh/simple_mesh_flat_topography/sources.yaml" - stations : "data/mesh/simple_mesh_flat_topography/STATIONS" + mesh : "data/dim2/simple_mesh_flat_topography/database.bin" + sources : "data/dim2/simple_mesh_flat_topography/sources.yaml" + stations : "data/dim2/simple_mesh_flat_topography/STATIONS" # Simple mesh with curved topography - name : "Simple mesh with curved topography" @@ -31,9 +31,9 @@ Tests: nproc : 1 elastic_wave: "P_SV" databases: - mesh : "data/mesh/simple_mesh_curved_topography/database.bin" - sources : "data/mesh/simple_mesh_curved_topography/sources.yaml" - stations : "data/mesh/simple_mesh_curved_topography/STATIONS" + mesh : "data/dim2/simple_mesh_curved_topography/database.bin" + sources : "data/dim2/simple_mesh_curved_topography/sources.yaml" + stations : "data/dim2/simple_mesh_curved_topography/STATIONS" # Simple mesh with flat ocean bottom - name : "Simple mesh with flat ocean bottom" @@ -43,9 +43,9 @@ Tests: nproc : 1 elastic_wave: "P_SV" databases: - mesh : "data/mesh/fluid_solid_mesh_flat_ocean_bottom/database.bin" - sources : "data/mesh/fluid_solid_mesh_flat_ocean_bottom/sources.yaml" - stations : "data/mesh/fluid_solid_mesh_flat_ocean_bottom/STATIONS" + mesh : "data/dim2/fluid_solid_mesh_flat_ocean_bottom/database.bin" + sources : "data/dim2/fluid_solid_mesh_flat_ocean_bottom/sources.yaml" + stations : "data/dim2/fluid_solid_mesh_flat_ocean_bottom/STATIONS" # Curved ocean bottom - name : "Simple mesh with curved ocean bottom" @@ -55,9 +55,9 @@ Tests: nproc : 1 elastic_wave: "P_SV" databases: - mesh : "data/mesh/fluid_solid_mesh_curved_ocean_bottom/database.bin" - sources : "data/mesh/fluid_solid_mesh_curved_ocean_bottom/sources.yaml" - stations : "data/mesh/fluid_solid_mesh_curved_ocean_bottom/STATIONS" + mesh : "data/dim2/fluid_solid_mesh_curved_ocean_bottom/database.bin" + sources : "data/dim2/fluid_solid_mesh_curved_ocean_bottom/sources.yaml" + stations : "data/dim2/fluid_solid_mesh_curved_ocean_bottom/STATIONS" # Gmesh example - name : "Gmesh Example" @@ -67,9 +67,9 @@ Tests: nproc : 1 elastic_wave: "P_SV" databases: - mesh : "data/mesh/Gmesh_Example_Stacey/database.bin" - sources : "data/mesh/Gmesh_Example_Stacey/sources.yaml" - stations : "data/mesh/Gmesh_Example_Stacey/STATIONS" + mesh : "data/dim2/Gmesh_Example_Stacey/database.bin" + sources : "data/dim2/Gmesh_Example_Stacey/sources.yaml" + stations : "data/dim2/Gmesh_Example_Stacey/STATIONS" # Homogeneous elastic isotropic material P_SV wave - name : "Homogeneous Elastic Anisotropic Material (P_SV wave)" @@ -79,9 +79,9 @@ Tests: nproc : 1 elastic_wave: "P_SV" databases: - mesh : "data/mesh/homogeneous_elastic_anisotropic/database.bin" - sources : "data/mesh/homogeneous_elastic_anisotropic/sources.yaml" - stations : "data/mesh/homogeneous_elastic_anisotropic/STATIONS" + mesh : "data/dim2/homogeneous_elastic_anisotropic/database.bin" + sources : "data/dim2/homogeneous_elastic_anisotropic/sources.yaml" + stations : "data/dim2/homogeneous_elastic_anisotropic/STATIONS" # Homogeneous elastic anisotropic material SH wave - name : "Homogeneous Elastic Anisotropic Material (SH wave)" @@ -91,9 +91,9 @@ Tests: nproc : 1 elastic_wave: "SH" databases: - mesh : "data/mesh/homogeneous_elastic_anisotropic/database.bin" - sources : "data/mesh/homogeneous_elastic_anisotropic/sources.yaml" - stations : "data/mesh/homogeneous_elastic_anisotropic/STATIONS" + mesh : "data/dim2/homogeneous_elastic_anisotropic/database.bin" + sources : "data/dim2/homogeneous_elastic_anisotropic/sources.yaml" + stations : "data/dim2/homogeneous_elastic_anisotropic/STATIONS" # Poroelastic mesh - name: "Poroelastic mesh - Homogeneous isotropic material" @@ -103,9 +103,9 @@ Tests: nproc: 1 elastic_wave: "P_SV" databases: - mesh: "data/mesh/homogeneous_poroelastic_isotropic/database.bin" - sources: "data/mesh/homogeneous_poroelastic_isotropic/sources.yaml" - stations: "data/mesh/homogeneous_poroelastic_isotropic/DATA/STATIONS" + mesh: "data/dim2/homogeneous_poroelastic_isotropic/database.bin" + sources: "data/dim2/homogeneous_poroelastic_isotropic/sources.yaml" + stations: "data/dim2/homogeneous_poroelastic_isotropic/DATA/STATIONS" # Elastic Spin mesh - name: "Elastic Isotropic Cosserat Medium - Homogeneous" @@ -115,9 +115,9 @@ Tests: nproc: 1 elastic_wave: "P_SV" databases: - mesh: "data/mesh/cosserat_isotropic_homogeneous/database.bin" - sources: "data/mesh/cosserat_isotropic_homogeneous/sources.yaml" - stations: "data/mesh/cosserat_isotropic_homogeneous/DATA/STATIONS" + mesh: "data/dim2/cosserat_isotropic_homogeneous/database.bin" + sources: "data/dim2/cosserat_isotropic_homogeneous/sources.yaml" + stations: "data/dim2/cosserat_isotropic_homogeneous/DATA/STATIONS" # # Electromagnetic mesh P_SV wave # - name: "Electro-magnetic mesh example from Morency 2020" @@ -127,6 +127,6 @@ Tests: # nproc: 1 # elastic_wave: "P_SV" # databases: -# mesh: "data/mesh/electromagnetic_mesh_morency2020/database.bin" -# sources: "data/mesh/electromagnetic_mesh_morency2020/sources.yaml" -# stations: "data/mesh/electromagnetic_mesh_morency2020/DATA/STATIONS" +# mesh: "data/dim2/electromagnetic_mesh_morency2020/database.bin" +# sources: "data/dim2/electromagnetic_mesh_morency2020/sources.yaml" +# stations: "data/dim2/electromagnetic_mesh_morency2020/DATA/STATIONS" diff --git a/tests/unit-tests/mesh_utilities/mapping.cpp b/tests/unit-tests/mesh_utilities/mapping.cpp index 6bae7ce56..7dc0cd11d 100644 --- a/tests/unit-tests/mesh_utilities/mapping.cpp +++ b/tests/unit-tests/mesh_utilities/mapping.cpp @@ -168,7 +168,14 @@ create_coordinate_arrays(const std::vector &reordered_points, } int ngllxz = ngll * ngll; - assert(nglob != (nspec * ngllxz)); + + // assembly should reduce number of unique global nodes if there are shared + // nodes. nspec = 1 means no sharing, so nglob should equal nspec*ngllxz + if (nspec > 1) { + assert(nglob < (nspec * ngllxz)); + } else { + assert(nglob == (nspec * ngllxz)); + } assert(inum == nglob); return std::make_tuple(index_mapping, coord, inum); diff --git a/tests/unit-tests/nonconforming/reparameterizations/compute_intersection_test.cpp b/tests/unit-tests/nonconforming/reparameterizations/compute_intersection_test.cpp new file mode 100644 index 000000000..440702e6b --- /dev/null +++ b/tests/unit-tests/nonconforming/reparameterizations/compute_intersection_test.cpp @@ -0,0 +1,132 @@ +#include "Kokkos_Environment.hpp" +#include "MPI_environment.hpp" + +#include + +#include "algorithms/locate_point.hpp" +#include "specfem/assembly/nonconforming_interfaces/dim2/impl/compute_intersection.hpp" +#include + +TEST(impl__compute_intersection, KnotCorrectness) { + const int ngnod = 4; + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> + coorg1("coorg1", ngnod); + const Kokkos::View< + specfem::point::global_coordinates *, + Kokkos::HostSpace> + coorg2("coorg2", ngnod); + // element 1 lies on [0,1] x [0,1] + coorg1(0) = { 0, 0 }; + coorg1(1) = { 1, 0 }; + coorg1(2) = { 1, 1 }; + coorg1(3) = { 0, 1 }; + + // match element 1 (right) to element 2 (left) + coorg2(0).x = 1; + coorg2(1).x = 2; + coorg2(2).x = 2; + coorg2(3).x = 1; + + const Kokkos::View mortar_quad("mortar_quad", + 3); + mortar_quad(0) = -1; + mortar_quad(1) = 0; + mortar_quad(2) = 1; + + // different vertical offsets for element 2 + for (const auto [coord_lo, coord_hi] : + std::vector >{ + { 0, 1 }, { -1, 0.5 }, { 0.5, 1 }, { 1.5, 2.5 }, { -100, -0.1 } }) { + coorg2(0).z = coord_lo; + coorg2(1).z = coord_lo; + coorg2(2).z = coord_hi; + coorg2(3).z = coord_hi; + + if (coord_lo > 1 || coord_hi < 0) { + EXPECT_THROW(specfem::assembly::nonconforming_interfaces_impl:: + compute_intersection( + coorg1, coorg2, specfem::mesh_entity::type::right, + specfem::mesh_entity::type::left, mortar_quad), + std::runtime_error) + << "Global coordinate intervals:\n" + << " side 1: [0, 1]\n" + << " side 2: [" << coord_lo << ", " << coord_hi << "]\n" + << "There should be no intersection, causing `compute_intersection` " + "to throw an error, but none was thrown."; + continue; + } + + type_real eps = 1e-3; + + // compute mortar explicitly + type_real global_lo = std::max(coord_lo, type_real(0)); + type_real global_hi = std::min(coord_hi, type_real(1)); + + // coord_lo -> -1, coord_hi -> 1 + type_real side1_lo = global_lo * 2 - 1; + type_real side1_hi = global_hi * 2 - 1; + type_real side2_lo = 2 * (global_lo - coord_lo) / (coord_hi - coord_lo) - 1; + type_real side2_hi = 2 * (global_hi - coord_lo) / (coord_hi - coord_lo) - 1; + + auto out = + specfem::assembly::nonconforming_interfaces_impl::compute_intersection( + coorg1, coorg2, specfem::mesh_entity::type::right, + specfem::mesh_entity::type::left, mortar_quad); + + // compare against ground truth + std::vector > expectations{ + { side1_lo, side2_lo }, + { (side1_lo + side1_hi) / 2, (side2_lo + side2_hi) / 2 }, + { side1_hi, side2_hi } + }; + std::vector > fails(3); + bool failed = false; + for (int i = 0; i < mortar_quad.size(); i++) { + fails[i] = { std::abs(out[i].first - expectations[i].first) > eps, + std::abs(out[i].second - expectations[i].second) > eps }; + if (fails[i].first || fails[i].second) { + failed = true; + } + } + + // error? + if (failed) { + std::ostringstream oss; + oss << "Global coordinate intervals:\n" + << " side 1: [0, 1]\n" + << " side 2: [" << coord_lo << ", " << coord_hi << "]\n" + << " intersection: [" << global_lo << ", " << global_hi << "]\n" + << " side 1 coords: [" << side1_lo << ", " << side1_hi << "]\n" + << " side 2 coords: [" << side2_lo << ", " << side2_hi << "]\n\n"; + oss << "Intersection knots (side 1 coordinates):\n"; + for (int i = 0; i < mortar_quad.size(); i++) { + type_real measured = out[i].first; + type_real expect = expectations[i].first; + if (fails[i].first) { + oss << "[✘] " << measured << " (expected: " << expect + << ", err:" << std::scientific << std::showpos + << (measured - expect) << ")\n" + << std::fixed; + } else { + oss << "[✔] " << measured << "\n"; + } + } + oss << "Intersection knots (side 2 coordinates):\n"; + for (int i = 0; i < mortar_quad.size(); i++) { + type_real measured = out[i].second; + type_real expect = expectations[i].second; + if (fails[i].second) { + oss << "[✘] " << measured << " (expected: " << expect + << ", err:" << std::scientific << std::showpos + << (measured - expect) << ")\n" + << std::fixed; + } else { + oss << "[✔] " << measured << "\n"; + } + } + FAIL() << oss.str(); + } + } +} diff --git a/tests/unit-tests/io/sources/runner.cpp b/tests/unit-tests/nonconforming/runner.cpp similarity index 100% rename from tests/unit-tests/io/sources/runner.cpp rename to tests/unit-tests/nonconforming/runner.cpp diff --git a/tests/unit-tests/policies/chunked_edge.cpp b/tests/unit-tests/policies/chunked_edge.cpp new file mode 100644 index 000000000..222681b23 --- /dev/null +++ b/tests/unit-tests/policies/chunked_edge.cpp @@ -0,0 +1,252 @@ +#include "Kokkos_Environment.hpp" +#include "MPI_environment.hpp" +#include "enumerations/interface.hpp" +#include "execution/chunked_edge_iterator.hpp" +#include "execution/chunked_intersection_iterator.hpp" +#include "execution/for_all.hpp" +#include "parallel_configuration/chunk_edge_config.hpp" +#include +#include +#include +#include +#include +#include + +// Base fixture for common functionality +class ChunkedIteratorTestBase { +public: + using ParallelConfig = specfem::parallel_config::default_chunk_edge_config< + specfem::dimension::type::dim2, Kokkos::DefaultExecutionSpace>; + + constexpr static int num_points = 5; + using StorageViewType = + Kokkos::View; + using EdgesViewType = + Kokkos::View; +}; + +// Test parameter structs (no Kokkos views here) +struct EdgeIteratorTestParams { + std::size_t number_of_edges; + std::string name; + + EdgeIteratorTestParams(std::size_t n, const char *test_name) + : number_of_edges(n), name(test_name) {} +}; + +std::ostream &operator<<(std::ostream &os, + const EdgeIteratorTestParams ¶ms) { + os << params.name; + return os; +} + +struct IntersectionIteratorTestParams { + std::size_t number_of_edges; + std::string name; + + IntersectionIteratorTestParams(std::size_t n, const char *test_name) + : number_of_edges(n), name(test_name) {} +}; + +std::ostream &operator<<(std::ostream &os, + const IntersectionIteratorTestParams ¶ms) { + os << params.name; + return os; +} + +// Fixture specifically for Edge Iterator tests +class EdgeIterator : public ChunkedIteratorTestBase { +public: + StorageViewType view; + EdgesViewType edges; + std::string name; + int number_of_edges; + + EdgeIterator(const EdgeIteratorTestParams ¶ms) + : view("view", params.number_of_edges), + edges("edges", params.number_of_edges), name(params.name), + number_of_edges(params.number_of_edges) { + + this->reset(); + Kokkos::fence(); + } + + void run() const { + specfem::execution::ChunkedEdgeIterator iterator( + ParallelConfig(), this->edges, this->num_points); + specfem::execution::for_all( + "test_chunked_edge_iterator", iterator, + KOKKOS_CLASS_LAMBDA( + const typename decltype(iterator)::base_index_type &index) { + Kokkos::atomic_add(&view(index.ispec, index.ipoint), 1); + }); + + Kokkos::fence(); + } + + void check() const { + auto host_view = Kokkos::create_mirror_view(view); + Kokkos::deep_copy(host_view, view); + + for (std::size_t i = 0; i < host_view.extent(0); ++i) { + for (int j = 0; j < this->num_points; ++j) { + EXPECT_EQ(host_view(i, j), 1) + << "Edge iterator failed at (" << i << "," << j << ") " + << "for test: " << name; + } + } + } + + void reset() const { + Kokkos::parallel_for( + "initialize_edges", + Kokkos::RangePolicy(0, number_of_edges), + KOKKOS_CLASS_LAMBDA(const int i) { + for (int j = 0; j < num_points; ++j) + view(i, j) = 0; + edges(i) = specfem::mesh_entity::edge( + static_cast(i), specfem::mesh_entity::type::top); + }); + } +}; + +// Fixture specifically for Intersection Iterator tests +class IntersectionIterator : public ChunkedIteratorTestBase { +public: + StorageViewType self_view; + StorageViewType coupled_view; + EdgesViewType edges; + EdgesViewType intersection_edges; + std::string name; + int number_of_edges; + + IntersectionIterator(const IntersectionIteratorTestParams ¶ms) + : self_view("self_view", params.number_of_edges), + coupled_view("coupled_view", params.number_of_edges), + edges("edges", params.number_of_edges), + intersection_edges("intersection_edges", params.number_of_edges), + name(params.name), number_of_edges(params.number_of_edges) { + + this->reset(); + Kokkos::fence(); + } + + void run() const { + specfem::execution::ChunkedIntersectionIterator iterator( + ParallelConfig(), edges, intersection_edges, num_points); + specfem::execution::for_all( + "test_chunked_intersection_edge_iterator", iterator, + KOKKOS_CLASS_LAMBDA( + const typename decltype(iterator)::base_index_type &index) { + const auto self_index = index.self_index; + const auto coupled_index = index.coupled_index; + Kokkos::atomic_add(&self_view(self_index.ispec, self_index.ipoint), + 1); + Kokkos::atomic_add( + &coupled_view(coupled_index.ispec, coupled_index.ipoint), 1); + }); + Kokkos::fence(); + } + + void check() const { + auto host_self_view = Kokkos::create_mirror_view(self_view); + Kokkos::deep_copy(host_self_view, self_view); + auto host_coupled_view = Kokkos::create_mirror_view(coupled_view); + Kokkos::deep_copy(host_coupled_view, coupled_view); + + for (std::size_t i = 0; i < number_of_edges; ++i) { + for (int j = 0; j < num_points; ++j) { + EXPECT_EQ(host_self_view(i, j), 1) + << "Intersection iterator failed at (" << i << "," << j << ") " + << "expected: 1 for test: " << name; + + EXPECT_EQ(host_coupled_view(i, j), 1) + << "Intersection iterator failed at (" << i << "," << j << ") " + << "expected: 1 for test: " << name; + } + } + } + + void reset() const { + Kokkos::parallel_for( + "initialize_intersection_edges", + Kokkos::RangePolicy(0, number_of_edges), + KOKKOS_CLASS_LAMBDA(const int i) { + for (int j = 0; j < num_points; ++j) { + self_view(i, j) = 0; + coupled_view(i, j) = 0; + } + edges(i) = specfem::mesh_entity::edge( + static_cast(i), specfem::mesh_entity::type::top); + intersection_edges(i) = specfem::mesh_entity::edge( + static_cast(number_of_edges - i - 1), + specfem::mesh_entity::type::bottom); + }); + } +}; + +// Value parameterized tests +class EdgeIteratorTest + : public ::testing::TestWithParam { +protected: + void SetUp() override { + // Common setup if needed + } + + void TearDown() override { + // Common cleanup if needed + } +}; + +class IntersectionIteratorTest + : public ::testing::TestWithParam { +protected: + void SetUp() override { + // Common setup if needed + } + + void TearDown() override { + // Common cleanup if needed + } +}; + +TEST_P(EdgeIteratorTest, VisitAllPoints) { + const EdgeIterator test(GetParam()); + test.reset(); + Kokkos::fence(); + test.run(); + test.check(); +} + +TEST_P(IntersectionIteratorTest, VisitAllPoints) { + const IntersectionIterator test(GetParam()); + test.reset(); + Kokkos::fence(); + test.run(); + test.check(); +} + +INSTANTIATE_TEST_SUITE_P( + EdgeIteratorTests, EdgeIteratorTest, + ::testing::Values(EdgeIteratorTestParams{ 10, "SmallEdgeValues" }, + EdgeIteratorTestParams{ 1000, "LargeEdgeValues" }, + EdgeIteratorTestParams{ 10000, "VeryLargeEdgeValues" }, + EdgeIteratorTestParams{ 1024, + "ExactChunkSizeEdgeValues" })); + +INSTANTIATE_TEST_SUITE_P( + IntersectionIteratorTests, IntersectionIteratorTest, + ::testing::Values( + IntersectionIteratorTestParams{ 10, "SmallIntersectionEdgeValues" }, + IntersectionIteratorTestParams{ 1000, "LargeIntersectionEdgeValues" }, + IntersectionIteratorTestParams{ 10000, + "VeryLargeIntersectionEdgeValues" }, + IntersectionIteratorTestParams{ + 1024, "ExactChunkSizeIntersectionEdgeValues" })); + +int main(int argc, char *argv[]) { + ::testing::InitGoogleTest(&argc, argv); + ::testing::AddGlobalTestEnvironment(new MPIEnvironment); + ::testing::AddGlobalTestEnvironment(new KokkosEnvironment); + return RUN_ALL_TESTS(); +} diff --git a/tests/unit-tests/seismogram/acoustic/seismogram_tests.cpp b/tests/unit-tests/seismogram/acoustic/seismogram_tests.cpp index df05b8616..e8c0e79f7 100644 --- a/tests/unit-tests/seismogram/acoustic/seismogram_tests.cpp +++ b/tests/unit-tests/seismogram/acoustic/seismogram_tests.cpp @@ -95,7 +95,7 @@ TEST(SEISMOGRAM_TESTS, acoustic_seismograms_test) { const auto angle = setup.get_receiver_angle(); const auto stations_node = setup.get_stations(); - auto receivers = specfem::io::read_receivers(stations_node, angle); + auto receivers = specfem::io::read_2d_receivers(stations_node, angle); const auto stypes = setup.get_seismogram_types(); specfem::assembly::assembly assembly(mesh, quadratures, sources, receivers, diff --git a/tests/unit-tests/seismogram/elastic/seismogram_tests.cpp b/tests/unit-tests/seismogram/elastic/seismogram_tests.cpp index 08277abe8..bd2ab2705 100644 --- a/tests/unit-tests/seismogram/elastic/seismogram_tests.cpp +++ b/tests/unit-tests/seismogram/elastic/seismogram_tests.cpp @@ -95,7 +95,7 @@ TEST(SEISMOGRAM_TESTS, elastic_seismograms_test) { const auto angle = setup.get_receiver_angle(); const auto stations_node = setup.get_stations(); - auto receivers = specfem::io::read_receivers(stations_node, angle); + auto receivers = specfem::io::read_2d_receivers(stations_node, angle); const auto stypes = setup.get_seismogram_types(); specfem::assembly::assembly assembly(mesh, quadratures, sources, receivers, diff --git a/tests/unit-tests/source/dim2/vector_sources/force_source.hpp b/tests/unit-tests/source/dim2/vector_sources/force_source.hpp index 13398564a..cdee9a457 100644 --- a/tests/unit-tests/source/dim2/vector_sources/force_source.hpp +++ b/tests/unit-tests/source/dim2/vector_sources/force_source.hpp @@ -73,15 +73,15 @@ std::vector get_parameters_and_solutions< specfem::wavefield::simulation_field::forward, specfem::element::medium_tag::elastic_psv), ForceSource2DSolution(0.0, 0.0, 0.0, - std::vector{ 0., -1.0 })), - // Test elastic_psv_t source at origin with 45 angle + std::vector{ 0., 1.0 })), + // Test elastic PSV source at origin with 45 angle std::make_tuple( - ForceSource2DParameters("elastic_psv_t and 45 angle", 4.0, 4.0, 45.0, + ForceSource2DParameters("elastic_psv and 45 degree angle", 0.0, 0.0, + 45.0, specfem::wavefield::simulation_field::forward, - specfem::element::medium_tag::elastic_psv_t), + specfem::element::medium_tag::elastic_psv), ForceSource2DSolution( - 4.0, 4.0, 45.0, - std::vector{ sqrt2over2, -sqrt2over2, 0.0 })), + 0.0, 0.0, 45.0, std::vector{ sqrt2over2, sqrt2over2 })), // Test elastic isotropic source at origin with 90 degree angle std::make_tuple(ForceSource2DParameters( "elastic_isotropic and 90 angle", 3.0, 3.0, 90.0, @@ -110,7 +110,7 @@ std::vector get_parameters_and_solutions< specfem::element::medium_tag::elastic_psv_t), ForceSource2DSolution( 4.0, 4.0, 45.0, - std::vector{ sqrt2over2, -sqrt2over2, 0.0 })) + std::vector{ sqrt2over2, sqrt2over2, 0.0 })) }; } diff --git a/tmp/Par_File b/tmp/Par_File deleted file mode 100644 index 40603518f..000000000 --- a/tmp/Par_File +++ /dev/null @@ -1,181 +0,0 @@ -#----------------------------------------------------------- -# -# Simulation input parameters -# -#----------------------------------------------------------- - -# title of job -title = Elastic Simulation with point source - -# parameters concerning partitioning -NPROC = 1 # number of processes - -# Output folder to store mesh related files -OUTPUT_FILES = ./OUTPUT_FILES - - -#----------------------------------------------------------- -# -# Mesh -# -#----------------------------------------------------------- - -# Partitioning algorithm for decompose_mesh -PARTITIONING_TYPE = 3 # SCOTCH = 3, ascending order (very bad idea) = 1 - -# number of control nodes per element (4 or 9) -NGNOD = 9 - -# location to store the mesh -database_filename = ./OUTPUT_FILES/database.bin - -#----------------------------------------------------------- -# -# Receivers -# -#----------------------------------------------------------- - -# use an existing STATION file found in ./DATA or create a new one from the receiver positions below in this Par_file -use_existing_STATIONS = .false. - -# number of receiver sets (i.e. number of receiver lines to create below) -###START:NRECEIVERSETS### -nreceiversets = 4 - -# orientation -anglerec = 0.d0 # angle to rotate components at receivers -rec_normal_to_surface = .false. # base anglerec normal to surface (external mesh and curve file needed) - -# first receiver set (repeat these 6 lines and adjust nreceiversets accordingly) -nrec = 2 # number of receivers -xdeb = 300. # first receiver x in meters -zdeb = 210. # first receiver z in meters -xfin = 224. # last receiver x in meters (ignored if only one receiver) -zfin = 216. # last receiver z in meters (ignored if only one receiver) -record_at_surface_same_vertical = .false. # receivers inside the medium or at the surface (z values are ignored if this is set to true, they are replaced with the topography height) - -# second receiver set -nrec = 2 # number of receivers -xdeb = 170. # first receiver x in meters -zdeb = 216. # first receiver z in meters -xfin = 110. # last receiver x in meters (ignored if only one receiver) -zfin = 190. # last receiver z in meters (ignored if only one receiver) -record_at_surface_same_vertical = .false. # receivers inside the medium or at the surface (z values are ignored if this is set to true, they are replaced with the topography height) - -# third receiver set -nrec = 2 # number of receivers -xdeb = 200. # first receiver x in meters -zdeb = 310. # first receiver z in meters -xfin = 120. # last receiver x in meters (ignored if only one receiver) -zfin = 130. # last receiver z in meters (ignored if only one receiver) -record_at_surface_same_vertical = .false. # receivers inside the medium or at the surface (z values are ignored if this is set to true, they are replaced with the topography height) - -# fourth receiver set -nrec = 2 # number of receivers -xdeb = 200. # first receiver x in meters -zdeb = 110. # first receiver z in meters -xfin = 210. # last receiver x in meters (ignored if only one receiver) -zfin = 150. # last receiver z in meters (ignored if only one receiver) -record_at_surface_same_vertical = .false. # receivers inside the medium or at the surface (z values are ignored if this is set to true, they are replaced with the topography height) - -###END:RECEIVER SETS### -# filename to store stations file -stations_filename = ./OUTPUT_FILES/STATIONS - -#----------------------------------------------------------- -# -# Velocity and density models -# -#----------------------------------------------------------- - -# number of model materials -nbmodels = 1 -# available material types (see user manual for more information) -# acoustic: model_number 1 rho Vp 0 0 0 QKappa 9999 0 0 0 0 0 0 (for QKappa use 9999 to ignore it) -# elastic: model_number 1 rho Vp Vs 0 0 QKappa Qmu 0 0 0 0 0 0 (for QKappa and Qmu use 9999 to ignore them) -# anisotropic: model_number 2 rho c11 c13 c15 c33 c35 c55 c12 c23 c25 0 QKappa Qmu -# anisotropic in AXISYM: model_number 2 rho c11 c13 c15 c33 c35 c55 c12 c23 c25 c22 QKappa Qmu -# poroelastic: model_number 3 rhos rhof phi c kxx kxz kzz Ks Kf Kfr etaf mufr Qmu -# cosserat: model_number 5 rho kappa mu nu j lambda_c mu_c nu_c -# tomo: model_number -1 0 0 A 0 0 0 0 0 0 0 0 0 0 -# -# note: When viscoelasticity or viscoacousticity is turned on, -# the Vp and Vs values that are read here are the UNRELAXED ones i.e. the values at infinite frequency -# unless the READ_VELOCITIES_AT_f0 parameter above is set to true, in which case they are the values at frequency f0. -# -# Please also note that Qmu is always equal to Qs, but Qkappa is in general not equal to Qp. -# To convert one to the other see doc/Qkappa_Qmu_versus_Qp_Qs_relationship_in_2D_plane_strain.pdf and -# utils/attenuation/conversion_from_Qkappa_Qmu_to_Qp_Qs_from_Dahlen_Tromp_959_960.f90. -###START:MATERIAL PROPERTIES### -1 5 2700.d0 13.5d09 8.1d09 2.7d05 2700.d0 7.75d11 1.5d11 2.7d05 0 0 0 0 0 -###END:MATERIAL PROPERTIES### - -# external tomography file -TOMOGRAPHY_FILE = ./DATA/tomo_file.xyz - -# use an external mesh created by an external meshing tool or use the internal mesher -read_external_mesh = .false. - -#----------------------------------------------------------- -# -# PARAMETERS FOR EXTERNAL MESHING -# -#----------------------------------------------------------- - -# data concerning mesh, when generated using third-party app (more info in README) -# (see also absorbing_conditions above) -mesh_file = ./DATA/mesh_file # file containing the mesh -nodes_coords_file = ./DATA/nodes_coords_file # file containing the nodes coordinates -materials_file = ./DATA/materials_file # file containing the material number for each element -free_surface_file = ./DATA/free_surface_file # file containing the free surface -axial_elements_file = ./DATA/axial_elements_file # file containing the axial elements if AXISYM is true -absorbing_surface_file = ./DATA/absorbing_surface_file # file containing the absorbing surface -acoustic_forcing_surface_file = ./DATA/MSH/Surf_acforcing_Bottom_enforcing_mesh # file containing the acoustic forcing surface -absorbing_cpml_file = ./DATA/absorbing_cpml_file # file containing the CPML element numbers -tangential_detection_curve_file = ./DATA/courbe_eros_nodes # file containing the curve delimiting the velocity model - -#----------------------------------------------------------- -# -# PARAMETERS FOR INTERNAL MESHING -# -#----------------------------------------------------------- - -# file containing interfaces for internal mesh -interfacesfile = ./topography.dat - -# geometry of the model (origin lower-left corner = 0,0) and mesh description -###START:LX### -xmin = 0.d0 # abscissa of left side of the model -xmax = 400.d0 # abscissa of right side of the model -###END:LX### -###START:NX### -nx = 30 # number of elements along X -###END:NX### - -###START:STACEY### -STACEY_ABSORBING_CONDITIONS = .false. -###END:STACEY### - -# absorbing boundary parameters (see absorbing_conditions above) -###START:ABSORBING CONDITIONS### -absorbbottom = .true. -absorbright = .true. -absorbtop = .true. -absorbleft = .true. -###END:ABSORBING CONDITIONS### - -# define the different regions of the model in the (nx,nz) spectral-element mesh -nbregions = 1 # then set below the different regions and model number for each region -# format of each line: nxmin nxmax nzmin nzmax material_number -###START:REGIONS### -1 30 1 30 1 -###END:REGIONS### -#----------------------------------------------------------- -# -# DISPLAY PARAMETERS -# -#----------------------------------------------------------- - -# meshing output -output_grid_Gnuplot = .false. # generate a GNUPLOT file containing the grid, and a script to plot it -output_grid_ASCII = .false. # dump the grid in an ASCII text file consisting of a set of X,Y,Z points or not diff --git a/tmp/plot_seis.py b/tmp/plot_seis.py deleted file mode 100644 index 5c96b280d..000000000 --- a/tmp/plot_seis.py +++ /dev/null @@ -1,102 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt - - -if __name__ == "__main__": - # plt.figure(figsize=(15, 12)) - - # plt.title("Displacement field, no spin (orange: specfem, blue: finite difference)") - - # for ifg, comp in enumerate(["x", "z"]): - # trace_ref = np.load("reference/traces_fd/u" + comp + "_no_spin.npy")[:, ::5] - # trace = np.zeros(trace_ref.shape) - - # for i in range(trace_ref.shape[0]): - # trace[i, :] = np.loadtxt( - # f"reference/traces_no_spin/AA.S000{i + 1}.S2.BX{comp.upper()}.semd" - # )[:, 1] - - # max1 = abs(trace_ref).max() - # max2 = abs(trace).max() - - # for i in range(trace_ref.shape[0]): - # plt.subplot(trace_ref.shape[0], 2, i * 2 + 1 + ifg) - # plt.ylim(-1.1, 1.1) - # plt.plot(trace_ref[i, :] / max1) - # plt.plot(trace[i, :] / max2, "--") - - # plt.gca().get_xaxis().set_visible(False) - - # plt.tight_layout() - # plt.savefig("OUTPUT_FILES/u_no_spin.png") - - plt.figure(figsize=(15, 12)) - plt.title( - "Displacement field, with spin (orange: specfem, blue: finite difference)" - ) - - for ifg, comp in enumerate(["x", "z"]): - trace_ref = np.load( - "/home/ccui/seispie/examples/spin2/output/u" + comp + "_000000.npy" - )[:, ::3] - trace = np.zeros(trace_ref.shape) - - for i in range(trace_ref.shape[0]): - tr = np.loadtxt( - f"OUTPUT_FILES/results/AA.S000{i + 1}.S2.BX{comp.upper()}.semd" - ) - trace[i, :] = np.loadtxt( - f"OUTPUT_FILES/results/AA.S000{i + 1}.S2.BX{comp.upper()}.semd" - )[:, 1] - tr[:, 1] = trace_ref[i, :] - np.savetxt( - f"../tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S000{i + 1}.S2.BX{comp.upper()}.semd", - tr, - ) - - max1 = abs(trace_ref).max() - max2 = abs(trace_ref).max() - - for i in range(trace_ref.shape[0]): - plt.subplot(trace_ref.shape[0], 2, i * 2 + 1 + ifg) - plt.ylim(-1.1, 1.1) - plt.plot(trace_ref[i, :] / max1) - plt.plot(trace[i, :] / max2, "--") - - plt.gca().get_xaxis().set_visible(False) - - plt.tight_layout() - plt.savefig("OUTPUT_FILES/u.png") - - plt.figure(figsize=(8, 12)) - plt.title("Spin field (orange: specfem, blue: finite difference)") - - trace_ref = np.load("/home/ccui/seispie/examples/spin2/output/ry_000000.npy")[ - :, ::3 - ] - trace = np.zeros(trace_ref.shape) - - for i in range(trace_ref.shape[0]): - tr = np.loadtxt(f"OUTPUT_FILES/results/AA.S000{i + 1}.S2.BXY.semr") - trace[i, :] = np.loadtxt(f"OUTPUT_FILES/results/AA.S000{i + 1}.S2.BXY.semr")[ - :, 1 - ] - tr[:, 1] = trace_ref[i, :] - np.savetxt( - f"../tests/unit-tests/displacement_tests/Newmark/serial/HomogeneousIsotropicCosseratDomainHighFrequency/traces/AA.S000{i + 1}.S2.BXY.semr", - tr, - ) - - max1 = abs(trace_ref).max() - max2 = abs(trace_ref).max() - - for i in range(trace_ref.shape[0]): - plt.subplot(trace_ref.shape[0], 1, i + 1) - plt.ylim(-1.1, 1.1) - plt.plot(trace_ref[i, :] / max1) - plt.plot(trace[i, :] / max2, "--") - - plt.gca().get_xaxis().set_visible(False) - - plt.tight_layout() - plt.savefig("OUTPUT_FILES/spin.png") diff --git a/tmp/source.yaml b/tmp/source.yaml deleted file mode 100644 index 54e996945..000000000 --- a/tmp/source.yaml +++ /dev/null @@ -1,13 +0,0 @@ -number-of-sources: 1 -sources: - - force: - Ricker: - f0: 30.0 - factor: 1e10 - tshift: 0.0 - angle: 0.0 - f: 1.0 - fc: 0.0 - source_surf: false - x: 200.0 - z: 200.0 diff --git a/tmp/specfem_config.yaml b/tmp/specfem_config.yaml deleted file mode 100644 index ac2b00183..000000000 --- a/tmp/specfem_config.yaml +++ /dev/null @@ -1,51 +0,0 @@ -parameters: - - header: - ## Header information is used for logging. It is good practice to give your simulations explicit names - title: Isotropic Elastic simulation # name for your simulation - # A detailed description for your simulation - description: | - Material systems : Elastic domain (1) - Interfaces : None - Sources : Force source (1) - Boundary conditions : Neumann BCs on all edges - - simulation-setup: - ## quadrature setup - quadrature: - quadrature-type: GLL4 - - ## Solver setup - solver: - time-marching: - time-scheme: - type: Newmark - dt: 1.5e-4 - nstep: 800 - - simulation-mode: - forward: - writer: - seismogram: - format: "ascii" - directory: "OUTPUT_FILES/results" - - receivers: - stations: "OUTPUT_FILES/STATIONS" - angle: 0.0 - seismogram-type: - - displacement - - rotation - nstep_between_samples: 1 - - ## Runtime setup - run-setup: - number-of-processors: 1 - number-of-runs: 1 - - ## databases - databases: - mesh-database: "OUTPUT_FILES/database.bin" - - ## sources - sources: "source.yaml" diff --git a/uv.lock b/uv.lock index 21475403e..9be45c132 100644 --- a/uv.lock +++ b/uv.lock @@ -1,4 +1,5 @@ version = 1 +revision = 1 requires-python = ">=3.12" [[package]] @@ -851,6 +852,40 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, ] +[[package]] +name = "pandas" +version = "2.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/8e/0e90233ac205ad182bd6b422532695d2b9414944a280488105d598c70023/pandas-2.3.2.tar.gz", hash = "sha256:ab7b58f8f82706890924ccdfb5f48002b83d2b5a3845976a9fb705d36c34dcdb", size = 4488684 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/db/614c20fb7a85a14828edd23f1c02db58a30abf3ce76f38806155d160313c/pandas-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fbb977f802156e7a3f829e9d1d5398f6192375a3e2d1a9ee0803e35fe70a2b9", size = 11587652 }, + { url = "https://files.pythonhosted.org/packages/99/b0/756e52f6582cade5e746f19bad0517ff27ba9c73404607c0306585c201b3/pandas-2.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b9b52693123dd234b7c985c68b709b0b009f4521000d0525f2b95c22f15944b", size = 10717686 }, + { url = "https://files.pythonhosted.org/packages/37/4c/dd5ccc1e357abfeee8353123282de17997f90ff67855f86154e5a13b81e5/pandas-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bd281310d4f412733f319a5bc552f86d62cddc5f51d2e392c8787335c994175", size = 11278722 }, + { url = "https://files.pythonhosted.org/packages/d3/a4/f7edcfa47e0a88cda0be8b068a5bae710bf264f867edfdf7b71584ace362/pandas-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96d31a6b4354e3b9b8a2c848af75d31da390657e3ac6f30c05c82068b9ed79b9", size = 11987803 }, + { url = "https://files.pythonhosted.org/packages/f6/61/1bce4129f93ab66f1c68b7ed1c12bac6a70b1b56c5dab359c6bbcd480b52/pandas-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df4df0b9d02bb873a106971bb85d448378ef14b86ba96f035f50bbd3688456b4", size = 12766345 }, + { url = "https://files.pythonhosted.org/packages/8e/46/80d53de70fee835531da3a1dae827a1e76e77a43ad22a8cd0f8142b61587/pandas-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:213a5adf93d020b74327cb2c1b842884dbdd37f895f42dcc2f09d451d949f811", size = 13439314 }, + { url = "https://files.pythonhosted.org/packages/28/30/8114832daff7489f179971dbc1d854109b7f4365a546e3ea75b6516cea95/pandas-2.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c13b81a9347eb8c7548f53fd9a4f08d4dfe996836543f805c987bafa03317ae", size = 10983326 }, + { url = "https://files.pythonhosted.org/packages/27/64/a2f7bf678af502e16b472527735d168b22b7824e45a4d7e96a4fbb634b59/pandas-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0c6ecbac99a354a051ef21c5307601093cb9e0f4b1855984a084bfec9302699e", size = 11531061 }, + { url = "https://files.pythonhosted.org/packages/54/4c/c3d21b2b7769ef2f4c2b9299fcadd601efa6729f1357a8dbce8dd949ed70/pandas-2.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6f048aa0fd080d6a06cc7e7537c09b53be6642d330ac6f54a600c3ace857ee9", size = 10668666 }, + { url = "https://files.pythonhosted.org/packages/50/e2/f775ba76ecfb3424d7f5862620841cf0edb592e9abd2d2a5387d305fe7a8/pandas-2.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0064187b80a5be6f2f9c9d6bdde29372468751dfa89f4211a3c5871854cfbf7a", size = 11332835 }, + { url = "https://files.pythonhosted.org/packages/8f/52/0634adaace9be2d8cac9ef78f05c47f3a675882e068438b9d7ec7ef0c13f/pandas-2.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac8c320bded4718b298281339c1a50fb00a6ba78cb2a63521c39bec95b0209b", size = 12057211 }, + { url = "https://files.pythonhosted.org/packages/0b/9d/2df913f14b2deb9c748975fdb2491da1a78773debb25abbc7cbc67c6b549/pandas-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:114c2fe4f4328cf98ce5716d1532f3ab79c5919f95a9cfee81d9140064a2e4d6", size = 12749277 }, + { url = "https://files.pythonhosted.org/packages/87/af/da1a2417026bd14d98c236dba88e39837182459d29dcfcea510b2ac9e8a1/pandas-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:48fa91c4dfb3b2b9bfdb5c24cd3567575f4e13f9636810462ffed8925352be5a", size = 13415256 }, + { url = "https://files.pythonhosted.org/packages/22/3c/f2af1ce8840ef648584a6156489636b5692c162771918aa95707c165ad2b/pandas-2.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:12d039facec710f7ba305786837d0225a3444af7bbd9c15c32ca2d40d157ed8b", size = 10982579 }, + { url = "https://files.pythonhosted.org/packages/f3/98/8df69c4097a6719e357dc249bf437b8efbde808038268e584421696cbddf/pandas-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c624b615ce97864eb588779ed4046186f967374185c047070545253a52ab2d57", size = 12028163 }, + { url = "https://files.pythonhosted.org/packages/0e/23/f95cbcbea319f349e10ff90db488b905c6883f03cbabd34f6b03cbc3c044/pandas-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0cee69d583b9b128823d9514171cabb6861e09409af805b54459bd0c821a35c2", size = 11391860 }, + { url = "https://files.pythonhosted.org/packages/ad/1b/6a984e98c4abee22058aa75bfb8eb90dce58cf8d7296f8bc56c14bc330b0/pandas-2.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2319656ed81124982900b4c37f0e0c58c015af9a7bbc62342ba5ad07ace82ba9", size = 11309830 }, + { url = "https://files.pythonhosted.org/packages/15/d5/f0486090eb18dd8710bf60afeaf638ba6817047c0c8ae5c6a25598665609/pandas-2.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b37205ad6f00d52f16b6d09f406434ba928c1a1966e2771006a9033c736d30d2", size = 11883216 }, + { url = "https://files.pythonhosted.org/packages/10/86/692050c119696da19e20245bbd650d8dfca6ceb577da027c3a73c62a047e/pandas-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:837248b4fc3a9b83b9c6214699a13f069dc13510a6a6d7f9ba33145d2841a012", size = 12699743 }, + { url = "https://files.pythonhosted.org/packages/cd/d7/612123674d7b17cf345aad0a10289b2a384bff404e0463a83c4a3a59d205/pandas-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d2c3554bd31b731cd6490d94a28f3abb8dd770634a9e06eb6d2911b9827db370", size = 13186141 }, +] + [[package]] name = "pbr" version = "6.1.1" @@ -1052,6 +1087,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, ] +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, +] + [[package]] name = "pywin32" version = "310" @@ -1337,7 +1381,7 @@ wheels = [ [[package]] name = "snakemake" -version = "8.29.3" +version = "9.11.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "appdirs" }, @@ -1356,21 +1400,24 @@ dependencies = [ { name = "psutil" }, { name = "pulp" }, { name = "pyyaml" }, + { name = "referencing" }, { name = "requests" }, { name = "reretry" }, { name = "smart-open" }, { name = "snakemake-interface-common" }, { name = "snakemake-interface-executor-plugins" }, + { name = "snakemake-interface-logger-plugins" }, { name = "snakemake-interface-report-plugins" }, + { name = "snakemake-interface-scheduler-plugins" }, { name = "snakemake-interface-storage-plugins" }, { name = "tabulate" }, { name = "throttler" }, { name = "wrapt" }, { name = "yte" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/80/1ce0232ef3249de78ff77219fd51a3dc75074cf3b27f02d15106b5a360bd/snakemake-8.29.3.tar.gz", hash = "sha256:a4d4ba959beec079c7430b0cbd47989cbcc2c8943ae74034b3db38a32329c1be", size = 4761054 } +sdist = { url = "https://files.pythonhosted.org/packages/c9/67/88cbc1c18f0c97f07b7e2a0d722f4297a2398f7e6c095a30ec80d75b2126/snakemake-9.11.2.tar.gz", hash = "sha256:d0905992f6db8f887bb40234336a7979d9088886a7cabfb4334557c400d66ec9", size = 6724674 } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/d4/a921243d8ae68af333c79aeb8e69260bb3773eba72989b0e3316de79dc17/snakemake-8.29.3-py3-none-any.whl", hash = "sha256:c3e6d41f77f6e7d5c2bbb647ba682d610fa37e9dcd2497e0bfc476adcd55375b", size = 1028356 }, + { url = "https://files.pythonhosted.org/packages/ba/12/4da80db9cc71d6b5c5514dc53c4cb51a147cd22065596020ec98aeb7ab33/snakemake-9.11.2-py3-none-any.whl", hash = "sha256:9e55db7a53deef728b4ee558a5bf8207e7ffcf604edce4f1271678dec9557171", size = 1124593 }, ] [[package]] @@ -1403,15 +1450,16 @@ wheels = [ [[package]] name = "snakemake-interface-common" -version = "1.17.4" +version = "1.21.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "argparse-dataclass" }, { name = "configargparse" }, + { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/09/d4/dd2694226160c126e3ce2a27222088bde3ef07cd554d31d63398cc48f810/snakemake_interface_common-1.17.4.tar.gz", hash = "sha256:c2142e1b93cbc18c2cf41d15968ba8688f60b077c8284e5de057cccfc215d4d3", size = 9897 } +sdist = { url = "https://files.pythonhosted.org/packages/a0/d6/f28dab9c084d01ac8b916e835f35838ce801cdc7176c5ed59cf1b39b42c1/snakemake_interface_common-1.21.0.tar.gz", hash = "sha256:0b6f0ef2c1a19fa8c20d676f4e355b8ba7058e142640a1c3c36fd1b9e110ef53", size = 13760 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/fe/c318657e6a4b8ab5b3eafa07cd1c360a732c6b37ba6085f3c82339ebbbdc/snakemake_interface_common-1.17.4-py3-none-any.whl", hash = "sha256:1d757cce0300a73d48b906d1ade38706853169320a5d27b963869888d130c354", size = 14011 }, + { url = "https://files.pythonhosted.org/packages/a0/24/de0615747b9eebd2b5abf9f629120224338bac0a09a46ab86ec72d401645/snakemake_interface_common-1.21.0-py3-none-any.whl", hash = "sha256:844a23831ceab1069b859732a8f6d8151b75b89ad8ad4c58ab0dcfdea234b40a", size = 16723 }, ] [[package]] @@ -1428,21 +1476,45 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8c/b5/9bab4d70527abcea6ca2e7b5d212f348c9305205a2f5c20025e08872e99e/snakemake_interface_executor_plugins-9.3.3-py3-none-any.whl", hash = "sha256:0f8973e54977953db4111bab375d883854ff75c77a129e612ad8cf34305ae2b1", size = 22392 }, ] +[[package]] +name = "snakemake-interface-logger-plugins" +version = "1.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "snakemake-interface-common" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/d4/3cb00ef9a65bdb7f533f42df04873f96e08b8ef39eaf33c69db2e6f87f8b/snakemake_interface_logger_plugins-1.2.4.tar.gz", hash = "sha256:09193b07c260b3efc88a75a0d33767820705f66e85c14d4f0d0e562b123c3c58", size = 11858 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/c1/5af0e20e8284c890968af059868290e8c070f3676751abc524b3c4cd42a8/snakemake_interface_logger_plugins-1.2.4-py3-none-any.whl", hash = "sha256:659ddf3448024b90d2715ea82b9e4dd77ffae42615d2ba30479faaa2755a1b65", size = 10087 }, +] + [[package]] name = "snakemake-interface-report-plugins" -version = "1.1.0" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "snakemake-interface-common" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/0f/b0986bacc1087d549e2ce5f5987de73980dc7041b7c518286f5035160d89/snakemake_interface_report_plugins-1.2.0.tar.gz", hash = "sha256:36cff4d50e7763ae0def0a7cf36d85e6c575d7bad1a3ade26b66c9b2b8831c02", size = 4251 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/e0/fad8a90958288c47a26bd0b055301de6915df4bbc19cc1fd5eb5a8e29d4d/snakemake_interface_report_plugins-1.2.0-py3-none-any.whl", hash = "sha256:3f2fa6f49029f50f00b380f9a688a6d61b267f971b81faedff33188c0bf661f8", size = 7191 }, +] + +[[package]] +name = "snakemake-interface-scheduler-plugins" +version = "2.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "snakemake-interface-common" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/ae/ee9a6c9475e380bb55020dc161ab08698fe85da9e866477bfb333b15a0ed/snakemake_interface_report_plugins-1.1.0.tar.gz", hash = "sha256:b1ee444b2fca51225cf8a102f8e56633791d01433cd00cf07a1d9713a12313a5", size = 4383 } +sdist = { url = "https://files.pythonhosted.org/packages/ae/bf/b431786d74071726c6aed5f3536a03a4834c4a0286f5381e7be44269671a/snakemake_interface_scheduler_plugins-2.0.1.tar.gz", hash = "sha256:c22deccc6df4c702e67d012650571fa858e8577b759d8cb4729d16b087852b43", size = 8540 } wheels = [ - { url = "https://files.pythonhosted.org/packages/35/89/f5f4e48b72fca04458a2fe4f4b02e10f95fb47772b0d0ea889ac929c3b1e/snakemake_interface_report_plugins-1.1.0-py3-none-any.whl", hash = "sha256:00749eb3c5c7ce465757d0fc9f04e6c4d3f5af4f463809c34b92c8b5efea0fd5", size = 7076 }, + { url = "https://files.pythonhosted.org/packages/69/8b/a4a499c33719d99b8962209cb63c5095c0d16bbe04ceeaa8ed66be759ea5/snakemake_interface_scheduler_plugins-2.0.1-py3-none-any.whl", hash = "sha256:3ec1a43d6a71fba62b09a3b631cc618a672ef4d86e587d05f9aa3b2409fb6770", size = 10738 }, ] [[package]] name = "snakemake-interface-storage-plugins" -version = "3.5.0" +version = "4.2.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "reretry" }, @@ -1450,9 +1522,9 @@ dependencies = [ { name = "throttler" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/33/e638c10fb307f2576b235f9ce4ac3d085954783be716d1a958292b392bde/snakemake_interface_storage_plugins-3.5.0.tar.gz", hash = "sha256:88ee1dde95f9d5abb03113c52fb8cfa78ee502cce9ec788c161b3c09076fc075", size = 12041 } +sdist = { url = "https://files.pythonhosted.org/packages/dd/b3/cd5256e56cfe6fc51319a7d9df1a3a2a7584499fadd3c3fc5619ff39f74f/snakemake_interface_storage_plugins-4.2.3.tar.gz", hash = "sha256:95be93d1aa1c56c189d9ff661930a6475e847a79a74013822c9570c0ef691755", size = 14280 } wheels = [ - { url = "https://files.pythonhosted.org/packages/93/6b/f968bc4c8d24b22b0552fcbdbe6005d6f8ced4383e9ce4ab96d2259cd3ef/snakemake_interface_storage_plugins-3.5.0-py3-none-any.whl", hash = "sha256:90841b6333c60e5859f81eec5f63d66e8bd29108f40fe922862d31c0f761b1ca", size = 15417 }, + { url = "https://files.pythonhosted.org/packages/14/76/27e22dbcab8550bfc6477ed109408896a662dc4de9852eff16a01f394928/snakemake_interface_storage_plugins-4.2.3-py3-none-any.whl", hash = "sha256:6e5d1773e2f2e08d343e15ea4afc961a296e3d4cdb1352c81303c553f376671f", size = 17138 }, ] [[package]] @@ -1489,6 +1561,7 @@ all = [ { name = "jinja2" }, { name = "numpy" }, { name = "obspy" }, + { name = "pandas" }, { name = "pre-commit" }, { name = "pyyaml" }, { name = "restructuredtext-lint" }, @@ -1541,6 +1614,18 @@ examples = [ { name = "snakemake" }, { name = "snakemake-executor-plugin-slurm" }, ] +nightly-benchmarks = [ + { name = "h5py" }, + { name = "imageio" }, + { name = "jinja2" }, + { name = "numpy" }, + { name = "obspy" }, + { name = "pandas" }, + { name = "pyyaml" }, + { name = "scipy" }, + { name = "snakemake" }, + { name = "snakemake-executor-plugin-slurm" }, +] style = [ { name = "clang-format" }, { name = "pre-commit" }, @@ -1560,13 +1645,14 @@ all = [ { name = "jinja2", specifier = "==3.1.6" }, { name = "numpy", specifier = "==2.2.4" }, { name = "obspy", specifier = "==1.4.1" }, + { name = "pandas", specifier = "==2.3.2" }, { name = "pre-commit", specifier = "==2.19.0" }, { name = "pyyaml", specifier = "==6.0.2" }, { name = "restructuredtext-lint", specifier = "==1.4.0" }, { name = "rstcheck", specifier = "==6.2.4" }, { name = "ruff", specifier = "==0.9.1" }, { name = "scipy", specifier = "==1.15.2" }, - { name = "snakemake", specifier = "==8.29.3" }, + { name = "snakemake", specifier = "==9.11.2" }, { name = "snakemake-executor-plugin-slurm", specifier = "==0.10.2" }, { name = "sphinx-copybutton", specifier = "==0.4.0" }, { name = "sphinx-design", specifier = "==0.6.1" }, @@ -1609,7 +1695,19 @@ examples = [ { name = "obspy", specifier = "==1.4.1" }, { name = "pyyaml", specifier = "==6.0.2" }, { name = "scipy", specifier = "==1.15.2" }, - { name = "snakemake", specifier = "==8.29.3" }, + { name = "snakemake", specifier = "==9.11.2" }, + { name = "snakemake-executor-plugin-slurm", specifier = "==0.10.2" }, +] +nightly-benchmarks = [ + { name = "h5py", specifier = "==3.13.0" }, + { name = "imageio", specifier = "==2.36.1" }, + { name = "jinja2", specifier = "==3.1.6" }, + { name = "numpy", specifier = "==2.2.4" }, + { name = "obspy", specifier = "==1.4.1" }, + { name = "pandas", specifier = "==2.3.2" }, + { name = "pyyaml", specifier = "==6.0.2" }, + { name = "scipy", specifier = "==1.15.2" }, + { name = "snakemake", specifier = "==9.11.2" }, { name = "snakemake-executor-plugin-slurm", specifier = "==0.10.2" }, ] style = [ @@ -1861,6 +1959,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, ] +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, +] + [[package]] name = "urllib3" version = "2.3.0"