#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/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 AssembleFullNodalLoad(const AnalysisModel& model, const DofManager& dofs); /// @brief Forms Ff-Kfc*dc in stable free/constrained order. /// @note This operation neither factorizes nor invokes a solver. static Result EffectiveFreeRhs(const Vector& full_load, const SparseMatrix& kfc, const Vector& prescribed_values, const DofManager& dofs); }; } // namespace fesa #endif // FESA_ASSEMBLY_LOAD_ASSEMBLER_H_