Loading AutoCSM/languages/julia/methods.py +3 −3 Original line number Diff line number Diff line Loading @@ -110,13 +110,13 @@ class JuliaMethods(LanguageMethod): # overwrite_line_with_list(template_path, output_path, 'TODO_ADD_DEPENDENCIES_HERE', replacement) print('No create_setup currently implemented. Skipping create_setup.') def create_fmu(self, dependencies: list = None, fmu_compiler: str = 'dymola', experimentSettings: dict = None, **kwargs): def create_fmu(self, dependencies: list = None, compiler: str = 'dymola', experimentSettings: dict = None, **kwargs): """ Generates an FMU using the specified compiler. Args: dependencies (list[str], optional): List of dependencies required for FMU generation. fmu_compiler (str, optional): Compiler to use for FMU generation. Defaults to 'dymola'. compiler (str, optional): Compiler to use for FMU generation. Defaults to 'dymola'. experimentSettings (dict, optional): FMU experiment settings. Defaults to an empty dict. **kwargs: Additional keyword arguments for FMU creation. Loading @@ -124,7 +124,7 @@ class JuliaMethods(LanguageMethod): RuntimeError: If FMU creation fails. """ dependencies, experimentSettings = super().create_fmu(dependencies, fmu_compiler, experimentSettings, **kwargs) dependencies, experimentSettings = super().create_fmu(dependencies, compiler, experimentSettings, **kwargs) # Add required project and template dependencies dependencies = super()._add_required_dependencies(dependencies) Loading AutoCSM/languages/language_method.py +6 −6 Original line number Diff line number Diff line Loading @@ -54,15 +54,15 @@ class LanguageMethod: raise ValueError(f"Unsupported architecture: {self.parent.architecture}. " f"Supported architectures are: {self.SUPPORTED_ARCHITECTURES}") def validate_fmu_compiler(self, fmu_compiler): def validate_fmu_compiler(self, compiler): """ Validates if the FMU compiler is supported. Raises: ValueError: If the FMU compiler is not supported. """ if fmu_compiler not in self.SUPPORTED_FMU_COMPILERS: raise ValueError(f"Unsupported FMU compiler: {fmu_compiler}. " if compiler not in self.SUPPORTED_FMU_COMPILERS: raise ValueError(f"Unsupported FMU compiler: {compiler}. " f"Supported compilers are: {self.SUPPORTED_FMU_COMPILERS}") def validate_and_convert_paths(self, paths: list) -> list: Loading Loading @@ -170,13 +170,13 @@ class LanguageMethod: return dependencies @abstractmethod def create_fmu(self, dependencies: list = None, fmu_compiler: str = '', experimentSettings: dict = None, **kwargs): def create_fmu(self, dependencies: list = None, compiler: str = '', experimentSettings: dict = None, **kwargs): """ Generates an FMU (Functional Mock-up Unit) using the specified compiler. Args: dependencies Optional[List[str]] List of dependencies required for FMU generation. If not provided, uses defaults. fmu_compiler (str): Compiler to use for FMU generation. compiler (str): Compiler to use for FMU generation. experimentSettings (dict, optional): FMU experiment settings. Defaults to an empty dict. **kwargs: Additional keyword arguments passed to the method. Loading @@ -185,7 +185,7 @@ class LanguageMethod: creation specific to the language (e.g., Modelica, etc.). """ # Validate the fmu compiler self.validate_fmu_compiler(fmu_compiler) self.validate_fmu_compiler(compiler) # Verify dependencies are valid if dependencies is not None: Loading AutoCSM/languages/modelica/methods.py +14 −10 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ class ModelicaMethods(LanguageMethod): except Exception as e: raise RuntimeError(f"Failed to create model: {str(e)}") def create_setup(self, dependencies: list = None, **kwargs): def create_setup(self, dependencies: list = None, compiler: str = 'dymola', **kwargs): """ Generates an setup file (i.e., setup.mos). Loading @@ -116,18 +116,22 @@ class ModelicaMethods(LanguageMethod): # Add simulation file dependencies.append(pathlib.Path(self.parent.model_path).absolute().as_posix()) template_path = (self.METHOD_PATH / '../template_setup.mos').as_posix() if compiler == 'dymola' or compiler == 'omedit': temp = '../template_setup_dymola.mos' if compiler=='dymola' else '../template_setup_omedit.mos' template_path = (self.METHOD_PATH / temp).as_posix() output_path = (pathlib.Path(self.parent.model_path).parent / 'setup.mos').as_posix() replacement = '{' + ',\n\t\t'.join(f'"{dep}"' for dep in dependencies) + '}' overwrite_line_with_list(template_path, output_path, 'TODO_ADD_DEPENDENCIES_HERE', replacement) else: raise ValueError('Unsupported compiler for setup') def create_fmu(self, dependencies: list = None, fmu_compiler: str = 'dymola', experimentSettings: dict = None, **kwargs): def create_fmu(self, dependencies: list = None, compiler: str = 'dymola', experimentSettings: dict = None, **kwargs): """ Generates an FMU using the specified compiler. Args: dependencies (list[str], optional): List of dependencies required for FMU generation. fmu_compiler (str, optional): Compiler to use for FMU generation. Defaults to 'dymola'. compiler (str, optional): Compiler to use for FMU generation. Defaults to 'dymola'. experimentSettings (dict, optional): FMU experiment settings. Defaults to an empty dict. **kwargs: Additional keyword arguments for FMU creation. Loading @@ -135,13 +139,13 @@ class ModelicaMethods(LanguageMethod): RuntimeError: If FMU creation fails. """ # Verify dependencies dependencies, experimentSettings = super().create_fmu(dependencies, fmu_compiler, experimentSettings, **kwargs) dependencies, experimentSettings = super().create_fmu(dependencies, compiler, experimentSettings, **kwargs) # Add required project and template dependencies dependencies = super()._add_required_dependencies(dependencies) try: if fmu_compiler == 'dymola': if compiler == 'dymola': # Extract parameters from kwargs showwindow = kwargs.pop('showwindow', False) Loading AutoCSM/languages/template_method/methods.py +3 −3 Original line number Diff line number Diff line Loading @@ -112,13 +112,13 @@ class TEMPLATEMethods(LanguageMethod): # overwrite_line_with_list(template_path, output_path, 'TODO_ADD_DEPENDENCIES_HERE', replacement) print('No create_setup currently implemented. Skipping create_setup.') def create_fmu(self, dependencies: list = None, fmu_compiler: str = 'dymola', experimentSettings: dict = None, **kwargs): def create_fmu(self, dependencies: list = None, compiler: str = 'dymola', experimentSettings: dict = None, **kwargs): """ Generates an FMU using the specified compiler. Args: dependencies (list[str], optional): List of dependencies required for FMU generation. fmu_compiler (str, optional): Compiler to use for FMU generation. Defaults to 'dymola'. compiler (str, optional): Compiler to use for FMU generation. Defaults to 'dymola'. experimentSettings (dict, optional): FMU experiment settings. Defaults to an empty dict. **kwargs: Additional keyword arguments for FMU creation. Loading @@ -126,7 +126,7 @@ class TEMPLATEMethods(LanguageMethod): RuntimeError: If FMU creation fails. """ dependencies, experimentSettings = super().create_fmu(dependencies, fmu_compiler, experimentSettings, **kwargs) dependencies, experimentSettings = super().create_fmu(dependencies, compiler, experimentSettings, **kwargs) # Add required project and template dependencies dependencies = super()._add_required_dependencies(dependencies) Loading examples/modelica/GenericCSM/Systems/CentralEnergyPlant/Models/v0.mo +6 −10 Original line number Diff line number Diff line Loading @@ -137,14 +137,10 @@ equation pattern=LinePattern.Dash, thickness=0.5)); // connect(controlBus.coolingTowerLoop, coolingTowerLoop.controlBus) annotation // (Line( // points={{0,100},{12,100},{12,-50},{0,-50}}, // color={255,215,136}, // pattern=LinePattern.Dash, // thickness=0.5)); for i in 1:structure.coolingTowerLoop.n_int loop connect(controlBus.coolingTowerLoop[i], coolingTowerLoop[i].controlBus); end for; connect(controlBus.coolingTowerLoop, coolingTowerLoop.controlBus) annotation (Line( points={{0,100},{0,20},{16,20},{16,-40},{0,-40},{0,-50}}, color={255,215,136}, pattern=LinePattern.Dash, thickness=0.5)); end v0; Loading
AutoCSM/languages/julia/methods.py +3 −3 Original line number Diff line number Diff line Loading @@ -110,13 +110,13 @@ class JuliaMethods(LanguageMethod): # overwrite_line_with_list(template_path, output_path, 'TODO_ADD_DEPENDENCIES_HERE', replacement) print('No create_setup currently implemented. Skipping create_setup.') def create_fmu(self, dependencies: list = None, fmu_compiler: str = 'dymola', experimentSettings: dict = None, **kwargs): def create_fmu(self, dependencies: list = None, compiler: str = 'dymola', experimentSettings: dict = None, **kwargs): """ Generates an FMU using the specified compiler. Args: dependencies (list[str], optional): List of dependencies required for FMU generation. fmu_compiler (str, optional): Compiler to use for FMU generation. Defaults to 'dymola'. compiler (str, optional): Compiler to use for FMU generation. Defaults to 'dymola'. experimentSettings (dict, optional): FMU experiment settings. Defaults to an empty dict. **kwargs: Additional keyword arguments for FMU creation. Loading @@ -124,7 +124,7 @@ class JuliaMethods(LanguageMethod): RuntimeError: If FMU creation fails. """ dependencies, experimentSettings = super().create_fmu(dependencies, fmu_compiler, experimentSettings, **kwargs) dependencies, experimentSettings = super().create_fmu(dependencies, compiler, experimentSettings, **kwargs) # Add required project and template dependencies dependencies = super()._add_required_dependencies(dependencies) Loading
AutoCSM/languages/language_method.py +6 −6 Original line number Diff line number Diff line Loading @@ -54,15 +54,15 @@ class LanguageMethod: raise ValueError(f"Unsupported architecture: {self.parent.architecture}. " f"Supported architectures are: {self.SUPPORTED_ARCHITECTURES}") def validate_fmu_compiler(self, fmu_compiler): def validate_fmu_compiler(self, compiler): """ Validates if the FMU compiler is supported. Raises: ValueError: If the FMU compiler is not supported. """ if fmu_compiler not in self.SUPPORTED_FMU_COMPILERS: raise ValueError(f"Unsupported FMU compiler: {fmu_compiler}. " if compiler not in self.SUPPORTED_FMU_COMPILERS: raise ValueError(f"Unsupported FMU compiler: {compiler}. " f"Supported compilers are: {self.SUPPORTED_FMU_COMPILERS}") def validate_and_convert_paths(self, paths: list) -> list: Loading Loading @@ -170,13 +170,13 @@ class LanguageMethod: return dependencies @abstractmethod def create_fmu(self, dependencies: list = None, fmu_compiler: str = '', experimentSettings: dict = None, **kwargs): def create_fmu(self, dependencies: list = None, compiler: str = '', experimentSettings: dict = None, **kwargs): """ Generates an FMU (Functional Mock-up Unit) using the specified compiler. Args: dependencies Optional[List[str]] List of dependencies required for FMU generation. If not provided, uses defaults. fmu_compiler (str): Compiler to use for FMU generation. compiler (str): Compiler to use for FMU generation. experimentSettings (dict, optional): FMU experiment settings. Defaults to an empty dict. **kwargs: Additional keyword arguments passed to the method. Loading @@ -185,7 +185,7 @@ class LanguageMethod: creation specific to the language (e.g., Modelica, etc.). """ # Validate the fmu compiler self.validate_fmu_compiler(fmu_compiler) self.validate_fmu_compiler(compiler) # Verify dependencies are valid if dependencies is not None: Loading
AutoCSM/languages/modelica/methods.py +14 −10 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ class ModelicaMethods(LanguageMethod): except Exception as e: raise RuntimeError(f"Failed to create model: {str(e)}") def create_setup(self, dependencies: list = None, **kwargs): def create_setup(self, dependencies: list = None, compiler: str = 'dymola', **kwargs): """ Generates an setup file (i.e., setup.mos). Loading @@ -116,18 +116,22 @@ class ModelicaMethods(LanguageMethod): # Add simulation file dependencies.append(pathlib.Path(self.parent.model_path).absolute().as_posix()) template_path = (self.METHOD_PATH / '../template_setup.mos').as_posix() if compiler == 'dymola' or compiler == 'omedit': temp = '../template_setup_dymola.mos' if compiler=='dymola' else '../template_setup_omedit.mos' template_path = (self.METHOD_PATH / temp).as_posix() output_path = (pathlib.Path(self.parent.model_path).parent / 'setup.mos').as_posix() replacement = '{' + ',\n\t\t'.join(f'"{dep}"' for dep in dependencies) + '}' overwrite_line_with_list(template_path, output_path, 'TODO_ADD_DEPENDENCIES_HERE', replacement) else: raise ValueError('Unsupported compiler for setup') def create_fmu(self, dependencies: list = None, fmu_compiler: str = 'dymola', experimentSettings: dict = None, **kwargs): def create_fmu(self, dependencies: list = None, compiler: str = 'dymola', experimentSettings: dict = None, **kwargs): """ Generates an FMU using the specified compiler. Args: dependencies (list[str], optional): List of dependencies required for FMU generation. fmu_compiler (str, optional): Compiler to use for FMU generation. Defaults to 'dymola'. compiler (str, optional): Compiler to use for FMU generation. Defaults to 'dymola'. experimentSettings (dict, optional): FMU experiment settings. Defaults to an empty dict. **kwargs: Additional keyword arguments for FMU creation. Loading @@ -135,13 +139,13 @@ class ModelicaMethods(LanguageMethod): RuntimeError: If FMU creation fails. """ # Verify dependencies dependencies, experimentSettings = super().create_fmu(dependencies, fmu_compiler, experimentSettings, **kwargs) dependencies, experimentSettings = super().create_fmu(dependencies, compiler, experimentSettings, **kwargs) # Add required project and template dependencies dependencies = super()._add_required_dependencies(dependencies) try: if fmu_compiler == 'dymola': if compiler == 'dymola': # Extract parameters from kwargs showwindow = kwargs.pop('showwindow', False) Loading
AutoCSM/languages/template_method/methods.py +3 −3 Original line number Diff line number Diff line Loading @@ -112,13 +112,13 @@ class TEMPLATEMethods(LanguageMethod): # overwrite_line_with_list(template_path, output_path, 'TODO_ADD_DEPENDENCIES_HERE', replacement) print('No create_setup currently implemented. Skipping create_setup.') def create_fmu(self, dependencies: list = None, fmu_compiler: str = 'dymola', experimentSettings: dict = None, **kwargs): def create_fmu(self, dependencies: list = None, compiler: str = 'dymola', experimentSettings: dict = None, **kwargs): """ Generates an FMU using the specified compiler. Args: dependencies (list[str], optional): List of dependencies required for FMU generation. fmu_compiler (str, optional): Compiler to use for FMU generation. Defaults to 'dymola'. compiler (str, optional): Compiler to use for FMU generation. Defaults to 'dymola'. experimentSettings (dict, optional): FMU experiment settings. Defaults to an empty dict. **kwargs: Additional keyword arguments for FMU creation. Loading @@ -126,7 +126,7 @@ class TEMPLATEMethods(LanguageMethod): RuntimeError: If FMU creation fails. """ dependencies, experimentSettings = super().create_fmu(dependencies, fmu_compiler, experimentSettings, **kwargs) dependencies, experimentSettings = super().create_fmu(dependencies, compiler, experimentSettings, **kwargs) # Add required project and template dependencies dependencies = super()._add_required_dependencies(dependencies) Loading
examples/modelica/GenericCSM/Systems/CentralEnergyPlant/Models/v0.mo +6 −10 Original line number Diff line number Diff line Loading @@ -137,14 +137,10 @@ equation pattern=LinePattern.Dash, thickness=0.5)); // connect(controlBus.coolingTowerLoop, coolingTowerLoop.controlBus) annotation // (Line( // points={{0,100},{12,100},{12,-50},{0,-50}}, // color={255,215,136}, // pattern=LinePattern.Dash, // thickness=0.5)); for i in 1:structure.coolingTowerLoop.n_int loop connect(controlBus.coolingTowerLoop[i], coolingTowerLoop[i].controlBus); end for; connect(controlBus.coolingTowerLoop, coolingTowerLoop.controlBus) annotation (Line( points={{0,100},{0,20},{16,20},{16,-40},{0,-40},{0,-50}}, color={255,215,136}, pattern=LinePattern.Dash, thickness=0.5)); end v0;