From fefec524c0ae3a93629c3d3d3bd28b6048f79161 Mon Sep 17 00:00:00 2001 From: amna-khan Date: Wed, 17 May 2023 15:14:13 +0100 Subject: [PATCH 1/4] family argument not always needed - changed to kwargs so generic --- moose/variables.py | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/moose/variables.py b/moose/variables.py index bd7ccfc..3e471e8 100644 --- a/moose/variables.py +++ b/moose/variables.py @@ -27,33 +27,36 @@ class Family(IntEnum): RATIONAL_BERNSTEIN = auto() SIDE_HIERARCHIC = auto() -class Variable(): - def __init__(self, name = "", order = 1, family = 1, block = ""): +class Variable: + def __init__(self, name, order=None, **kwargs): self.name = name - self.order = Order(order) - self.family = Family(family) - self.block = block + self.order = order + self.kwargs = kwargs def __str__(self): string = f'[{self.name}]\n' - string += f'order = {self.order.name}\n' - string += f'family = {self.family.name}\n' - if self.block: - string += f'block = "{self.block}"\n' + if self.order is not None: + string += f'order = {Order(self.order).name}\n' + if 'family' in self.kwargs: + string += f'family = {self.kwargs["family"].name}\n' + if 'initial_condition' in self.kwargs: + string += f'initial_condition = "{self.kwargs["initial_condition"]}"\n' + if 'block' in self.kwargs and self.kwargs['block'] is not None: + string += f'block = "{self.kwargs["block"]}"\n' string += f'[]\n' return string class AuxVariable(Variable): - def __init__(self, name = "", order = 1, family = 1, block = ""): - super().__init__(name,order,family,block) + def __init__(self, name="",**kwargs): + super().__init__(name, order, family, block, initial_condition) class Variables(): def __init__(self): self.name = "Variables" self.variables = {} - def add_variable(self, name, order, family, block): - variable = Variable(name=name,order=order,family=family,block=block) + def add_variable(self, name, order=None, **kwargs): + variable = Variable(name=name, order=order, **kwargs) if variable.name in self.variables.keys(): print("variable name already in use") From 8d614c0f5fb4279e15610467d3997f8be039acb3 Mon Sep 17 00:00:00 2001 From: amna-khan Date: Thu, 18 May 2023 18:05:22 +0100 Subject: [PATCH 2/4] added quotesaround prop names and prop values --- moose/materials.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/moose/materials.py b/moose/materials.py index 0c67f55..71ca266 100644 --- a/moose/materials.py +++ b/moose/materials.py @@ -156,9 +156,9 @@ def __str__(self): string = f'[{self.name}]\n' string += f'type={self.material_type.name}\n' prop_names = ' '.join(self.prop_names) - string += f'prop_names={prop_names}\n' + string += f'prop_names=\'{prop_names}\'\n' prop_values = ' '.join([x.name for x in self.prop_values]) - string += f'prop_values={prop_values}\n' + string += f'prop_values=\'{prop_values}\'\n' if self.block: string += f'block="{self.block}"\n' string += '[]\n' From 6406b7a385b2acdf19aea78dc73d99beff0ec85e Mon Sep 17 00:00:00 2001 From: amna-khan Date: Thu, 18 May 2023 18:05:49 +0100 Subject: [PATCH 3/4] added problem block to be written in string --- moose/moose.py | 1 + 1 file changed, 1 insertion(+) diff --git a/moose/moose.py b/moose/moose.py index f9067e1..7acbaf4 100644 --- a/moose/moose.py +++ b/moose/moose.py @@ -45,6 +45,7 @@ def write(self, filename): file = open(filename,'w') # first the mesh block if self.mesh: file.write(indent(self.mesh.__str__())) + if self.problem: file.write(indent(self.problem.__str__())) if self.global_params: file.write(indent(self.global_params.__str__())) if self.variables: file.write(indent(self.variables.__str__())) if self.aux_variables: file.write(indent(self.aux_variables.__str__())) From fabebd3fcc570ae5a0af2886a4e96e912b0cafd5 Mon Sep 17 00:00:00 2001 From: amna-khan Date: Sat, 20 May 2023 23:17:46 +0100 Subject: [PATCH 4/4] moose can auto assign order and family, so isn't always needed to be specified --- moose/variables.py | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/moose/variables.py b/moose/variables.py index 3e471e8..68090a8 100644 --- a/moose/variables.py +++ b/moose/variables.py @@ -27,27 +27,29 @@ class Family(IntEnum): RATIONAL_BERNSTEIN = auto() SIDE_HIERARCHIC = auto() -class Variable: - def __init__(self, name, order=None, **kwargs): +class Variable(): + def __init__(self, name="", order=None, family=None, block="", initial_condition=""): self.name = name - self.order = order - self.kwargs = kwargs + self.order = Order(order) if order is not None else None + self.family = Family(family) if family is not None else None + self.block = block + self.initial_condition = initial_condition def __str__(self): string = f'[{self.name}]\n' - if self.order is not None: - string += f'order = {Order(self.order).name}\n' - if 'family' in self.kwargs: - string += f'family = {self.kwargs["family"].name}\n' - if 'initial_condition' in self.kwargs: - string += f'initial_condition = "{self.kwargs["initial_condition"]}"\n' - if 'block' in self.kwargs and self.kwargs['block'] is not None: - string += f'block = "{self.kwargs["block"]}"\n' - string += f'[]\n' + if self.order: + string += f'order = {self.order.name}\n' + if self.family: + string += f'family = {self.family.name}\n' + if self.initial_condition: + string += f'initial_condition = "{self.initial_condition}"\n' + if self.block: + string += f'block = "{self.block}"\n' + string += '[]\n' return string - + class AuxVariable(Variable): - def __init__(self, name="",**kwargs): + def __init__(self, name="", order=None, family=None, block="", initial_condition=""): super().__init__(name, order, family, block, initial_condition) class Variables(): @@ -55,8 +57,8 @@ def __init__(self): self.name = "Variables" self.variables = {} - def add_variable(self, name, order=None, **kwargs): - variable = Variable(name=name, order=order, **kwargs) + def add_variable(self, name, order=None, family=None, block="", initial_condition=""): + variable = Variable(name=name, order=order, family=family, block=block, initial_condition=initial_condition) if variable.name in self.variables.keys(): print("variable name already in use")