OPAL (Object Oriented Parallel Accelerator Library)
2024.2
OPAL
PyBeam.cpp
Go to the documentation of this file.
1
//
2
// Python API for Beam
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 "
Structure/Beam.h
"
22
23
namespace
PyOpal
{
24
// DOUBLE, STRING, BOOL, INT
25
template
<>
26
std::vector<PyOpalObjectNS::AttributeDef>
PyOpalObjectNS::PyOpalObject<Beam>::attributes
= {
27
{
"PARTICLE"
,
"particle"
,
""
,
PyOpalObjectNS::PREDEFINED_STRING
},
28
{
"MASS"
,
"mass"
,
""
,
PyOpalObjectNS::DOUBLE
},
29
{
"CHARGE"
,
"charge"
,
""
,
PyOpalObjectNS::DOUBLE
},
30
{
"ENERGY"
,
"energy"
,
""
,
PyOpalObjectNS::DOUBLE
},
31
{
"PC"
,
"momentum"
,
""
,
PyOpalObjectNS::DOUBLE
},
32
{
"GAMMA"
,
"gamma"
,
""
,
PyOpalObjectNS::DOUBLE
},
33
{
"BCURRENT"
,
"beam_current"
,
""
,
PyOpalObjectNS::DOUBLE
},
34
{
"BFREQ"
,
"beam_frequency"
,
""
,
PyOpalObjectNS::DOUBLE
},
35
{
"NPART"
,
"number_of_particles"
,
""
,
PyOpalObjectNS::DOUBLE
},
36
{
"MOMENTUMTOLERANCE"
,
"momentum_tolerance"
,
""
,
PyOpalObjectNS::DOUBLE
},
37
};
38
39
namespace
PyBeamNS
{
40
41
BOOST_PYTHON_MODULE
(beam) {
42
ExceptionTranslation::registerExceptions
();
43
PyOpal::Globals::Initialise
();
44
PyOpalObjectNS::PyOpalObject<Beam>
aBeam;
45
auto
beamClass = aBeam.
make_class
(
"Beam"
);
46
aBeam.
addRegister
(beamClass);
47
}
48
49
}
// namespace PyBeamNS
50
}
// namespace PyOpal
ExceptionTranslation.h
PyOpalObject.h
Globals.h
Beam.h
PyOpal
Definition
ExceptionTranslation.cpp:21
PyOpal::ExceptionTranslation::registerExceptions
void registerExceptions()
Definition
ExceptionTranslation.cpp:23
PyOpal::Globals::Initialise
void Initialise()
Definition
Globals.cpp:50
PyOpal::PyOpalObjectNS::PREDEFINED_STRING
@ PREDEFINED_STRING
Definition
PyOpalObject.h:80
PyOpal::PyOpalObjectNS::DOUBLE
@ DOUBLE
Definition
PyOpalObject.h:81
PyOpal::PyBeamNS
Definition
PyBeam.cpp:39
PyOpal::PyBeamNS::BOOST_PYTHON_MODULE
BOOST_PYTHON_MODULE(beam)
Definition
PyBeam.cpp:41
PyOpal::PyOpalObjectNS::PyOpalObject
Definition
PyOpalObject.h:138
PyOpal::PyOpalObjectNS::PyOpalObject::addRegister
void addRegister(PYCLASS &pyclass)
Definition
PyOpalObject.h:767
PyOpal::PyOpalObjectNS::PyOpalObject::attributes
static std::vector< AttributeDef > attributes
Definition
PyOpalObject.h:293
PyOpal::PyOpalObjectNS::PyOpalObject::make_class
boost::python::class_< PyC > make_class(const char *className)
Definition
PyOpalObject.h:745