Integrate Refactor solver sources and dual MSVC CMake builds

This commit is contained in:
KOKO\Mimi
2026-10-18 02:10:51 +09:00
parent 7ee32e5837
commit 12d51480de
218 changed files with 17842 additions and 9689 deletions
+11 -17
View File
@@ -12,6 +12,9 @@
#include "fesa/analysis/nonlinear_static_procedure.h"
#include "fesa/analysis/prepared_analysis.h"
#include "fesa/analysis/solid_frequency_procedure.h"
#include "fesa/analysis/solid_hht_dynamic_procedure.h"
#include "fesa/analysis/solid_static_procedure.h"
#include "fesa/analysis/transient_heat_procedure.h"
#include "fesa/app/output_paths.h"
#include "fesa/assembly/parallel_for.h"
#include "fesa/core/diagnostic.h"
@@ -21,6 +24,7 @@
#include "fesa/io/hdf5/nonlinear_hdf5_results_writer.h"
#include "fesa/io/hdf5/solid_hdf5_results_writer.h"
#include "fesa/io/hdf5/thermal_hdf5_results_writer.h"
#include "fesa/solvers/eigen/mkl_feast_eigen_solver.h"
#include "fesa/solvers/linear/mkl_pardiso_solver.h"
#include "fesa/solvers/linear/mkl_pardiso_tangent_solver.h"
@@ -84,6 +88,7 @@ int FesaApplication::Run(const std::vector<std::string>& arguments) {
}
TbbParallelFor parallel_for;
const MklFeastEigenSolver eigen_solver;
MklPardisoSolver linear_solver;
MklPardisoTangentSolver tangent_solver;
Hdf5ResultsWriter linear_writer;
@@ -105,23 +110,12 @@ int FesaApplication::Run(const std::vector<std::string>& arguments) {
if (!prepared.HasValue()) {
status = prepared.GetStatus();
} else {
LinearStaticProcedureExecutor linear_executor(parallel_for, linear_solver);
NonlinearStaticProcedureExecutor nonlinear_executor(parallel_for,
tangent_solver);
const LinearFrequencyProcedureExecutor frequency_executor;
const HhtDynamicProcedureExecutor dynamic_executor(
parallel_for, linear_solver, tangent_solver);
const TransientHeatProcedureExecutor thermal_executor(parallel_for,
linear_solver);
const SolidStaticProcedureExecutor solid_static(parallel_for, linear_solver,
tangent_solver);
const SolidFrequencyProcedureExecutor solid_frequency;
const SolidHhtDynamicProcedureExecutor solid_dynamic(
parallel_for, linear_solver, tangent_solver);
Result<PreparedAnalysisOutcome> outcome = ExecutePreparedAnalysis(
prepared.Value().domain, linear_executor, nonlinear_executor,
frequency_executor, log, &dynamic_executor, &thermal_executor,
&solid_static, &solid_frequency, &solid_dynamic);
auto procedure = CreateAnalysisProcedure(
prepared.Value().domain, parallel_for, linear_solver, tangent_solver,
eigen_solver, log);
Result<PreparedAnalysisOutcome> outcome = procedure.HasValue()
? ExecutePreparedAnalysis(prepared.Value().domain, *procedure.Value())
: Result<PreparedAnalysisOutcome>::Failure(procedure.GetStatus());
if (!outcome.HasValue()) {
status = outcome.GetStatus();
} else {