39 lines
1.6 KiB
C++
39 lines
1.6 KiB
C++
#ifndef FESA_ASSEMBLY_LOAD_ASSEMBLER_H_
|
|
#define FESA_ASSEMBLY_LOAD_ASSEMBLER_H_
|
|
|
|
#include "fesa/analysis/analysis_model.h"
|
|
#include "fesa/fem/dof_manager.h"
|
|
#include "fesa/loads/load.h"
|
|
#include "fesa/math/sparse_matrix.h"
|
|
#include "fesa/math/vector.h"
|
|
|
|
namespace fesa {
|
|
|
|
/// @brief Assembles semantic nodal loads in stable source order.
|
|
class LoadAssembler {
|
|
public:
|
|
/// @brief Accumulates all active CLOAD rows in full-DOF space.
|
|
/// @return A finite full load vector or a structured model failure.
|
|
static Result<Vector> AssembleFullNodalLoad(const AnalysisModel& model,
|
|
const DofManager& dofs);
|
|
|
|
/// @brief Accumulates explicitly supplied loads in their view order.
|
|
/// @param loads Non-owning loads whose contribution source orders must match
|
|
/// their view positions.
|
|
/// @return A candidate committed only after all contributions validate.
|
|
static Result<Vector> AssembleFullNodalLoad(const AnalysisModel& model,
|
|
const DofManager& dofs,
|
|
const LoadView& loads);
|
|
|
|
/// @brief Forms Ff-Kfc*dc in stable free/constrained order.
|
|
/// @note This operation neither factorizes nor invokes a solver.
|
|
static Result<Vector> EffectiveFreeRhs(const Vector& full_load,
|
|
const SparseMatrix& kfc,
|
|
const Vector& prescribed_values,
|
|
const DofManager& dofs);
|
|
};
|
|
|
|
} // namespace fesa
|
|
|
|
#endif // FESA_ASSEMBLY_LOAD_ASSEMBLER_H_
|