Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
f2a78b7
Merge pull request #1 from KATRIN-Experiment/master
nsoblath Mar 11, 2016
ef1e19b
Cherry pick: Minor changes to build system to allow building as a sub…
Mar 10, 2016
fea57ea
CMake policy fixes
Mar 11, 2016
30dcbb1
A few more cmake changes
Mar 11, 2016
6a1f644
Merge branch 'feature/kassfixes' into develop
Mar 11, 2016
7b9d0a1
Allow the KVariableProcessor variable map to be set after construction
Mar 14, 2016
4db786c
Added KSEventModifier, and KSRootEventModifier, and implement use by …
Mar 14, 2016
b0b4fd6
Added KSRootEventModifierBuilder
Mar 28, 2016
aa86f4c
Added temporary pthreads to KSRoot.cxx for purpose of generating sign…
pslocum Apr 5, 2016
a078fe6
Added pre and post event conditions for triggering events in Kassiope…
pslocum Apr 25, 2016
99dbab5
Moved post-KSStep code for Locust_mc out of KSRoot.cxx and into Cyclo…
pslocum May 11, 2016
1b0ff23
Reset digitizer t_old in KSRoot::ReceivedEventStartCondition at the s…
pslocum May 12, 2016
22ca12f
Tuned thread signals for faster Locust-Kassiopeia.
pslocum May 19, 2016
606e990
Tweaked timing of thread signals to interface with Locust.
pslocum Jun 20, 2016
dcf4956
Commented out step_msg updates in KSRoot.cxx. Moved print statement …
Jul 19, 2016
821caba
Adjusted thread signals to accomodate isotropic Kr spectrum with low …
Oct 7, 2016
0b27181
Removed unnecessary fKassReadycondition.notify_one() from KSRoot::Wak…
Oct 8, 2016
7e0a0ca
Tuned final thread stop signal in KSRoot.cxx
Oct 13, 2016
9e0c131
Removed initialization and finalization of derivative calculations in…
pslocum Dec 27, 2016
c08dbdb
Routine update
Jan 5, 2017
38533ef
Merge pull request #4 from KATRIN-Experiment/master
pslocum Jun 16, 2017
c08c2f3
Merge branch 'master' into feature/eventmod
pslocum Jun 16, 2017
ae0e94e
Merge pull request #5 from project8/feature/eventmod
pslocum Jun 16, 2017
3bc2725
Revert "Feature/eventmod"
pslocum Jun 16, 2017
6660bd5
Merge pull request #6 from project8/revert-5-feature/eventmod
pslocum Jun 16, 2017
f327337
Merge pull request #8 from KATRIN-Experiment/master
pslocum Oct 21, 2018
723d37a
Merge pull request #11 from KATRIN-Experiment/master
pslocum Feb 21, 2019
94544df
Check for Boost library as variable or imported target
nsoblath May 1, 2020
92014ed
Merge pull request #12 from project8/feature/boostlibfix
pslocum May 2, 2020
bc26686
Merge pull request #13 from KATRIN-Experiment/master
pslocum May 4, 2020
588ef5f
Merge pull request #14 from KATRIN-Experiment/master
pslocum May 8, 2020
91acc4c
Merge pull request #15 from KATRIN-Experiment/master
nsoblath Jun 23, 2020
c13e0f0
Merge pull request #16 from KATRIN-Experiment/master
pslocum Jul 17, 2020
27f13f1
Merge pull request #17 from KATRIN-Experiment/master
pslocum Jul 22, 2020
c09f4d6
Merge pull request #18 from KATRIN-Experiment/master
pslocum Jul 25, 2020
c809f34
Merge pull request #19 from KATRIN-Experiment/master
pslocum Mar 17, 2021
0354497
Commented out find_package() lines for Boost and Root in CMakeLists.txt
pslocum Apr 13, 2021
ab11297
Update CMakeLists.txt to v3.8.0 for purpose of merge test.
pslocum Aug 31, 2021
4792469
Merge pull request #20 from KATRIN-Experiment/main
pslocum Aug 31, 2021
1829313
Comment out find_package ROOT. Now it builds on Ubuntu laptop.
pslocum Sep 14, 2021
8f70bde
Reinstate find_package(ROOT). Standalone Kass configures on Ubuntu l…
pslocum Sep 17, 2021
e1ce604
Uncomment more lines for finding ROOT > v6.16 .
pslocum Sep 20, 2021
4b81b7c
Comment out Applications/Validation subdirectory to allow build with …
pslocum Oct 1, 2021
d83902a
Uncomment add_submodule(Applications/Validation) which relies on vtk.…
pslocum Oct 18, 2021
81e0fac
Merge pull request #21 from project8/feature/v3.8.0
pslocum Dec 20, 2022
1ffb134
Merge pull request #22 from KATRIN-Experiment/main
pslocum Dec 20, 2022
11b9f39
Merge branch 'KATRIN-Experiment:main' into master
pslocum Jul 31, 2023
1c0bdf3
Merge branch 'KATRIN-Experiment:main' into master
pslocum Sep 21, 2023
be68071
Merge pull request #25 from KATRIN-Experiment/main
pslocum Dec 19, 2023
73c6159
Merge pull request #27 from KATRIN-Experiment/main
pslocum Apr 24, 2024
bf39b45
Merge branch 'KATRIN-Experiment:main' into master
pslocum Oct 1, 2024
57986b2
Merge branch 'KATRIN-Experiment:main' into master
pslocum Oct 15, 2024
d6b61e2
Merge branch 'KATRIN-Experiment:main' into master
pslocum Oct 16, 2024
a57a290
Merge branch 'KATRIN-Experiment:main' into master
pslocum Mar 21, 2025
d0d9f15
Add new charge density solver for magnetic fftm.
pslocum Apr 2, 2025
3f00f08
Add bindings for the new magnetic fftm class.
pslocum Apr 2, 2025
608c9b1
Partially update linking to the new fftm library.
pslocum Apr 2, 2025
1e3723b
Add new class KCachedMagneticChargeDensitySolver, and its bindings.
pslocum Apr 18, 2025
9f68d77
Finish updates to instantiation and linking.
pslocum Apr 18, 2025
93252fe
Introduce new class KMagneticFFTMFieldSolver for compatibility with E…
pslocum May 8, 2025
9b584e7
Add new classes KMagnetostaticBoundaryField and KGMagnetostaticBounda…
pslocum May 8, 2025
fa1ad91
Revert addition of new classes KMagnetostaticBoundaryField and KGMagn…
pslocum May 11, 2025
018df1e
Revert addition of KMagneticFFTMFieldSolver.
pslocum May 11, 2025
1606afc
Make bindings for new charge density solvers compatible with FFTM E-f…
pslocum May 12, 2025
8fd39f8
Make new charge density solvers compatible with existing E-field FFTM…
pslocum May 12, 2025
4218edc
Combine Electric and Magnetic ChargeDensitySolvers into one library l…
pslocum Jun 7, 2025
2ea7c62
Add small compiled test.
pslocum Jun 7, 2025
0787671
Make the magnetic charge density solvers inherit from the KChargeDens…
pslocum Jun 7, 2025
a4d08bd
Merge branch 'KATRIN-Experiment:main' into master
pslocum Sep 30, 2025
9359dd9
Merge branch 'KATRIN-Experiment:main' into master
pslocum Jun 12, 2026
67aac04
Merge remote-tracking branch 'origin/master' into feature/fftmB
pslocum Jun 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion KEMField/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ add_subdirectory(${SOURCE}/Plugins/Root)
add_subdirectory(${SOURCE}/Plugins/VTK)
add_subdirectory(${SOURCE}/FastMultipole/Utility)
add_subdirectory(${SOURCE}/Interface/BoundaryIntegrators/Electric)
add_subdirectory(${SOURCE}/Interface/ChargeDensitySolvers/Electric)
add_subdirectory(${SOURCE}/Interface/ChargeDensitySolvers)
add_subdirectory(${SOURCE}/Interface/FieldSolvers/Electric)
add_subdirectory(${SOURCE}/Interface/FieldSolvers/Magnetic)
add_subdirectory(${SOURCE}/Interface/Fields/Magnetic)
Expand Down
4 changes: 4 additions & 0 deletions KEMField/Source/Bindings/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ set (KEMFIELD_BINDINGS_HEADERFILES
${CMAKE_CURRENT_SOURCE_DIR}/ChargeDensitySolvers/Electric/include/KKrylovChargeDensitySolverOldBuilder.hh
${CMAKE_CURRENT_SOURCE_DIR}/ChargeDensitySolvers/Electric/include/KKrylovPreconditionerGeneratorBuilder.hh
${CMAKE_CURRENT_SOURCE_DIR}/ChargeDensitySolvers/Electric/include/KKrylovSolverConfigurationReader.hh
${CMAKE_CURRENT_SOURCE_DIR}/ChargeDensitySolvers/Magnetic/include/KCachedMagneticChargeDensitySolverBuilder.hh
${CMAKE_CURRENT_SOURCE_DIR}/ChargeDensitySolvers/Magnetic/include/KBiotSavartChargeDensitySolverBuilder.hh
${CMAKE_CURRENT_SOURCE_DIR}/ChargeDensitySolvers/Electric/include/KFMElectrostaticParametersBuilder.hh
${CMAKE_CURRENT_SOURCE_DIR}/FieldSolvers/Electric/include/KIntegratingElectrostaticFieldSolverBuilder.hh
${CMAKE_CURRENT_SOURCE_DIR}/FieldSolvers/Electric/include/KElectricZHFieldSolverBuilder.hh
Expand Down Expand Up @@ -80,6 +82,8 @@ set (KEMFIELD_BINDINGS_SOURCEFILES
${CMAKE_CURRENT_SOURCE_DIR}/ChargeDensitySolvers/Electric/src/KKrylovChargeDensitySolverOldBuilder.cc
${CMAKE_CURRENT_SOURCE_DIR}/ChargeDensitySolvers/Electric/src/KKrylovPreconditionerGeneratorBuilder.cc
${CMAKE_CURRENT_SOURCE_DIR}/ChargeDensitySolvers/Electric/src/KFMElectrostaticParametersBuilder.cc
${CMAKE_CURRENT_SOURCE_DIR}/ChargeDensitySolvers/Magnetic/src/KCachedMagneticChargeDensitySolverBuilder.cc
${CMAKE_CURRENT_SOURCE_DIR}/ChargeDensitySolvers/Magnetic/src/KBiotSavartChargeDensitySolverBuilder.cc
${CMAKE_CURRENT_SOURCE_DIR}/FieldSolvers/Electric/src/KIntegratingElectrostaticFieldSolverBuilder.cc
${CMAKE_CURRENT_SOURCE_DIR}/FieldSolvers/Electric/src/KElectricZHFieldSolverBuilder.cc
${CMAKE_CURRENT_SOURCE_DIR}/FieldSolvers/Electric/src/KElectricFastMultipoleFieldSolverBuilder.cc
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
* KBiotSavartChargeDensitySolverBuilder.hh
*
* Created on: 2 Apr 2025
* Author: pslocum
*/

#ifndef KBIOTSAVARTCHARGEDENSITYSOLVERBUILDER_HH_
#define KBIOTSAVARTCHARGEDENSITYSOLVERBUILDER_HH_

#include "KComplexElement.hh"
#include "KEMBindingsMessage.hh"
#include "KEMStringUtils.hh"
#include "KBiotSavartChargeDensitySolver.hh"


namespace katrin
{

typedef KComplexElement<KEMField::KBiotSavartChargeDensitySolver> KBiotSavartChargeDensitySolverBuilder;

template<> inline bool KBiotSavartChargeDensitySolverBuilder::AddAttribute(KContainer* aContainer)
{
if (aContainer->Empty())
{
KEMField::kem_cout(eError) << "ERROR: Biot Savart solver container is empty (did you forget to set up the geometry?)" << eom;
}
return true;
}

template<> inline bool KBiotSavartChargeDensitySolverBuilder::AddElement(KContainer* anElement)
{
if (anElement->Empty())
{
KEMField::kem_cout(eError) << "ERROR: Element is empty.)" << eom;
}
return true;
}

template<> inline bool KBiotSavartChargeDensitySolverBuilder::End()
{
return true;
}


} /* namespace katrin */

#endif /* KBIOTSAVARTCHARGEDENSITYSOLVERBUILDER_HH_ */
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* KCachedMagneticChargeDensitySolverBuilder.hh
*
* Created on: 18 Apr 2025
* Author: pslocum
*/

#ifndef KCACHEDMAGNETICCHARGEDENSITYSOLVERBUILDER_HH_
#define KCACHEDMAGNETICCHARGEDENSITYSOLVERBUILDER_HH_

#include "KCachedMagneticChargeDensitySolver.hh"
#include "KComplexElement.hh"

namespace katrin
{

typedef KComplexElement<KEMField::KCachedMagneticChargeDensitySolver> KCachedMagneticChargeDensitySolverBuilder;

template<> inline bool KCachedMagneticChargeDensitySolverBuilder::AddAttribute(KContainer* aContainer)
{
if (aContainer->GetName() == "name") {
std::string name;
aContainer->CopyTo(name);
fObject->SetName(name);
return true;
}
if (aContainer->GetName() == "hash") {
std::string hash;
aContainer->CopyTo(hash);
fObject->SetHash(hash);
return true;
}
return false;
}

} // namespace katrin

#endif /* KCACHEDMAGNETICCHARGEDENSITYSOLVERBUILDER_HH_ */
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* KBiotSavartChargeDensitySolverBuilder.cc
*
* Created on: 2 Apr 2025
* Author: pslocum
*/

#include "KBiotSavartChargeDensitySolverBuilder.hh"

#include "KElectrostaticBoundaryFieldBuilder.hh"

using namespace KEMField;

namespace katrin
{

template<> KBiotSavartChargeDensitySolverBuilder::~KComplexElement() = default;


STATICINT sKBiotSavartChargeDensitySolverStructure =
KBiotSavartChargeDensitySolverBuilder::Attribute<std::string>("solver_name");

STATICINT sKElectrostaticBoundaryField =
KElectrostaticBoundaryFieldBuilder::ComplexElement<KBiotSavartChargeDensitySolver>("biotsavart_bem_solver_new") +
KElectrostaticBoundaryFieldBuilder::ComplexElement<KBiotSavartChargeDensitySolver>("biotsavart_charge_density_solver");


} /* namespace katrin */
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* KCachedMagneticChargeDensitySolverBuilder.cc
*
* Created on: 18 Apr 2025
* Author: pslocum
*/

#ifndef SRC_KCACHEDMAGNETICCHARGEDENSITYSOLVERBUILDER_CC_
#define SRC_KCACHEDMAGNETICCHARGEDENSITYSOLVERBUILDER_CC_

#include "KCachedMagneticChargeDensitySolverBuilder.hh"

#include "KElectrostaticBoundaryFieldBuilder.hh"

using namespace KEMField;

namespace katrin
{

template<> KCachedMagneticChargeDensitySolverBuilder::~KComplexElement() = default;

STATICINT sKCachedMagneticChargeDensitySolverStructure = KCachedMagneticChargeDensitySolverBuilder::Attribute<std::string>("name") +
KCachedMagneticChargeDensitySolverBuilder::Attribute<std::string>("hash");

} // namespace katrin


#endif /* SRC_KCACHEDCHARGEDENSITYSOLVERBUILDER_CC_ */
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# CMakeLists for KEMField/Interface/ChargeDensitySolvers/Electric
# CMakeLists for KEMField/Interface/ChargeDensitySolvers
# Author: W. Gosda

# header files
Expand All @@ -15,14 +15,28 @@ set( CHARGEDENSITYSOLVER_ELECTRIC_HEADER_BASENAMES
KRobinHoodChargeDensitySolver.hh
)

set( CHARGEDENSITYSOLVER_MAGNETIC_HEADER_BASENAMES
KCachedMagneticChargeDensitySolver.hh
KBiotSavartChargeDensitySolver.hh
)

set( CHARGEDENSITYSOLVER_ELECTRIC_HEADER_PATH
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/Electric/include
)

set( CHARGEDENSITYSOLVER_MAGNETIC_HEADER_PATH
${CMAKE_CURRENT_SOURCE_DIR}/Magnetic/include
)

foreach( BASENAME ${CHARGEDENSITYSOLVER_ELECTRIC_HEADER_BASENAMES} )
list( APPEND CHARGEDENSITYSOLVER_ELECTRIC_HEADER_FILENAMES ${CHARGEDENSITYSOLVER_ELECTRIC_HEADER_PATH}/${BASENAME} )
endforeach( BASENAME )

foreach( BASENAME ${CHARGEDENSITYSOLVER_MAGNETIC_HEADER_BASENAMES} )
list( APPEND CHARGEDENSITYSOLVER_MAGNETIC_HEADER_FILENAMES ${CHARGEDENSITYSOLVER_MAGNETIC_HEADER_PATH}/${BASENAME} )
endforeach( BASENAME )


# source files
set( CHARGEDENSITYSOLVER_ELECTRIC_SOURCE_BASENAMES
KChargeDensitySolver.cc
Expand All @@ -36,20 +50,41 @@ set( CHARGEDENSITYSOLVER_ELECTRIC_SOURCE_BASENAMES
KRobinHoodChargeDensitySolver.cc
)

set( CHARGEDENSITYSOLVER_MAGNETIC_SOURCE_BASENAMES
KCachedMagneticChargeDensitySolver.cc
KBiotSavartChargeDensitySolver.cc
)

set( CHARGEDENSITYSOLVER_ELECTRIC_SOURCE_PATH
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/Electric/src
)

set( CHARGEDENSITYSOLVER_MAGNETIC_SOURCE_PATH
${CMAKE_CURRENT_SOURCE_DIR}/Magnetic/src
)

foreach( BASENAME ${CHARGEDENSITYSOLVER_ELECTRIC_SOURCE_BASENAMES} )
list( APPEND CHARGEDENSITYSOLVER_ELECTRIC_SOURCE_FILENAMES ${CHARGEDENSITYSOLVER_ELECTRIC_SOURCE_PATH}/${BASENAME} )
endforeach( BASENAME )

foreach( BASENAME ${CHARGEDENSITYSOLVER_MAGNETIC_SOURCE_BASENAMES} )
list( APPEND CHARGEDENSITYSOLVER_MAGNETIC_SOURCE_FILENAMES ${CHARGEDENSITYSOLVER_MAGNETIC_SOURCE_PATH}/${BASENAME} )
endforeach( BASENAME )


# library
add_library( KEMFieldChargeDensitySolvers SHARED
${CHARGEDENSITYSOLVER_ELECTRIC_SOURCE_FILENAMES} ${CHARGEDENSITYSOLVER_ELECTRIC_HEADER_FILENAMES})
${CHARGEDENSITYSOLVER_ELECTRIC_SOURCE_FILENAMES} ${CHARGEDENSITYSOLVER_ELECTRIC_HEADER_FILENAMES}
${CHARGEDENSITYSOLVER_MAGNETIC_SOURCE_FILENAMES} ${CHARGEDENSITYSOLVER_MAGNETIC_HEADER_FILENAMES}
)
#set_target_properties( KEMFieldChargeDensitySolvers PROPERTIES COMPILE_FLAGS -Wno-overloaded-virtual )

target_include_directories(KEMFieldChargeDensitySolvers
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>)
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Electric/include> $<INSTALL_INTERFACE:Electric/include>)
target_include_directories(KEMFieldChargeDensitySolvers
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Magnetic/include> $<INSTALL_INTERFACE:Magnetic/include>)


target_link_libraries( KEMFieldChargeDensitySolvers
PUBLIC
KEMFieldElectricBoundaryIntegrators
Expand All @@ -73,13 +108,21 @@ endif(KEMField_USE_VTK)

# install
kasper_install_headers( ${CHARGEDENSITYSOLVER_ELECTRIC_HEADER_FILENAMES} )
kasper_install_headers( ${CHARGEDENSITYSOLVER_MAGNETIC_HEADER_FILENAMES} )
kasper_install_libraries( KEMFieldChargeDensitySolvers )

# test executable
#add_executable( KChargeDensitySolver_test test/KChargeDensitySolver_test.cc )
# test executables
#add_executable( KChargeDensitySolver_test Electric/test/KChargeDensitySolver_test.cc )
#target_link_libraries( KChargeDensitySolver_test
# ${KGeoBag_LIBRARIES}
# KEMFieldChargeDensitySolvers
#)
#add_executable( KMagneticChargeDensitySolver_test Magnetic/test/KMagneticChargeDensitySolver_test.cc )
#target_link_libraries( KMagneticChargeDensitySolver_test
# ${KGeoBag_LIBRARIES}
# KEMFieldChargeDensitySolvers
#)


#kasper_install_executables( KChargeDensitySolver_test )
#kasper_install_executables( KMagneticChargeDensitySolver_test )
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* KBiotSavartChargeDensitySolver.hh
*
* Created on: 4 Apr 2025
* Author: pslocum
*/

#ifndef KBIOTSAVARTCHARGEDENSITYSOLVER_HH_
#define KBIOTSAVARTCHARGEDENSITYSOLVER_HH_

#include "KMagneticChargeDensitySolver.hh"

namespace KEMField
{

template<typename ValueType> class KBoundaryMatrixGenerator; // forward declaration

class KBiotSavartChargeDensitySolver : public KMagneticChargeDensitySolver
{
public:

KBiotSavartChargeDensitySolver();
~KBiotSavartChargeDensitySolver() override;

private:
void InitializeCore(KSurfaceContainer& container) override;
void ComputeSolution(KSurfaceContainer& container);



};

} /* namespace KEMField */

#endif /* KBIOTSAVARTCHARGEDENSITYSOLVER_HH_ */
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*
* KCachedMagneticChargeDensitySolver.hh
*
* Created on: 18 Apr 2025
* Author: pslocum
*
* Imported from KSFieldMagnetostatic
*/

#ifndef KCACHEDMAGNETICCHARGEDENSITYSOLVER_HH_
#define KCACHEDMAGNETICCHARGEDENSITYSOLVER_HH_

#include "KMagneticChargeDensitySolver.hh"

namespace KEMField
{

class KCachedMagneticChargeDensitySolver : public KMagneticChargeDensitySolver
{
public:
KCachedMagneticChargeDensitySolver();
~KCachedMagneticChargeDensitySolver() override;

void SetName(const std::string& s)
{
fName = s;
}
void SetHash(const std::string& s)
{
fHash = s;
}

private:
void InitializeCore(KSurfaceContainer& container) override;

std::string fName;
std::string fHash;
};

} // namespace KEMField

#endif /* KCACHEDMAGNETICCHARGEDENSITYSOLVER_HH_ */
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* KBiotSavartChargeDensitySolver.cc
*
* Created on: 18 Apr 2025
* Author: pslocum
*/

#include "KBiotSavartChargeDensitySolver.hh"

#include "KEMCoreMessage.hh"

namespace KEMField
{

KBiotSavartChargeDensitySolver::KBiotSavartChargeDensitySolver()
{
}

KBiotSavartChargeDensitySolver::~KBiotSavartChargeDensitySolver() = default;

void KBiotSavartChargeDensitySolver::InitializeCore(KSurfaceContainer& container)
{
if (container.empty()) {
kem_cout(eError) << "ERROR: Biot Savart solver container is empty (did you forget to set up the geometry?)" << eom;
}
}

void KBiotSavartChargeDensitySolver::ComputeSolution(KSurfaceContainer& container)
{
if (container.empty()) {
kem_cout(eError) << "ERROR: Solver got no electrode elements (did you forget to setup a geometry mesh?)" << eom;
}
}


} /* namespace KEMField */
Loading
Loading