Source code for api.simulation.load_cases.load_case_container_setup

""" Handling of load case containers """

import typing
from abc import abstractmethod, ABC

from more.api.simulation.load_cases.load_case_setup import LoadCaseSetupPipeline


[docs] class LoadCaseContainerSetup(ABC): def __init__(self, item): self._load_case_container = item self.load_case_container = item def _get_wrapped_object(self): return self._load_case_container
[docs] @abstractmethod def get_available_load_case_names(self) -> typing.List[str]: """ Gets the names of existing load cases, with the ordering being the same as the order in the underlying list at the moment of calling this method .. admonition:: Example :class: note .. >>> import more.project >>> proj = more.project.Project() >>> from more.api import ApiGateway >>> api = ApiGateway(proj=proj) >>> simulation_setup = api.create_simulation_setup() >>> load_case_container_setup = simulation_setup.create_load_case_container_setup() >>> _ = load_case_container_setup.create_load_case_setup(lc_type='Mechanical load case') >>> _ = load_case_container_setup.create_load_case_setup(lc_type='Mechanical load case') >>> _ = load_case_container_setup.create_load_case_setup(lc_type='Mechanical load case') >>> load_case_container_setup.get_available_load_case_names() ['Mechanical load case', 'Mechanical load case 1', 'Mechanical load case 2'] Returns ------- list of strings Names of available load cases """ pass
[docs] @abstractmethod def create_load_case_setup(self, lc_type) -> LoadCaseSetupPipeline: """ Creates a load case and returns a corresponding :class:`~api.simulation.load_cases.load_case_setup.LoadCaseSetupPipeline` object .. admonition:: Example :class: note .. >>> import more.project >>> proj = more.project.Project() >>> from more.api import ApiGateway >>> api = ApiGateway(proj=proj) >>> simulation_setup = api.create_simulation_setup() >>> load_case_container_setup = simulation_setup.create_load_case_container_setup() >>> load_case_setup = load_case_container_setup.create_load_case_setup(lc_type='Mechanical load case') .. >>> # Test assertions for doctest, will not be rendered because of the '..' sphinx comment above >>> len(load_case_container_setup.load_case_container.load_cases_container.elements) 1 >>> from more.load_cases.mechanical_load_case import MechanicalLoadCase >>> isinstance(load_case_container_setup.load_case_container.load_cases_container.elements[0], MechanicalLoadCase) True >>> load_case_setup._load_case == load_case_container_setup.load_case_container.load_cases_container.elements[0] True >>> load_case_container_setup.create_load_case_setup(lc_type='Non existent LC type') Traceback (most recent call last): ... more.api.exceptions.api_exception.NameNotFoundError: ... Returns ------- :class:`~api.simulation.load_cases.load_case_setup.LoadCaseSetupPipeline` A :class:`~api.simulation.load_cases.load_case_setup.LoadCaseSetupPipeline` object for the created load case Raises ------ NameNotFoundError Raised if no loadd case type with the given name was found """ pass
[docs] @abstractmethod def get_load_case_setup(self, lc_type: typing.Optional[str] = None, name: typing.Optional[str] = None): """ Returns a :class:`~api.simulation.load_cases.load_case_setup.LoadCaseSetupPipeline` object for a load case setup object with the given name .. admonition:: Deprecated :class: warning the 'lc_type' parameter is deprecated and will be removed without replacement in a future MORe release. Please use only the 'name' parameter to specify the load case. .. admonition:: Example :class: note .. >>> import more.project >>> proj = more.project.Project() >>> from more.api import ApiGateway >>> api = ApiGateway(proj=proj) >>> simulation_setup = api.create_simulation_setup() >>> load_case_container_setup = simulation_setup.create_load_case_container_setup() .. >>> _load_case_setup = load_case_container_setup.create_load_case_setup(lc_type='Mechanical load case').set_name(name='Example LC') >>> load_case_setup = load_case_container_setup.get_load_case_setup(name='Example LC') # This Load Case must already exist .. >>> # Test assertions for doctest, will not be rendered because of the '..' sphinx comment above >>> len(load_case_container_setup.load_case_container.load_cases_container.elements) 1 >>> from more.load_cases.mechanical_load_case import MechanicalLoadCase >>> isinstance(load_case_container_setup.load_case_container.load_cases_container.elements[0],MechanicalLoadCase) True >>> load_case_setup._load_case == load_case_container_setup.load_case_container.load_cases_container.elements[0] True >>> load_case_setup._load_case == _load_case_setup._load_case True >>> load_case_container_setup.get_load_case_setup(name='Non existent LC') Traceback (most recent call last): ... more.api.exceptions.api_exception.NameNotFoundError: ... Parameters ---------- name : str The name of the existing load case for which to return a :class:`~api.simulation.load_cases.load_case_setup.LoadCaseSetupPipeline` Returns ------- :class:`~api.simulation.load_cases.load_case_setup.LoadCaseSetupPipeline` A :class:`~api.simulation.load_cases.load_case_setup.LoadCaseSetupPipeline` object for the found load case Raises ------ NameNotFoundError Raised if no load case with the given name was found """ pass
[docs] @abstractmethod def remove_load_case_setup(self, lc_type: typing.Optional[str] = None, name: typing.Optional[str] = None) -> 'LoadCaseContainerSetup': """ Removes a load case .. admonition:: Deprecated :class: warning the 'lc_type' parameter is deprecated and will be removed without replacement in a future MORe release. Please use only the 'name' parameter to specify the load case to remove. .. admonition:: Example :class: note .. >>> import more.project >>> proj = more.project.Project() >>> from more.api import ApiGateway >>> api = ApiGateway(proj=proj) >>> simulation_setup = api.create_simulation_setup() >>> load_case_container_setup = simulation_setup.create_load_case_container_setup() .. >>> _load_case_setup = load_case_container_setup.create_load_case_setup(lc_type='Mechanical load case').set_name(name='Example LC') >>> load_case_setup = load_case_container_setup.remove_load_case_setup(name='Example LC') # This Load Case must already exist .. >>> # Test assertions for doctest, will not be rendered because of the '..' sphinx comment above >>> len(load_case_container_setup.load_case_container.load_cases_container.elements) 0 >>> from more.load_cases.mechanical_load_case import MechanicalLoadCase >>> load_case_container_setup.get_load_case_setup(name='Non existent LC') Traceback (most recent call last): ... more.api.exceptions.api_exception.NameNotFoundError: ... Parameters ---------- name : str The name of the existing load case to remove Returns ------- self: LoadCaseContainerSetup Raises ------ NameNotFoundError Raised if no load case with the given name was found """ pass
[docs] @abstractmethod def get_name(self) -> str: """ Returns the name of the object .. admonition:: Example :class: note .. >>> import more.project >>> proj = more.project.Project() >>> from more.api import ApiGateway >>> api = ApiGateway(proj=proj) >>> simulation_setup = api.create_simulation_setup() >>> load_case_container_setup = simulation_setup.create_load_case_container_setup() >>> load_case_container_setup.set_name(name='new_name') <more...> >>> load_case_container_setup.get_name() 'new_name' Returns ------- name: str The name of the object """ pass
[docs] @abstractmethod def set_name(self, name: str, resolve_duplicate_name: bool = False): """ Sets the name of the load case container .. admonition:: Example :class: note .. >>> import more.project >>> proj = more.project.Project() >>> from more.api import ApiGateway >>> api = ApiGateway(proj=proj) >>> simulation_setup = api.create_simulation_setup() >>> load_case_container_setup = simulation_setup.create_load_case_container_setup() >>> load_case_container_setup.set_name(name='new_name') <more...> >>> simulation_setup.create_load_case_container_setup() \\ ... .set_name(name='new_name', resolve_duplicate_name=True) \\ ... .get_name() 'new_name 1' .. >>> load_case_container_setup._load_case_container.name 'new_name' Trying to set the name to a non-string value >>> load_case_container_setup.set_name(name=None) Traceback (most recent call last): ... TypeError: ... Setting a non-unique name >>> load_case_container_setup.set_name('new_name') Traceback (most recent call last): ... more.api.exceptions.api_exception.NameNotUniqueError: ... Parameters ---------- name : str The new name for the load case container resolve_duplicate_name: bool Whether to automatically assign a new name when the chosen one is already taken Returns ------- self: LoadCaseContainerSetup Raises ------ NameNotUniqueError Raised if the given name is not unique TypeError Raised if the given name is not a string """ pass
def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): pass