Integrate Refactor solver sources and dual MSVC CMake builds
This commit is contained in:
@@ -2,23 +2,21 @@
|
||||
#define FESA_ANALYSIS_PREPARED_ANALYSIS_H_
|
||||
|
||||
#include <filesystem>
|
||||
#include <variant>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include "fesa/analysis/analysis_state.h"
|
||||
#include "fesa/analysis/dynamic_analysis_state.h"
|
||||
#include "fesa/analysis/eigen_analysis_state.h"
|
||||
#include "fesa/analysis/nonlinear_analysis_state.h"
|
||||
#include "fesa/analysis/solid_frequency_state.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/analysis/analysis_procedure.h"
|
||||
#include "fesa/analysis/prepared_analysis_outcome.h"
|
||||
#include "fesa/core/diagnostic.h"
|
||||
#include "fesa/core/status.h"
|
||||
#include "fesa/model/domain.h"
|
||||
|
||||
namespace fesa {
|
||||
|
||||
class ParallelFor;
|
||||
class LinearSolver;
|
||||
class TangentSolver;
|
||||
class EigenSolver;
|
||||
class LinearStaticProcedureExecutor;
|
||||
class LinearFrequencyProcedureExecutor;
|
||||
class EigenResultsWriter;
|
||||
@@ -31,6 +29,9 @@ class DynamicResultsWriter;
|
||||
class ThermalResultsWriter;
|
||||
class SolidResultsWriter;
|
||||
class SolidFrequencyProcedureExecutor;
|
||||
class SolidStaticProcedureExecutor;
|
||||
class SolidHhtDynamicProcedureExecutor;
|
||||
class TransientHeatProcedureExecutor;
|
||||
struct DerivedOutputPaths;
|
||||
|
||||
/// @brief Owns one parsed and semantically mapped analysis input.
|
||||
@@ -46,30 +47,16 @@ struct PreparedAnalysisInput {
|
||||
Result<PreparedAnalysisInput> PrepareAnalysisInput(
|
||||
const std::filesystem::path& input_path);
|
||||
|
||||
/// @brief Stores a completed linear-static calculation before result writing.
|
||||
struct LinearStaticExecutionResult {
|
||||
AnalysisState state;
|
||||
std::vector<Diagnostic> diagnostics;
|
||||
};
|
||||
/// @brief Creates exactly one selected family with caller-owned adapters.
|
||||
/// @note Domain and adapters remain alive and unmoved throughout execution.
|
||||
Result<std::unique_ptr<AnalysisProcedure>> CreateAnalysisProcedure(
|
||||
const Domain &domain, const ParallelFor ¶llel_for,
|
||||
LinearSolver &linear_solver, TangentSolver &tangent_solver,
|
||||
const EigenSolver &eigen_solver, NewtonIterationLogWriter &log);
|
||||
|
||||
/// @brief Stores a completed nonlinear-static calculation before result
|
||||
/// writing.
|
||||
struct NonlinearStaticExecutionResult {
|
||||
NonlinearAnalysisState state;
|
||||
std::vector<Diagnostic> diagnostics;
|
||||
};
|
||||
|
||||
/// @brief Stores a complete HHT history before atomic result finalization.
|
||||
struct DynamicExecutionResult {
|
||||
DynamicAnalysisState state;
|
||||
std::vector<Diagnostic> diagnostics;
|
||||
};
|
||||
|
||||
using PreparedAnalysisOutcome =
|
||||
std::variant<LinearStaticExecutionResult, NonlinearStaticExecutionResult,
|
||||
EigenAnalysisState, DynamicExecutionResult,
|
||||
ThermalExecutionResult, SolidStaticExecutionResult,
|
||||
SolidFrequencyState, SolidDynamicExecutionResult>;
|
||||
/// @brief Executes a caller-selected procedure through the common interface.
|
||||
Result<PreparedAnalysisOutcome>
|
||||
ExecutePreparedAnalysis(const Domain &domain, AnalysisProcedure &procedure);
|
||||
|
||||
/// @brief Selects the approved procedure from a prepared Domain.
|
||||
/// @pre The executors and log outlive this call.
|
||||
|
||||
Reference in New Issue
Block a user