Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 19 additions & 8 deletions modules/acoustics/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,28 +33,39 @@ target_link_libraries(Acoustics PUBLIC FemUtils)

enable_testing()

add_test(NAME [acoustics]2D_submarine COMMAND Acoustics inputs/sub.arc)
add_test(NAME [acoustics]2D_submarine_quad COMMAND Acoustics inputs/sub.quad.arc)
add_test(NAME [acoustics]3D_sphere COMMAND Acoustics inputs/3d_sub.arc)
add_test(NAME [acoustics]3D_sphere_hexa COMMAND Acoustics inputs/3d_sphere_in_sphere.hexa.arc)

add_test(NAME [acoustics]2D_submarine COMMAND Acoustics
-A,//fem/solution-comparison-file=check/sub_2D.txt
inputs/sub.arc)
add_test(NAME [acoustics]2D_submarine_quad COMMAND Acoustics
-A,//fem/solution-comparison-file=check/sub_2D.quad.txt
inputs/sub.quad.arc)
add_test(NAME [acoustics]3D_sphere COMMAND Acoustics
-A,//fem/solution-comparison-file=check/sphere_3d.txt
inputs/3d_sub.arc)
add_test(NAME [acoustics]3D_sphere_hexa COMMAND Acoustics
-A,//fem/solution-comparison-file=check/sphere_3d.hexa.txt
inputs/3d_sphere_in_sphere.hexa.arc)

if(FEMUTILS_HAS_SOLVER_BACKEND_PETSC)
add_test(NAME [acoustics]parse_and_exit COMMAND Acoustics
-A,//fem/assemble-linear-system=false
-A,//fem/solve-linear-system=false
-A,//fem/cross-validation=false
inputs/sub.arc)
endif()

if(FEMUTILS_HAS_SOLVER_BACKEND_HYPRE)
add_test(NAME [acoustics]2D_submarine_hypre COMMAND Acoustics inputs/sub.hypre.arc)
add_test(NAME [acoustics]2D_submarine_hypre COMMAND Acoustics
-A,//fem/solution-comparison-file=check/sub_2D.txt
inputs/sub.hypre.arc)
add_test(NAME [acoustics]3D_sphere_hypre COMMAND Acoustics
-A,//fem/solution-comparison-file=check/sphere_3d.txt
-A,//fem/linear-system/@name=AlephLinearSystem
-A,//fem/linear-system/solver-backend=hypre
-A,//fem/linear-system/solver-method=gmres
inputs/3d_sub.arc)
if(FEMUTILS_HAS_PARALLEL_SOLVER AND MPIEXEC_EXECUTABLE)
add_test(NAME [acoustics]2D_submarine_hypre_2p COMMAND ${MPIEXEC_EXECUTABLE} -n 2 ./Acoustics inputs/sub.hypre.arc)
add_test(NAME [acoustics]2D_submarine_hypre_2p COMMAND ${MPIEXEC_EXECUTABLE} -n 2 ./Acoustics
-A,//fem/solution-comparison-file=check/sub_2D.txt
inputs/sub.hypre.arc)
endif()
endif()
6 changes: 1 addition & 5 deletions modules/acoustics/Fem.axl
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<!-- Define module options -->
<options>
<!-- File for result validation -->
<simple name="result-file" type="string" optional="true">
<simple name="solution-comparison-file" type="string" optional="true">
<description>File name of a file containing the values of the solution vector to check the results</description>
</simple>

Expand All @@ -49,10 +49,6 @@
<description>Boolean to enable linear system assembly.</description>
</simple>

<simple name="cross-validation" type="bool" default="true" optional="true">
<description>Boolean to enable cross validation.</description>
</simple>

<simple name="hex-quad-mesh" type="bool" default="false" optional="true">
<description>Boolean to use hexa or quad element mesh.</description>
</simple>
Expand Down
15 changes: 6 additions & 9 deletions modules/acoustics/FemModule.cc
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ startInit()
m_matrix_format = options()->matrixFormat();
m_assemble_linear_system = options()->assembleLinearSystem();
m_solve_linear_system = options()->solveLinearSystem();
m_cross_validation = options()->crossValidation();
m_cross_validation = options()->hasSolutionComparisonFile();
m_petsc_flags = options()->petscFlags();
m_hex_quad_mesh = options()->hexQuadMesh();

Expand Down Expand Up @@ -86,7 +86,7 @@ compute()
* 1. _getMaterialParameters() Retrieves material parameters via
* 2. _assembleBilinearOperator() Assembles the FEM matrix 𝑨
* 3. _assembleLinearOperator() Assembles the FEM RHS vector 𝒃
* 4. _solve() Solves for solution vector 𝒖 = 𝑨⁻¹𝒃
* 4. _solve() Solves for solution vector 𝒖 = 𝑨⁻¹𝒃
* 5. _updateVariables() Updates FEM variables 𝒖 = 𝒙
* 6. _validateResults() Regression test
*/
Expand Down Expand Up @@ -291,8 +291,8 @@ _updateVariables()
*
* This method performs the following actions:
* 1. If number of nodes < 200, prints the computed values for each node.
* 2. Retrieves the filename for the result file from options.
* 3. If a filename is provided, checks the computed results against result file.
* 2. Retrieves the filename for the solution-comparison-file from options.
* 3. Checks the computed results against solution-comparison-file.
*
* @note The result comparison uses a tolerance of 1.0e-4.
*/
Expand All @@ -310,14 +310,11 @@ _validateResults()
info() << "u[" << node.uniqueId() << "] = " << m_u[node];
}

String filename = options()->resultFile();
String filename = options()->solutionComparisonFile();
const double epsilon = 1.0e-4;
const double min_value_to_test = 1.0e-16;

info() << "[ArcaneFem-Info] Validating results filename=" << filename << " epsilon =" << epsilon;

if (!filename.empty())
checkNodeResultFile(traceMng(), filename, m_u, epsilon, min_value_to_test);
checkNodeResultFile(traceMng(), filename, m_u, epsilon, min_value_to_test);

elapsedTime = platform::getRealTime() - elapsedTime;
ArcaneFemFunctions::GeneralFunctions::printArcaneFemTime(traceMng(), "result-validation", elapsedTime);
Expand Down
2 changes: 1 addition & 1 deletion modules/acoustics/FemModule.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ class FemModule

bool m_assemble_linear_system = true;
bool m_solve_linear_system = true;
bool m_cross_validation = true;
bool m_cross_validation = false;
bool m_hex_quad_mesh = false;

void _doStationarySolve();
Expand Down
4 changes: 1 addition & 3 deletions modules/acoustics/inputs/3d_sphere_in_sphere.hexa.arc
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
- timeloop: Defines the time-stepping loop for the simulation.
-->
<arcane>
<title>Sphere in sphere Toy Case</title>
<title>Sphere in sphere toy Case</title>
<timeloop>AcousticsLoop</timeloop>
</arcane>

Expand All @@ -37,7 +37,6 @@
- kc2: Coefficient used in the FEM calculations.
- boundary-conditions: Defines neumann boundary conditions for the simulation.
- linear-system: Specifies the linear system solver to use.
- result-file: File for validation (optional)
-->
<fem>
<hex-quad-mesh>true</hex-quad-mesh>
Expand All @@ -49,7 +48,6 @@
</neumann>
</boundary-conditions>
<linear-system name="SequentialBasicLinearSystem" />
<result-file>check/sphere_3d.hexa.txt</result-file>
</fem>

<!--
Expand Down
4 changes: 1 addition & 3 deletions modules/acoustics/inputs/3d_sub.arc
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
- timeloop: Defines the time-stepping loop for the simulation.
-->
<arcane>
<title>Sphere in sphere Toy Case</title>
<title>Sphere in sphere toy Case</title>
<timeloop>AcousticsLoop</timeloop>
</arcane>

Expand All @@ -36,7 +36,6 @@
- kc2: Coefficient used in the FEM calculations.
- boundary-conditions: Defines neumann boundary conditions for the simulation.
- linear-system: Specifies the linear system solver to use.
- result-file: File for validation (optional)
-->
<fem>
<kc2>18e5</kc2>
Expand All @@ -47,7 +46,6 @@
</neumann>
</boundary-conditions>
<linear-system name="SequentialBasicLinearSystem" />
<result-file>check/sphere_3d.txt</result-file>
</fem>

<!--
Expand Down
4 changes: 1 addition & 3 deletions modules/acoustics/inputs/sub.arc
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
- timeloop: Defines the time-stepping loop for the simulation.
-->
<arcane>
<title>Submarine Toy Case</title>
<title>Submarine toy case</title>
<timeloop>AcousticsLoop</timeloop>
</arcane>

Expand All @@ -36,7 +36,6 @@
- kc2: Coefficient used in the FEM calculations.
- boundary-conditions: Defines neumann boundary conditions for the simulation.
- linear-system: Specifies the linear system solver to use.
- result-file: File for validation (optional)
-->
<fem>
<kc2>.11e1</kc2>
Expand All @@ -47,7 +46,6 @@
</neumann>
</boundary-conditions>
<linear-system name="SequentialBasicLinearSystem" />
<result-file>check/sub_2D.txt</result-file>
</fem>

<!--
Expand Down
4 changes: 1 addition & 3 deletions modules/acoustics/inputs/sub.hypre.arc
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
- timeloop: Defines the time-stepping loop for the simulation.
-->
<arcane>
<title>Submarine Toy Case</title>
<title>Submarine toy case</title>
<timeloop>AcousticsLoop</timeloop>
</arcane>

Expand All @@ -36,7 +36,6 @@
- kc2: Coefficient used in the FEM calculations.
- boundary-conditions: Defines neumann boundary conditions for the simulation.
- linear-system: Specifies the linear system solver to use.
- result-file: File for validation (optional)
-->
<fem>
<kc2>.11e1</kc2>
Expand All @@ -51,7 +50,6 @@
<solver-method>bicgstab</solver-method>
<epsilon>1e-8</epsilon>
</linear-system>
<result-file>check/sub_2D.txt</result-file>
</fem>

<!--
Expand Down
4 changes: 1 addition & 3 deletions modules/acoustics/inputs/sub.quad.arc
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
- timeloop: Defines the time-stepping loop for the simulation.
-->
<arcane>
<title>Submarine Toy Case</title>
<title>Submarine toy case</title>
<timeloop>AcousticsLoop</timeloop>
</arcane>

Expand All @@ -37,7 +37,6 @@
- kc2: Coefficient used in the FEM calculations.
- boundary-conditions: Defines neumann boundary conditions for the simulation.
- linear-system: Specifies the linear system solver to use.
- result-file: File for validation (optional)
-->
<fem>
<hex-quad-mesh>true</hex-quad-mesh>
Expand All @@ -49,7 +48,6 @@
</neumann>
</boundary-conditions>
<linear-system name="SequentialBasicLinearSystem" />
<result-file>check/sub_2D.quad.txt</result-file>
</fem>

<!--
Expand Down
42 changes: 31 additions & 11 deletions modules/aerodynamics/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,35 +35,51 @@ endforeach()
enable_testing()

if(FEMUTILS_HAS_SOLVER_BACKEND_PETSC)
add_test(NAME [aerodynamics]2d_Joukowski COMMAND aerodynamics inputs/Joukowski.arc)
add_test(NAME [aerodynamics]2d_Joukowski_quad COMMAND aerodynamics inputs/Joukowski.quad.arc)
add_test(NAME [aerodynamics]2d_Joukowski COMMAND aerodynamics
-A,//fem/solution-comparison-file=check/test_2d.txt
inputs/Joukowski.arc)
add_test(NAME [aerodynamics]2d_Joukowski_quad COMMAND aerodynamics
-A,//fem/solution-comparison-file=check/test_2d.quad.txt
inputs/Joukowski.quad.arc)
add_test(NAME [aerodynamics]parse_and_exit COMMAND aerodynamics
-A,//fem/assemble-linear-system=false
-A,//fem/solve-linear-system=false
-A,//fem/cross-validation=false
inputs/Joukowski.arc)

arcanefem_add_gpu_test(NAME [aerodynamics]2d_Joukowski_bsr COMMAND ./aerodynamics ARGS
-A,//fem/solution-comparison-file=check/test_2d.txt
-A,//fem/matrix-format=BSR
inputs/Joukowski.arc)
arcanefem_add_gpu_test(NAME [aerodynamics]2d_Joukowski_af-bsr COMMAND ./aerodynamics ARGS
-A,//fem/solution-comparison-file=check/test_2d.txt
-A,//fem/matrix-format=AF-BSR
inputs/Joukowski.arc)
arcanefem_add_gpu_test(NAME [aerodynamics]3d_Joukowski_bsr COMMAND ./aerodynamics ARGS
-A,//fem/solution-comparison-file=check/test_3d.txt
-A,//fem/matrix-format=BSR
inputs/Joukowski_3d.arc)
arcanefem_add_gpu_test(NAME [aerodynamics]3d_Joukowski_af-bsr COMMAND ./aerodynamics ARGS
-A,//fem/solution-comparison-file=check/test_3d.txt
-A,//fem/matrix-format=AF-BSR
inputs/Joukowski_3d.arc)

if(FEMUTILS_HAS_PARALLEL_SOLVER AND MPIEXEC_EXECUTABLE)
add_test(NAME [aerodynamics]2d_Joukowski_4p COMMAND ${MPIEXEC_EXECUTABLE} -n 4 ./aerodynamics inputs/Joukowski.arc)
add_test(NAME [aerodynamics]2d_Joukowski_quad_4p COMMAND ${MPIEXEC_EXECUTABLE} -n 4 ./aerodynamics inputs/Joukowski.quad.arc)
add_test(NAME [aerodynamics]3d_Joukowski_4p COMMAND ${MPIEXEC_EXECUTABLE} -n 4 ./aerodynamics inputs/Joukowski_3d.arc)
add_test(NAME [aerodynamics]3d_Joukowski_hexa_4p COMMAND ${MPIEXEC_EXECUTABLE} -n 4 ./aerodynamics inputs/Joukowski_3d.hexa.arc)
add_test(NAME [aerodynamics]3d_Joukowski_bjacobi_4p COMMAND ${MPIEXEC_EXECUTABLE} -n 4 ./aerodynamics
-A,//fem/petsc-flags=-ksp_monitor\ -ksp_type\ gmres\ -pc_type\ bjacobi\ -ksp_rtol\ 1e-15
inputs/Joukowski_3d.arc)
if(FEMUTILS_HAS_PARALLEL_SOLVER AND MPIEXEC_EXECUTABLE)
add_test(NAME [aerodynamics]2d_Joukowski_4p COMMAND ${MPIEXEC_EXECUTABLE} -n 4 ./aerodynamics
-A,//fem/solution-comparison-file=check/test_2d.txt
inputs/Joukowski.arc)
add_test(NAME [aerodynamics]2d_Joukowski_quad_4p COMMAND ${MPIEXEC_EXECUTABLE} -n 4 ./aerodynamics
-A,//fem/solution-comparison-file=check/test_2d.quad.txt
inputs/Joukowski.quad.arc)
add_test(NAME [aerodynamics]3d_Joukowski_4p COMMAND ${MPIEXEC_EXECUTABLE} -n 4 ./aerodynamics
-A,//fem/solution-comparison-file=check/test_3d.txt
inputs/Joukowski_3d.arc)
add_test(NAME [aerodynamics]3d_Joukowski_hexa_4p COMMAND ${MPIEXEC_EXECUTABLE} -n 4 ./aerodynamics
-A,//fem/solution-comparison-file=check/test_3d.hexa.txt
inputs/Joukowski_3d.hexa.arc)
add_test(NAME [aerodynamics]3d_Joukowski_bjacobi_4p COMMAND ${MPIEXEC_EXECUTABLE} -n 4 ./aerodynamics
-A,//fem/solution-comparison-file=check/test_3d.txt
-A,//fem/petsc-flags=-ksp_monitor\ -ksp_type\ gmres\ -pc_type\ bjacobi\ -ksp_rtol\ 1e-15
inputs/Joukowski_3d.arc)
endif()

endif()
Expand All @@ -84,18 +100,22 @@ if (FEMUTILS_HAS_SOLVER_BACKEND_HYPRE)
-A,//fem/linear-system/rtol=0)

arcanefem_add_gpu_test(NAME [aerodynamics]2d_Joukowski_bsr_hypre COMMAND aerodynamics ARGS
-A,//fem/solution-comparison-file=check/test_2d.txt
-A,//fem/matrix-format=BSR
${SOLVER_HYPRE_CG_2D}
inputs/Joukowski.arc)
arcanefem_add_gpu_test(NAME [aerodynamics]2d_Joukowski_af_hypre COMMAND aerodynamics ARGS
-A,//fem/solution-comparison-file=check/test_2d.txt
-A,//fem/matrix-format=AF-BSR
${SOLVER_HYPRE_CG_2D}
inputs/Joukowski.arc)
arcanefem_add_gpu_test(NAME [aerodynamics]3d_Joukowski_bsr_hypre COMMAND aerodynamics ARGS
-A,//fem/solution-comparison-file=check/test_3d.txt
-A,//fem/matrix-format=BSR
${SOLVER_HYPRE_CG_3D}
inputs/Joukowski_3d.arc)
arcanefem_add_gpu_test(NAME [aerodynamics]3d_Joukowski_bsr_hypre_gpu COMMAND aerodynamics ARGS
-A,//fem/solution-comparison-file=check/test_3d.txt
-A,//fem/matrix-format=AF-BSR
${SOLVER_HYPRE_CG_3D}
inputs/Joukowski_3d.arc)
Expand Down
6 changes: 1 addition & 5 deletions modules/aerodynamics/Fem.axl
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
</variable>
</variables>
<options>
<simple name="result-file" type="string" optional="true">
<simple name="solution-comparison-file" type="string" optional="true">
<description>File name of a file containing the values of the solution vector to check the results</description>
</simple>
<simple name = "enforce-Dirichlet-method" type = "string" default="Penalty" optional="true">
Expand Down Expand Up @@ -47,10 +47,6 @@
<description>Boolean to enable linear system assembly.</description>
</simple>

<simple name="cross-validation" type="bool" default="true" optional="true">
<description>Boolean to enable cross validation.</description>
</simple>

<simple name="hex-quad-mesh" type="bool" default="false" optional="true">
<description>Boolean to use hexa or quad element mesh.</description>
</simple>
Expand Down
7 changes: 3 additions & 4 deletions modules/aerodynamics/FemModule.cc
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ startInit()
m_matrix_format = options()->matrixFormat();
m_assemble_linear_system = options()->assembleLinearSystem();
m_solve_linear_system = options()->solveLinearSystem();
m_cross_validation = options()->crossValidation();
m_cross_validation = options()->hasSolutionComparisonFile();
m_petsc_flags = options()->petscFlags();
m_hex_quad_mesh = options()->hexQuadMesh();

Expand Down Expand Up @@ -465,10 +465,9 @@ _validateResults()
info() << "u[" << node.uniqueId() << "] = " << m_u[node];
}

String filename = options()->resultFile();
String filename = options()->solutionComparisonFile();

if (!filename.empty())
checkNodeResultFile(traceMng(), filename, m_u, 1.0e-4);
checkNodeResultFile(traceMng(), filename, m_u, 1.0e-4);

elapsedTime = platform::getRealTime() - elapsedTime;
ArcaneFemFunctions::GeneralFunctions::printArcaneFemTime(traceMng(), "result-validation", elapsedTime);
Expand Down
2 changes: 1 addition & 1 deletion modules/aerodynamics/FemModule.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ class FemModule

bool m_assemble_linear_system = true;
bool m_solve_linear_system = true;
bool m_cross_validation = true;
bool m_cross_validation = false;
bool m_hex_quad_mesh = false;

void _doStationarySolve();
Expand Down
1 change: 0 additions & 1 deletion modules/aerodynamics/inputs/Joukowski.arc
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,5 @@
<value>0.0</value>
</dirichlet>
</boundary-conditions>
<result-file>check/test_2d.txt</result-file>
</fem>
</case>
1 change: 0 additions & 1 deletion modules/aerodynamics/inputs/Joukowski.quad.arc
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,5 @@
<value>0.0</value>
</dirichlet>
</boundary-conditions>
<result-file>check/test_2d.quad.txt</result-file>
</fem>
</case>
Loading