OPAL (Object Oriented Parallel Accelerator Library)
2024.1
OPAL
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
src
PyOpal
PyObjects
PyTrackCmd.cpp
Go to the documentation of this file.
1
//
2
// Python API for TrackCmd
3
//
4
// Copyright (c) 2023, Chris Rogers, STFC Rutherford Appleton Laboratory, Didcot, UK
5
//
6
// This file is part of OPAL.
7
//
8
// OPAL is free software: you can redistribute it and/or modify
9
// it under the terms of the GNU General Public License as published by
10
// the Free Software Foundation, either version 3 of the License, or
11
// (at your option) any later version.
12
//
13
// You should have received a copy of the GNU General Public License
14
// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
15
//
16
17
#include "
PyOpal/PyCore/ExceptionTranslation.h
"
18
#include "
PyOpal/PyCore/Globals.h
"
19
#include "
PyOpal/PyCore/PyOpalObject.h
"
20
21
#include "
Track/TrackCmd.h
"
22
23
namespace
PyOpal {
24
namespace
PyTrackCmdNS {
25
26
template
<>
27
std::vector<PyOpalObjectNS::AttributeDef>
PyOpalObjectNS::PyOpalObject<TrackCmd>::attributes
= {
28
{
"LINE"
,
"line"
,
""
,
PyOpalObjectNS::STRING
},
29
{
"BEAM"
,
"beam"
,
""
,
PyOpalObjectNS::STRING
},
30
{
"DT"
,
"time_steps"
,
""
,
PyOpalObjectNS::DOUBLE
},
// array
31
{
"DTSCINIT"
,
"dt_space_charge"
,
""
,
PyOpalObjectNS::DOUBLE
},
32
{
"DTAU"
,
"dtau"
,
""
,
PyOpalObjectNS::DOUBLE
},
33
{
"T0"
,
"t0"
,
""
,
PyOpalObjectNS::DOUBLE
},
34
{
"MAXSTEPS"
,
"max_steps"
,
""
,
PyOpalObjectNS::FLOAT_LIST
},
35
{
"STEPSPERTURN"
,
"steps_per_turn"
,
""
,
PyOpalObjectNS::DOUBLE
},
36
{
"ZSTART"
,
"z_start"
,
""
,
PyOpalObjectNS::DOUBLE
},
37
{
"ZSTOP"
,
"z_stop"
,
""
,
PyOpalObjectNS::FLOAT_LIST
},
38
{
"TIMEINTEGRATOR"
,
"time_integrator"
,
""
,
PyOpalObjectNS::PREDEFINED_STRING
},
39
{
"MAP_ORDER"
,
"map_order"
,
""
,
PyOpalObjectNS::DOUBLE
},
40
};
41
42
// Can't use the default PyObject execute function because we need to call
43
// setIsParseable to false (otherwise OPAL will try to parse it as an OPAL file)
44
void
executeWrapper
(
PyOpalObjectNS::PyOpalObject<TrackCmd>
& cmd) {
45
std::shared_ptr<TrackCmd> objectPtr = cmd.
getOpalShared
();
46
objectPtr->setIsParseable(
false
);
47
objectPtr->execute();
48
}
49
50
BOOST_PYTHON_MODULE
(track) {
51
ExceptionTranslation::registerExceptions
();
52
PyOpal::Globals::Initialise
();
53
PyOpalObjectNS::PyOpalObject<TrackCmd>
trackCmd;
54
auto
trackClass = trackCmd.
make_class
(
"Track"
);
55
trackClass.def(
"execute"
, &
executeWrapper
);
56
}
57
58
}
// PyTrackCmd
59
}
// PyOpal
60
TrackCmd.h
PyOpal::PyOpalObjectNS::STRING
Definition:
PyOpalObject.h:80
PyOpal::Globals::Initialise
void Initialise()
Definition:
Globals.cpp:50
PyOpal::PyTrackCmdNS::BOOST_PYTHON_MODULE
BOOST_PYTHON_MODULE(track)
Definition:
PyTrackCmd.cpp:50
ExceptionTranslation.h
PyOpal::PyOpalObjectNS::FLOAT_LIST
Definition:
PyOpalObject.h:81
PyOpal::PyOpalObjectNS::PyOpalObject::getOpalShared
std::shared_ptr< C > getOpalShared()
Definition:
PyOpalObject.h:286
PyOpal::ExceptionTranslation::registerExceptions
void registerExceptions()
Definition:
ExceptionTranslation.cpp:23
Globals.h
PyOpal::PyOpalObjectNS::PyOpalObject
Definition:
PyOpalObject.h:69
PyOpal::PyOpalObjectNS::PREDEFINED_STRING
Definition:
PyOpalObject.h:80
PyOpal::PyOpalObjectNS::DOUBLE
Definition:
PyOpalObject.h:81
PyOpal::PyOpalObjectNS::PyOpalObject::make_class
boost::python::class_< PyC > make_class(const char *className)
Definition:
PyOpalObject.h:745
PyOpalObject.h
PyOpal::PyTrackCmdNS::executeWrapper
void executeWrapper(PyOpalObjectNS::PyOpalObject< TrackCmd > &cmd)
Definition:
PyTrackCmd.cpp:44
Generated on Tue Jul 2 2024 15:05:25 for OPAL (Object Oriented Parallel Accelerator Library) by
1.8.5