OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
Translation.cpp
Go to the documentation of this file.
2#include "Physics/Physics.h"
5
6#include <regex>
7#include <string>
8
9namespace mslang {
10 void Translation::print(int indentwidth) {
11 std::string indent(indentwidth, ' ');
12 std::string indent2(indentwidth + 8, ' ');
13 std::cout << indent << "translate, " << std::endl;
14 func_m->print(indentwidth + 8);
15 std::cout << ",\n"
16 << indent2 << "dx: " << shiftx_m << ", \n"
17 << indent2 << "dy: " << shifty_m;
18 }
19
20 void Translation::applyTranslation(std::vector<std::shared_ptr<Base> >& bfuncs) {
23
24 const unsigned int size = bfuncs.size();
25 for (unsigned int j = 0; j < size; ++j) {
26 std::shared_ptr<Base>& obj = bfuncs[j];
27 obj->trafo_m = obj->trafo_m.mult(shift);
28
29 if (!obj->divisor_m.empty()) applyTranslation(obj->divisor_m);
30 }
31 }
32
33 void Translation::apply(std::vector<std::shared_ptr<Base> >& bfuncs) {
34 func_m->apply(bfuncs);
35 applyTranslation(bfuncs);
36 }
37
38 bool Translation::parse_detail(iterator& it, const iterator& end, Function*& fun) {
39 Translation* trans = static_cast<Translation*>(fun);
40 if (!parse(it, end, trans->func_m)) return false;
41
42 ArgumentExtractor arguments(std::string(++it, end));
43 try {
44 trans->shiftx_m = parseMathExpression(arguments.get(0));
45 trans->shifty_m = parseMathExpression(arguments.get(1));
46 } catch (std::runtime_error& e) {
47 std::cout << e.what() << std::endl;
48 return false;
49 }
50
51 it += (arguments.getLengthConsumed() + 1);
52
53 return true;
54 }
55} // namespace mslang
ippl::Vector< T, Dim > Vector_t
double parseMathExpression(const std::string &str)
Definition matheval.cpp:4
std::string::iterator iterator
Definition MSLang.h:14
std::string get(unsigned int i) const
unsigned int getLengthConsumed() const
virtual void apply(std::vector< std::shared_ptr< Base > > &bfuncs)=0
static bool parse(iterator &it, const iterator &end, Function *&fun)
Definition MSLang.cpp:47
virtual void print(int indent)=0
virtual void apply(std::vector< std::shared_ptr< Base > > &bfuncs)
void applyTranslation(std::vector< std::shared_ptr< Base > > &bfuncs)
virtual void print(int indentwidth)
Function * func_m
Definition Translation.h:8
static bool parse_detail(iterator &it, const iterator &end, Function *&fun)