pylbo.gimli.legolas =================== .. py:module:: pylbo.gimli.legolas Classes ------- .. autoapisummary:: pylbo.gimli.legolas.Legolas Functions --------- .. autoapisummary:: pylbo.gimli.legolas.write_physics_calls pylbo.gimli.legolas.fortran_function pylbo.gimli.legolas.write_equilibrium_functions pylbo.gimli.legolas.write_physics_functions Module Contents --------------- .. py:function:: write_physics_calls(file, equilibrium) Writes the use of user-defined physics functions to the Legolas user module. :param file: The file object to write to. :type file: file :param equilibrium: The equilibrium object containing the user-defined equilibrium and physics functions. :type equilibrium: Equilibrium .. !! processed by numpydoc !! .. py:function:: fortran_function(file, expr, varname, translation, constant=False, level=0) Writes a sympy expression to the user module as a Fortran function. :param file: The file object to write to. :type file: file :param expr: The expression to write. :type expr: sympy expression :param varname: The name of the function. :type varname: str :param translation: A dictionary containing any substitution rules for sympy to Fortran expressions. :type translation: dict :param constant: Set to `True` if the function is a constant. :type constant: bool :param level: The indentation level. :type level: int .. !! processed by numpydoc !! .. py:function:: write_equilibrium_functions(file, equilibrium) Iterates over all Legolas equilibrium quantities and writes them to the user module. :param file: The file object to write to. :type file: file :param equilibrium: The equilibrium object containing the user-defined equilibrium functions. :type equilibrium: Equilibrium .. !! processed by numpydoc !! .. py:function:: write_physics_functions(file, equilibrium) Iterates over all Legolas physics expressions and writes them to the user module. :param file: The file object to write to. :type file: file :param equilibrium: The equilibrium object containing the user-defined physics functions. :type equilibrium: Equilibrium .. !! processed by numpydoc !! .. py:class:: Legolas(equilibrium, config) Class for generating user-defined Legolas modules and parfiles. :param equilibrium: The equilibrium object containing the user-defined equilibrium and physics functions. :type equilibrium: Equilibrium :param config: A dictionary containing the configuration for the Legolas run (both equilibrium parameter values and technical settings). :type config: dict .. !! processed by numpydoc !! .. py:attribute:: equilibrium .. py:attribute:: config .. py:method:: _validate_config() Validates the validity of the configuration dictionary. :raises KeyError: If the configuration dictionary is missing the `physics_type` key. :raises ValueError: If `physics_type` is not "hd" or "mhd". .. !! processed by numpydoc !! .. py:method:: user_module(filename='smod_user_defined', loc=None) Writes the user module for the Legolas run. :param filename: The name of the user module file. :type filename: str :param loc: Path to the directory where the user module will be stored. Default is the current directory. :type loc: str, ~os.PathLike .. rubric:: Examples The example below defines a homogeneous hydrodynamic equilibrium with constant density and temperature. The values of the equilibrium parameters are set in the configuration dictionary. >>> from pylbo.gimli import Variables, Equilibrium, Legolas >>> var = Variables() >>> eq = Equilibrium(var, rho0=var.rhoc, v02=0, v03=0, T0=var.Tc) >>> config = { >>> "geometry": "Cartesian", >>> "x_start": 0, >>> "x_end": 1, >>> "gridpoints": 51, >>> "parameters": { >>> "k2": 0.5, >>> "k3": 0, >>> "cte_rho0": 1, >>> "cte_T0": 1 >>> }, >>> "equilibrium_type": "user_defined", >>> "boundary_type": "wall_weak", >>> "physics_type": "mhd" >>> } >>> legolas = Legolas(eq, config) >>> legolas.user_module() .. !! processed by numpydoc !! .. py:method:: parfile(filename='legolas_config', make_dir=False) Writes the parameter file for the Legolas run. :param filename: The name of the parameter file. :type filename: str :param make_dir: If `True`, creates a directory for the parameter file. :type make_dir: bool :returns: **parfiles** -- A list containing the paths to the parameter files. :rtype: list .. rubric:: Examples The example below defines a homogeneous hydrodynamic equilibrium with constant density and temperature. The values of the equilibrium parameters are set in the configuration dictionary and written to the parameter file. >>> from pylbo.gimli import Variables, Equilibrium, Legolas >>> var = Variables() >>> eq = Equilibrium(var, rho0=var.rhoc, v02=0, v03=0, T0=var.Tc) >>> config = { >>> "geometry": "Cartesian", >>> "x_start": 0, >>> "x_end": 1, >>> "gridpoints": 51, >>> "parameters": { >>> "k2": 0.5, >>> "k3": 0, >>> "cte_rho0": 1, >>> "cte_T0": 1 >>> }, >>> "equilibrium_type": "user_defined", >>> "boundary_type": "wall_weak", >>> "physics_type": "mhd" >>> } >>> legolas = Legolas(eq, config) >>> legolas.parfile() .. !! processed by numpydoc !!