Skip to content

Commit

Permalink
Rename files, clean up
Browse files Browse the repository at this point in the history
  • Loading branch information
sleweke authored and schmoelder committed Sep 20, 2021
1 parent ca12a8b commit 3338c96
Show file tree
Hide file tree
Showing 8 changed files with 591 additions and 93 deletions.
8 changes: 4 additions & 4 deletions src/libcadet/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -171,10 +171,10 @@ if (ENABLE_GRM_2D)
${CMAKE_SOURCE_DIR}/src/libcadet/model/GeneralRateModel2D.cpp
${CMAKE_SOURCE_DIR}/src/libcadet/model/GeneralRateModel2D-LinearSolver.cpp
${CMAKE_SOURCE_DIR}/src/libcadet/model/GeneralRateModel2D-InitialConditions.cpp
${CMAKE_SOURCE_DIR}/src/libcadet/model/parts/TractorConvectionDispersionOperator.cpp
${CMAKE_SOURCE_DIR}/src/libcadet/model/TractorModel.cpp
${CMAKE_SOURCE_DIR}/src/libcadet/model/TractorModel-LinearSolver.cpp
${CMAKE_SOURCE_DIR}/src/libcadet/model/TractorModel-InitialConditions.cpp
${CMAKE_SOURCE_DIR}/src/libcadet/model/parts/MultiChannelConvectionDispersionOperator.cpp
${CMAKE_SOURCE_DIR}/src/libcadet/model/MultiChannelTransportModel.cpp
${CMAKE_SOURCE_DIR}/src/libcadet/model/MultiChannelTransportModel-LinearSolver.cpp
${CMAKE_SOURCE_DIR}/src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
)

if (NOT SUPERLU_FOUND)
Expand Down
6 changes: 5 additions & 1 deletion src/libcadet/ModelBuilderImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ namespace cadet
void registerCSTRModel(std::unordered_map<std::string, std::function<IUnitOperation*(UnitOpIdx)>>& models);
#ifdef ENABLE_GRM_2D
void registerGeneralRateModel2D(std::unordered_map<std::string, std::function<IUnitOperation*(UnitOpIdx)>>& models);
void registerTractorModel(std::unordered_map<std::string, std::function<IUnitOperation*(UnitOpIdx)>>& models);
void registerMultiChannelTransportModel(std::unordered_map<std::string, std::function<IUnitOperation*(UnitOpIdx)>>& models);
#endif

namespace inlet
Expand All @@ -63,12 +63,16 @@ namespace cadet

#ifdef ENABLE_GRM_2D
model::registerGeneralRateModel2D(_modelCreators);
<<<<<<< HEAD
<<<<<<< HEAD
model::registerTractorModel(_modelCreators);
#endif
=======
>>>>>>> include Tractor in ENABLE_GRM_2D config branch
model::registerTractorModel(_modelCreators);
=======
model::registerMultiChannelTransportModel(_modelCreators);
>>>>>>> Rename files, clean up
#endif

// Register all available inlet profiles
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
// is available at http://www.gnu.org/licenses/gpl.html
// =============================================================================

<<<<<<< HEAD:src/libcadet/model/TractorModel-InitialConditions.cpp
<<<<<<< HEAD
<<<<<<< HEAD
#include "model/TractorModel.hpp"
Expand All @@ -23,29 +24,26 @@
#include "linalg/DenseMatrix.hpp"
#include "linalg/BandMatrix.hpp"
#include "linalg/Subset.hpp"
=======
#include "model/MultiChannelTransportModel.hpp"
>>>>>>> Rename files, clean up:src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
#include "ParamReaderHelper.hpp"
#include "AdUtils.hpp"
#include "model/parts/BindingCellKernel.hpp"
#include "SimulationTypes.hpp"
#include "SensParamUtil.hpp"

#include <algorithm>
#include <functional>

#include "LoggingUtils.hpp"
#include "Logging.hpp"

#include "ParallelSupport.hpp"
#ifdef CADET_PARALLELIZE
#include <tbb/parallel_for.h>
#endif

namespace cadet
{

namespace model
{

<<<<<<< HEAD:src/libcadet/model/TractorModel-InitialConditions.cpp
<<<<<<< HEAD
<<<<<<< HEAD
int TractorModel::multiplexInitialConditions(const cadet::ParameterId& pId, unsigned int adDirection, double adValue)
Expand All @@ -55,6 +53,9 @@ int GeneralRateModel2D::multiplexInitialConditions(const cadet::ParameterId& pId
=======
int TractorModel::multiplexInitialConditions(const cadet::ParameterId& pId, unsigned int adDirection, double adValue)
>>>>>>> Rename TractorModel class
=======
int MultiChannelTransportModel::multiplexInitialConditions(const cadet::ParameterId& pId, unsigned int adDirection, double adValue)
>>>>>>> Rename files, clean up:src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
{
if (pId.name == hashString("INIT_C") && (pId.section == SectionIndep) && (pId.boundState == BoundStateIndep) && (pId.particleType == ParTypeIndep) && (pId.component != CompIndep))
{
Expand All @@ -81,6 +82,7 @@ int TractorModel::multiplexInitialConditions(const cadet::ParameterId& pId, unsi
return 0;
}

<<<<<<< HEAD:src/libcadet/model/TractorModel-InitialConditions.cpp
<<<<<<< HEAD
<<<<<<< HEAD
int TractorModel::multiplexInitialConditions(const cadet::ParameterId& pId, double val, bool checkSens)
Expand All @@ -90,6 +92,9 @@ int GeneralRateModel2D::multiplexInitialConditions(const cadet::ParameterId& pId
=======
int TractorModel::multiplexInitialConditions(const cadet::ParameterId& pId, double val, bool checkSens)
>>>>>>> Rename TractorModel class
=======
int MultiChannelTransportModel::multiplexInitialConditions(const cadet::ParameterId& pId, double val, bool checkSens)
>>>>>>> Rename files, clean up:src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
{
if (pId.name == hashString("INIT_C") && (pId.section == SectionIndep) && (pId.boundState == BoundStateIndep) && (pId.particleType == ParTypeIndep) && (pId.component != CompIndep))
{
Expand Down Expand Up @@ -118,6 +123,7 @@ int TractorModel::multiplexInitialConditions(const cadet::ParameterId& pId, doub
return 0;
}

<<<<<<< HEAD:src/libcadet/model/TractorModel-InitialConditions.cpp
<<<<<<< HEAD
<<<<<<< HEAD
void TractorModel::applyInitialCondition(const SimulationState& simState) const
Expand All @@ -127,6 +133,9 @@ void GeneralRateModel2D::applyInitialCondition(const SimulationState& simState)
=======
void TractorModel::applyInitialCondition(const SimulationState& simState) const
>>>>>>> Rename TractorModel class
=======
void MultiChannelTransportModel::applyInitialCondition(const SimulationState& simState) const
>>>>>>> Rename files, clean up:src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
{
Indexer idxr(_disc);

Expand Down Expand Up @@ -162,6 +171,7 @@ void TractorModel::applyInitialCondition(const SimulationState& simState) const
}
}

<<<<<<< HEAD:src/libcadet/model/TractorModel-InitialConditions.cpp
<<<<<<< HEAD
<<<<<<< HEAD
void TractorModel::readInitialCondition(IParameterProvider& paramProvider)
Expand All @@ -171,6 +181,9 @@ void GeneralRateModel2D::readInitialCondition(IParameterProvider& paramProvider)
=======
void TractorModel::readInitialCondition(IParameterProvider& paramProvider)
>>>>>>> Rename TractorModel class
=======
void MultiChannelTransportModel::readInitialCondition(IParameterProvider& paramProvider)
>>>>>>> Rename files, clean up:src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
{
_initState.clear();
_initStateDot.clear();
Expand Down Expand Up @@ -251,6 +264,7 @@ void TractorModel::readInitialCondition(IParameterProvider& paramProvider)
* @param [in] errorTol Error tolerance for algebraic equations
* @todo Decrease amount of allocated memory by partially using temporary vectors (state and Schur complement)
*/
<<<<<<< HEAD:src/libcadet/model/TractorModel-InitialConditions.cpp
<<<<<<< HEAD
<<<<<<< HEAD
void TractorModel::consistentInitialState(const SimulationTime& simTime, double* const vecStateY, const AdJacobianParams& adJac, double errorTol, util::ThreadLocalStorage& threadLocalMem)
Expand All @@ -260,6 +274,9 @@ void GeneralRateModel2D::consistentInitialState(const SimulationTime& simTime, d
=======
void TractorModel::consistentInitialState(const SimulationTime& simTime, double* const vecStateY, const AdJacobianParams& adJac, double errorTol, util::ThreadLocalStorage& threadLocalMem)
>>>>>>> Rename TractorModel class
=======
void MultiChannelTransportModel::consistentInitialState(const SimulationTime& simTime, double* const vecStateY, const AdJacobianParams& adJac, double errorTol, util::ThreadLocalStorage& threadLocalMem)
>>>>>>> Rename files, clean up:src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
{
BENCH_SCOPE(_timerConsistentInit);
}
Expand Down Expand Up @@ -311,6 +328,7 @@ void TractorModel::consistentInitialState(const SimulationTime& simTime, double*
* @param [in] vecStateY Consistently initialized state vector
* @param [in,out] vecStateYdot On entry, residual without taking time derivatives into account. On exit, consistent state time derivatives.
*/
<<<<<<< HEAD:src/libcadet/model/TractorModel-InitialConditions.cpp
<<<<<<< HEAD
<<<<<<< HEAD
void TractorModel::consistentInitialTimeDerivative(const SimulationTime& simTime, double const* vecStateY, double* const vecStateYdot, util::ThreadLocalStorage& threadLocalMem)
Expand All @@ -320,6 +338,9 @@ void GeneralRateModel2D::consistentInitialTimeDerivative(const SimulationTime& s
=======
void TractorModel::consistentInitialTimeDerivative(const SimulationTime& simTime, double const* vecStateY, double* const vecStateYdot, util::ThreadLocalStorage& threadLocalMem)
>>>>>>> Rename TractorModel class
=======
void MultiChannelTransportModel::consistentInitialTimeDerivative(const SimulationTime& simTime, double const* vecStateY, double* const vecStateYdot, util::ThreadLocalStorage& threadLocalMem)
>>>>>>> Rename files, clean up:src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
{
BENCH_SCOPE(_timerConsistentInit);

Expand Down Expand Up @@ -379,6 +400,7 @@ void TractorModel::consistentInitialTimeDerivative(const SimulationTime& simTime
* @param [in,out] adJac Jacobian information for AD (AD vectors for residual and state, direction offset)
* @param [in] errorTol Error tolerance for algebraic equations
*/
<<<<<<< HEAD:src/libcadet/model/TractorModel-InitialConditions.cpp
<<<<<<< HEAD
<<<<<<< HEAD
void TractorModel::leanConsistentInitialState(const SimulationTime& simTime, double* const vecStateY, const AdJacobianParams& adJac, double errorTol, util::ThreadLocalStorage& threadLocalMem)
Expand All @@ -388,6 +410,9 @@ void GeneralRateModel2D::leanConsistentInitialState(const SimulationTime& simTim
=======
void TractorModel::leanConsistentInitialState(const SimulationTime& simTime, double* const vecStateY, const AdJacobianParams& adJac, double errorTol, util::ThreadLocalStorage& threadLocalMem)
>>>>>>> Rename TractorModel class
=======
void MultiChannelTransportModel::leanConsistentInitialState(const SimulationTime& simTime, double* const vecStateY, const AdJacobianParams& adJac, double errorTol, util::ThreadLocalStorage& threadLocalMem)
>>>>>>> Rename files, clean up:src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
{
consistentInitialState(simTime, vecStateY, adJac, errorTol, threadLocalMem);
}
Expand Down Expand Up @@ -434,6 +459,7 @@ void TractorModel::leanConsistentInitialState(const SimulationTime& simTime, dou
* @param [in,out] vecStateYdot On entry, inconsistent state time derivatives. On exit, partially consistent state time derivatives.
* @param [in] res On entry, residual without taking time derivatives into account. The data is overwritten during execution of the function.
*/
<<<<<<< HEAD:src/libcadet/model/TractorModel-InitialConditions.cpp
<<<<<<< HEAD
<<<<<<< HEAD
void TractorModel::leanConsistentInitialTimeDerivative(double t, double const* const vecStateY, double* const vecStateYdot, double* const res, util::ThreadLocalStorage& threadLocalMem)
Expand All @@ -443,6 +469,9 @@ void GeneralRateModel2D::leanConsistentInitialTimeDerivative(double t, double co
=======
void TractorModel::leanConsistentInitialTimeDerivative(double t, double const* const vecStateY, double* const vecStateYdot, double* const res, util::ThreadLocalStorage& threadLocalMem)
>>>>>>> Rename TractorModel class
=======
void MultiChannelTransportModel::leanConsistentInitialTimeDerivative(double t, double const* const vecStateY, double* const vecStateYdot, double* const res, util::ThreadLocalStorage& threadLocalMem)
>>>>>>> Rename files, clean up:src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
{
BENCH_SCOPE(_timerConsistentInit);

Expand All @@ -467,6 +496,7 @@ void TractorModel::leanConsistentInitialTimeDerivative(double t, double const* c
yDotSlice[i] = -resSlice[i];
}

<<<<<<< HEAD:src/libcadet/model/TractorModel-InitialConditions.cpp
<<<<<<< HEAD
<<<<<<< HEAD
void TractorModel::initializeSensitivityStates(const std::vector<double*>& vecSensY) const
Expand All @@ -476,6 +506,9 @@ void GeneralRateModel2D::initializeSensitivityStates(const std::vector<double*>&
=======
void TractorModel::initializeSensitivityStates(const std::vector<double*>& vecSensY) const
>>>>>>> Rename TractorModel class
=======
void MultiChannelTransportModel::initializeSensitivityStates(const std::vector<double*>& vecSensY) const
>>>>>>> Rename files, clean up:src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
{
Indexer idxr(_disc);
for (std::size_t param = 0; param < vecSensY.size(); ++param)
Expand Down Expand Up @@ -549,6 +582,7 @@ void TractorModel::initializeSensitivityStates(const std::vector<double*>& vecSe
* @param [in] adRes Pointer to residual vector of AD datatypes with parameter sensitivities
* @todo Decrease amount of allocated memory by partially using temporary vectors (state and Schur complement)
*/
<<<<<<< HEAD:src/libcadet/model/TractorModel-InitialConditions.cpp
<<<<<<< HEAD
<<<<<<< HEAD
void TractorModel::consistentInitialSensitivity(const SimulationTime& simTime, const ConstSimulationState& simState,
Expand All @@ -558,6 +592,9 @@ void GeneralRateModel2D::consistentInitialSensitivity(const SimulationTime& simT
=======
void TractorModel::consistentInitialSensitivity(const SimulationTime& simTime, const ConstSimulationState& simState,
>>>>>>> Rename TractorModel class
=======
void MultiChannelTransportModel::consistentInitialSensitivity(const SimulationTime& simTime, const ConstSimulationState& simState,
>>>>>>> Rename files, clean up:src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
std::vector<double*>& vecSensY, std::vector<double*>& vecSensYdot, active const* const adRes, util::ThreadLocalStorage& threadLocalMem)
{
BENCH_SCOPE(_timerConsistentInit);
Expand Down Expand Up @@ -635,6 +672,7 @@ void TractorModel::consistentInitialSensitivity(const SimulationTime& simTime, c
* @param [in] adRes Pointer to residual vector of AD datatypes with parameter sensitivities
* @todo Decrease amount of allocated memory by partially using temporary vectors (state and Schur complement)
*/
<<<<<<< HEAD:src/libcadet/model/TractorModel-InitialConditions.cpp
<<<<<<< HEAD
<<<<<<< HEAD
void TractorModel::leanConsistentInitialSensitivity(const SimulationTime& simTime, const ConstSimulationState& simState,
Expand All @@ -644,6 +682,9 @@ void GeneralRateModel2D::leanConsistentInitialSensitivity(const SimulationTime&
=======
void TractorModel::leanConsistentInitialSensitivity(const SimulationTime& simTime, const ConstSimulationState& simState,
>>>>>>> Rename TractorModel class
=======
void MultiChannelTransportModel::leanConsistentInitialSensitivity(const SimulationTime& simTime, const ConstSimulationState& simState,
>>>>>>> Rename files, clean up:src/libcadet/model/MultiChannelTransportModel-InitialConditions.cpp
std::vector<double*>& vecSensY, std::vector<double*>& vecSensYdot, active const* const adRes, util::ThreadLocalStorage& threadLocalMem)
{
BENCH_SCOPE(_timerConsistentInit);
Expand Down
83 changes: 83 additions & 0 deletions src/libcadet/model/MultiChannelTransportModel-LinearSolver.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
// =============================================================================
// CADET
//
// Copyright © 2008-2021: The CADET Authors
// Please see the AUTHORS and CONTRIBUTORS file.
//
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the GNU Public License v3.0 (or, at
// your option, any later version) which accompanies this distribution, and
// is available at http://www.gnu.org/licenses/gpl.html
// =============================================================================

#include "model/MultiChannelTransportModel.hpp"
#include "AdUtils.hpp"

#include "LoggingUtils.hpp"
#include "Logging.hpp"

namespace cadet
{

namespace model
{

/**
* @brief Computes the solution of the linear system involving the system Jacobian
* @details The system \f[ \left( \frac{\partial F}{\partial y} + \alpha \frac{\partial F}{\partial \dot{y}} \right) x = b \f]
* has to be solved. The right hand side \f$ b \f$ is given by @p rhs, the Jacobians are evaluated at the
* point \f$(y, \dot{y})\f$ given by @p y and @p yDot. The residual @p res at this point, \f$ F(t, y, \dot{y}) \f$,
* may help with this. Error weights (see IDAS guide) are given in @p weight. The solution is returned in @p rhs.
*
* @param [in] t Current time point
* @param [in] alpha Value of \f$ \alpha \f$ (arises from BDF time discretization)
* @param [in] outerTol Error tolerance for the solution of the linear system from outer Newton iteration
* @param [in,out] rhs On entry the right hand side of the linear equation system, on exit the solution
* @param [in] weight Vector with error weights
* @param [in] simState State of the simulation (state vector and its time derivatives) at which the Jacobian is evaluated
* @return @c 0 on success, @c -1 on non-recoverable error, and @c +1 on recoverable error
*/
int MultiChannelTransportModel::linearSolve(double t, double alpha, double outerTol, double* const rhs, double const* const weight,
const ConstSimulationState& simState)
{
BENCH_SCOPE(_timerLinearSolve);

Indexer idxr(_disc);

// ==== Step 1: Factorize diagonal Jacobian blocks

// Factorize partial Jacobians only if required

if (_factorizeJacobian)
{
// Assemble and factorize discretized bulk Jacobian
const bool result = _convDispOp.assembleAndFactorizeDiscretizedJacobian(alpha);
if (cadet_unlikely(!result))
{
LOG(Error) << "Factorize() failed for bulk block";
}

// Do not factorize again at next call without changed Jacobians
_factorizeJacobian = false;
} // if (_factorizeJacobian)

// ====== Step 1.5: Solve J c_uo = b_uo - A * c_in = b_uo - A*b_in

_jacInlet.multiplySubtract(rhs, rhs + idxr.offsetC());

// ==== Step 2: Solve diagonal Jacobian blocks J_i to get y_i = J_i^{-1} b_i
// The result is stored in rhs (in-place solution)

const bool result = _convDispOp.solveDiscretizedJacobian(rhs + idxr.offsetC(), weight + idxr.offsetC(), nullptr, outerTol);
if (cadet_unlikely(!result))
{
LOG(Error) << "Solve() failed for bulk block";
}

// The full solution is now stored in rhs
return 0;
}

} // namespace model

} // namespace cadet
Loading

0 comments on commit 3338c96

Please sign in to comment.