#pragma once

#include <cstddef>

#include <fesa/assembly/equation_system.hpp>
#include <fesa/fem/dof_manager.hpp>
#include <fesa/model/domain.hpp>

namespace fesa {

struct AssemblyOptions final {
    std::size_t max_threads;
    std::size_t grain_size;
};

[[nodiscard]] EquationSystem assemble_parallel(
    const Domain& domain,
    const DofManager& dofs,
    AssemblyOptions options);

}  // namespace fesa
