Forked from
ogs / ogs
4689 commits behind the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
VolumetricSourceTerm.cpp 1.70 KiB
/**
* \file
* \copyright
* Copyright (c) 2012-2022, OpenGeoSys Community (http://www.opengeosys.org)
* Distributed under a Modified BSD License.
* See accompanying file LICENSE.txt or
* http://www.opengeosys.org/project/license
*
*/
#include "VolumetricSourceTerm.h"
#include "ProcessLib/BoundaryConditionAndSourceTerm/Utils/CreateLocalAssemblers.h"
namespace ProcessLib
{
VolumetricSourceTerm::VolumetricSourceTerm(
unsigned const bulk_mesh_dimension, MeshLib::Mesh const& source_term_mesh,
std::unique_ptr<NumLib::LocalToGlobalIndexMap> source_term_dof_table,
unsigned const integration_order, unsigned const shapefunction_order,
ParameterLib::Parameter<double> const& source_term_parameter)
: SourceTerm(std::move(source_term_dof_table)),
_source_term_parameter(source_term_parameter)
{
BoundaryConditionAndSourceTerm::createLocalAssemblers<
VolumetricSourceTermLocalAssembler>(
bulk_mesh_dimension, source_term_mesh.getElements(),
*_source_term_dof_table, shapefunction_order, _local_assemblers,
NumLib::IntegrationOrder{integration_order},
source_term_mesh.isAxiallySymmetric(), _source_term_parameter);
}
void VolumetricSourceTerm::integrate(const double t, GlobalVector const& /*x*/,
GlobalVector& b,
GlobalMatrix* /*jac*/) const
{
DBUG("Assemble VolumetricSourceTerm.");
// Call global assembler for each local assembly item.
GlobalExecutor::executeMemberOnDereferenced(
&VolumetricSourceTermLocalAssemblerInterface::integrate,
_local_assemblers, *_source_term_dof_table, t, b);
}
} // namespace ProcessLib