13 #include <yaml-cpp/yaml.h>
15 #include "expression_parser.h"
97 void read(YAML::Node);
100 bool read(
const std::string& filename);
214 template <
typename T>
217 typename std::vector<T>::const_iterator containerBegin, containerEnd;
218 if constexpr (std::is_same_v<T,Tetra::prm>)
220 else if constexpr (std::is_same_v<T,Triangle::prm>)
223 typename std::vector<T>::const_iterator result = std::find_if(
224 containerBegin, containerEnd,
225 [name] (
const T &p) {
return (p.regName == name);} );
227 if (result == containerEnd)
230 { idx = std::distance(containerBegin, result); }
277 const std::vector<std::string> ®ions)
const
288 inline Eigen::Vector3d
getField(
const double t_val)
const
292 {
return {NAN, NAN, NAN}; }
307 inline Eigen::Vector3d
getFieldSpace(
const Eigen::Ref<const Eigen::Vector3d> p)
const
Definition: expression_parser.h:22
double get_scalar(double arg) const
Definition: expression_parser.cpp:81
Eigen::Vector3d get_vector(double arg) const
Definition: expression_parser.cpp:117
int parameter_count() const
Definition: expression_parser.h:47
Container for all the settings provided by the user, with conversions to/from YAML.
Definition: settings.h:70
std::vector< Triangle::prm > paramTriangle
Definition: settings.h:235
std::string getFileDisplayName(void) const
Definition: settings.h:106
void setPbName(const std::string &str)
Definition: settings.h:112
std::string pbName
Definition: settings.h:325
std::string sB_space
Definition: settings.h:187
Eigen::Vector3d getMagnetization(const Eigen::Ref< const Eigen::Vector3d > p) const
Definition: settings.h:265
void toYaml(void)
Definition: settings.cpp:154
std::string r_path_output_dir
Definition: settings.h:238
double DUMAX
Definition: settings.h:199
void read(YAML::Node)
Definition: settings.cpp:316
int verbose
Definition: settings.h:136
static void dumpTemplate()
Definition: settings.cpp:146
bool spin_acc
Definition: settings.h:160
int getPrecision(void) const
Definition: settings.h:103
std::string sB_time
Definition: settings.h:190
void setScale(const double s)
Definition: settings.h:124
const bool NORMALIZE
Definition: settings.h:349
Nodes::index recentering_direction
Definition: settings.h:148
int MAXITER
Definition: settings.h:205
bool V_file
Definition: settings.h:157
std::vector< MetadataItem > userMetadata
Definition: settings.h:320
Eigen::Vector3d getFieldSpace(const Eigen::Ref< const Eigen::Vector3d > p) const
Definition: settings.h:307
std::pair< std::string, std::string > MetadataItem
Definition: settings.h:318
std::string evolMetadata() const
Definition: settings.cpp:293
std::string sMz
Definition: settings.h:169
field_exprType getFieldType(void) const
Definition: settings.h:300
ExpressionParser field_time_parser
Definition: settings.h:340
ExpressionParser field_parser
Definition: settings.h:335
ExpressionParser field_space_parser
Definition: settings.h:343
double dt_max
Definition: settings.h:250
double initial_time
Definition: settings.h:196
ExpressionParser mag_parser
Definition: settings.h:326
std::string sM
Definition: settings.h:172
void setFileDisplayName(const std::string &_s)
Definition: settings.h:109
std::string sBz
Definition: settings.h:181
int findRegionIdx(const std::string &name) const
Definition: settings.h:215
double getScale(void) const
Definition: settings.h:127
Eigen::Vector3d getMagnetization(const Eigen::Ref< const Eigen::Vector3d > p, const std::vector< std::string > ®ions) const
Definition: settings.h:276
std::string simName
Definition: settings.h:324
double getFieldTime(const double t_val) const
Definition: settings.h:314
std::string getPbName(void) const
Definition: settings.h:115
std::string sMy
Definition: settings.h:166
std::string sBx
Definition: settings.h:175
bool withTsv
Definition: settings.h:133
void setSimName(const std::string &str)
Definition: settings.h:118
int precision
Definition: settings.h:321
std::string solMetadata(const double t) const
Definition: settings.cpp:305
Settings()
Definition: settings.cpp:133
std::string restoreFileName
Definition: settings.h:193
mag_exprType getMagType() const
Definition: settings.h:255
bool recenter
Definition: settings.h:145
std::string getSimName(void) const
Definition: settings.h:121
double TOL
Definition: settings.h:202
double tf
Definition: settings.h:244
double threshold
Definition: settings.h:151
std::vector< std::string > evol_columns
Definition: settings.h:241
static void dumpDefaults()
Definition: settings.cpp:144
Eigen::Vector3d getField(const double t_val) const
Definition: settings.h:288
void set_MAXITER(const int i)
Definition: settings.h:130
double _scale
Definition: settings.h:323
std::string fileDisplayName
Definition: settings.h:322
std::string sB
Definition: settings.h:184
double dt_min
Definition: settings.h:247
std::string sMx
Definition: settings.h:163
std::vector< Tetra::prm > paramTetra
Definition: settings.h:208
field_exprType field_type
Definition: settings.h:332
std::string sBy
Definition: settings.h:178
int save_period
Definition: settings.h:142
double time_step
Definition: settings.h:139
int scalfmmNbTh
Definition: settings.h:154
std::ostringstream commonMetadata() const
Definition: settings.cpp:272
index
Definition: node.h:33
field_exprType
Definition: settings.h:40
@ RtoR3
B(t)
Definition: settings.h:42
@ UNDEF
undefined
Definition: settings.h:41
@ R4toR3
Definition: settings.h:43
mag_exprType
Definition: settings.h:25
@ POSITION_AND_REGIONS
M(x, y, z, regions)
Definition: settings.h:27
@ POSITION_ONLY
M(x, y, z)
Definition: settings.h:26
namespace Tetra header containing Tet class, some constants, and integrales
contains namespace Triangle header containing Tri class, and some constants and a less_than operator ...