C Code Generation#
parcels.compilation.codegenerator module#
- class parcels.compilation.codegenerator.IntrinsicTransformer(fieldset=None, ptype=<class 'parcels.particle.JITParticle'>)[source]#
Bases:
NodeTransformer
AST transformer that catches any mention of intrinsic variable names, such as ‘particle’ or ‘fieldset’, inserts placeholder objects and propagates attribute access.
Methods
generic_visit
(node)Called if no explicit visitor function exists for a node.
get_tmp
()Create a new temporary variable name.
visit
(node)Visit a node.
visit_Name
(node)Inject IntrinsicNode objects into the tree according to keyword.
visit_Assign
visit_Attribute
visit_AugAssign
visit_Call
visit_Constant
visit_Subscript
- class parcels.compilation.codegenerator.KernelGenerator(fieldset=None, ptype=<class 'parcels.particle.JITParticle'>)[source]#
Bases:
ABC
,NodeVisitor
Code generator class that translates simple Python kernel functions into C functions.
Works by populating and accessing the ccode attribute on nodes in the Python AST.
Methods
generic_visit
(node)Called if no explicit visitor function exists for a node.
visit
(node)Visit a node.
visit_Call
(node)Generate C code for simple C-style function calls.
visit_FieldNode
(node)Record intrinsic fields used in kernel.
visit_Name
(node)Catches any mention of intrinsic variable names such as 'particle' or 'fieldset' and inserts our placeholder objects.
visit_NestedFieldNode
(node)Record intrinsic fields used in kernel.
Record intrinsic fields used in kernel.
visit_VectorFieldNode
(node)Record intrinsic fields used in kernel.
generate
visit_Add
visit_And
visit_Assign
visit_AugAssign
visit_BinOp
visit_BoolOp
visit_Break
visit_Compare
visit_ConstNode
visit_Constant
visit_Div
visit_Eq
visit_Expr
visit_FieldEvalNode
visit_For
visit_FunctionDef
visit_Gt
visit_GtE
visit_If
visit_Index
visit_List
visit_Lt
visit_LtE
visit_Mod
visit_Mult
visit_NameConstant
visit_NestedFieldEvalNode
visit_NestedVectorFieldEvalNode
visit_Not
visit_NotEq
visit_Or
visit_Pass
visit_Pow
visit_Print
visit_Return
visit_Sub
visit_Subscript
visit_Tuple
visit_UAdd
visit_USub
visit_UnaryOp
visit_VectorFieldEvalNode
visit_While
- visit_Call(node)[source]#
Generate C code for simple C-style function calls.
Please note that starred and keyword arguments are currently not supported.
- class parcels.compilation.codegenerator.LoopGenerator(fieldset, ptype=None)[source]#
Bases:
object
Code generator class that adds type definitions and the outer loop around kernel functions to generate compilable C code.
Methods
generate
- class parcels.compilation.codegenerator.TupleSplitter[source]#
Bases:
NodeTransformer
AST transformer that detects and splits Pythonic tuple assignments into multiple statements for conversion to C.
Methods
generic_visit
(node)Called if no explicit visitor function exists for a node.
visit
(node)Visit a node.
visit_Assign
visit_Constant
parcels.compilation.codecompiler module#
- class parcels.compilation.codecompiler.CCompiler(cc=None, cppargs=None, ldargs=None, incdirs=None, libdirs=None, libs=None, tmp_dir='/home/docs/checkouts/readthedocs.org/user_builds/parcels/checkouts/latest/docs')[source]#
Bases:
object
A compiler object for creating and loading shared libraries.
- Parameters
cc – C compiler executable (uses environment variable
CC
if not provided).cppargs – A list of arguments to the C compiler (optional).
ldargs – A list of arguments to the linker (optional).
Methods
compile
- class parcels.compilation.codecompiler.CCompiler_SS(cc=None, cppargs=None, ldargs=None, incdirs=None, libdirs=None, libs=None, tmp_dir='/home/docs/checkouts/readthedocs.org/user_builds/parcels/checkouts/latest/docs')[source]#
Bases:
CCompiler
Single-stage C-compiler; used for a SINGLE source file.
Methods
compile
- parcels.compilation.codecompiler.GNUCompiler[source]#
alias of
GNUCompiler_SS
- class parcels.compilation.codecompiler.GNUCompiler_SS(cppargs=None, ldargs=None, incdirs=None, libdirs=None, libs=None, tmp_dir='/home/docs/checkouts/readthedocs.org/user_builds/parcels/checkouts/latest/docs')[source]#
Bases:
CCompiler_SS
A compiler object for the GNU Linux toolchain.
- Parameters
cppargs – A list of arguments to pass to the C compiler (optional).
ldargs – A list of arguments to pass to the linker (optional).
Methods
compile