feat(hex8): connect Solid CLI and atomic HDF5 output
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#include "fesa/analysis/newton_iteration_log.h"
|
||||
#include "fesa/analysis/nonlinear_static_procedure.h"
|
||||
#include "fesa/analysis/prepared_analysis.h"
|
||||
#include "fesa/analysis/solid_frequency_procedure.h"
|
||||
#include "fesa/app/output_paths.h"
|
||||
#include "fesa/assembly/parallel_for.h"
|
||||
#include "fesa/core/diagnostic.h"
|
||||
@@ -18,6 +19,7 @@
|
||||
#include "fesa/io/hdf5/eigen_hdf5_results_writer.h"
|
||||
#include "fesa/io/hdf5/hdf5_results_writer.h"
|
||||
#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/linear/mkl_pardiso_solver.h"
|
||||
#include "fesa/solvers/linear/mkl_pardiso_tangent_solver.h"
|
||||
@@ -89,6 +91,7 @@ int FesaApplication::Run(const std::vector<std::string>& arguments) {
|
||||
EigenHdf5ResultsWriter eigen_writer;
|
||||
DynamicHdf5ResultsWriter dynamic_writer;
|
||||
ThermalHdf5ResultsWriter thermal_writer;
|
||||
SolidHdf5ResultsWriter solid_writer;
|
||||
NewtonIterationLogWriter log;
|
||||
|
||||
Status status = log.Open(paths.Value().log_path);
|
||||
@@ -110,9 +113,15 @@ int FesaApplication::Run(const std::vector<std::string>& arguments) {
|
||||
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);
|
||||
frequency_executor, log, &dynamic_executor, &thermal_executor,
|
||||
&solid_static, &solid_frequency, &solid_dynamic);
|
||||
if (!outcome.HasValue()) {
|
||||
status = outcome.GetStatus();
|
||||
} else {
|
||||
@@ -124,8 +133,10 @@ int FesaApplication::Run(const std::vector<std::string>& arguments) {
|
||||
status = FinalizePreparedAnalysisResult(
|
||||
paths.Value(), prepared.Value().domain, outcome.Value(),
|
||||
prepared.Value().diagnostics, linear_writer, nonlinear_writer,
|
||||
eigen_writer, &dynamic_writer, &thermal_writer);
|
||||
eigen_writer, &dynamic_writer, &thermal_writer, &solid_writer);
|
||||
if (status.IsOk()) {
|
||||
if (prepared.Value().domain.IsSolid())
|
||||
WriteDiagnostics(prepared.Value().diagnostics);
|
||||
return kSuccessExitCode;
|
||||
}
|
||||
WriteDiagnostics(status.Diagnostics());
|
||||
|
||||
Reference in New Issue
Block a user