From 92a3716896b55b6af6e52b9e81f06be98034a068 Mon Sep 17 00:00:00 2001 From: Su Tian Date: Tue, 10 Aug 2021 17:07:00 -0400 Subject: [PATCH] 0810 --- msgpi/cross_section.py | 24 +++++++------- msgpi/csda.py | 6 ++-- msgpi/design_analysis.py | 70 ++++++++++++++++++++++++++++++++++++++++ msgpi/sgda.py | 31 ------------------ 4 files changed, 85 insertions(+), 46 deletions(-) create mode 100644 msgpi/design_analysis.py delete mode 100644 msgpi/sgda.py diff --git a/msgpi/cross_section.py b/msgpi/cross_section.py index 395fe00..293e0e4 100644 --- a/msgpi/cross_section.py +++ b/msgpi/cross_section.py @@ -101,18 +101,18 @@ def __init__(self, name): self.vlasov = 0 #: Flag for Vlasov model # Effective properties - self.mc = None #: Mass center - self.gc = None #: Geometric center - self.tc = None #: Tension center - self.sc = None #: Shear center - - self.mass = None #: Mass matrix (6x6) - self.masc = None #: Mass matrix at mass center (6x6) - self.eden = None #: Effective density (mass per unit length) - self.ecsm = None #: Effective classical stiffness matrix (4x4) - self.eccm = None #: Effective classical compliance matrix (4x4) - self.etsm = None #: Effective timoshenko stiffness matrix (6x6) - self.etcm = None #: Effective timoshenko compliance matrix (6x6) + # self.mc = None #: Mass center + # self.gc = None #: Geometric center + # self.tc = None #: Tension center + # self.sc = None #: Shear center + + # self.mass = None #: Mass matrix (6x6) + # self.masc = None #: Mass matrix at mass center (6x6) + # self.eden = None #: Effective density (mass per unit length) + # self.ecsm = None #: Effective classical stiffness matrix (4x4) + # self.eccm = None #: Effective classical compliance matrix (4x4) + # self.etsm = None #: Effective timoshenko stiffness matrix (6x6) + # self.etcm = None #: Effective timoshenko compliance matrix (6x6) # Global results for recovery/dehomogenization self.gdisplacements = np.zeros(3) #: Global displacements [u1, u2, u3] diff --git a/msgpi/csda.py b/msgpi/csda.py index 65304c2..9c05a38 100644 --- a/msgpi/csda.py +++ b/msgpi/csda.py @@ -1,14 +1,14 @@ import platform -from msgpi.sgda import SGDesignAnalysis +from msgpi.design_analysis import DesignAnalysis import msgpi.cross_section as mcs import msgpi.analysis as sga import dakota.interfacing as di -class CrossSectionDesignAnalysis(SGDesignAnalysis): +class CrossSectionDesignAnalysis(DesignAnalysis): def __init__(self, cs: mcs.CrossSection, inputs={}, outputs={}, prepros=[], postpros=[], config={}, logger=None): - SGDesignAnalysis.__init__(self, cs, inputs, outputs, config, prepros, postpros, logger) + DesignAnalysis.__init__(self, cs, inputs, outputs, config, prepros, postpros, logger) # self.cs = cs # self.job_args = job_args diff --git a/msgpi/design_analysis.py b/msgpi/design_analysis.py new file mode 100644 index 0000000..3ec037d --- /dev/null +++ b/msgpi/design_analysis.py @@ -0,0 +1,70 @@ +import msgpi.logger as mlog + + +class DesignAnalysis(): + + def __init__(self, object, inputs={}, outputs={}, settings={}, prepros=[], postpros=[], logger=None): + self.object = object + self.settings = settings + + self.inputs = inputs + self.outputs = outputs + + self.prepros = prepros + + """ + [ + { + 'function': function1, + 'args': [arg1, arg2, ...] + 'kwargs': { + 'kw1': arg1, + 'kw2': arg2, + ... + } + }, + ... + ] + """ + self.postpros = postpros + + if logger is None: + self.logger = mlog.initLogger(__name__) + else: + self.logger = logger + + + def preprocess(self): + self.logger.info('pre-processing...') + for p in self.prepros: + func = p['function'] + + try: + args = p['args'] + except KeyError: + args = [] + + try: + kwargs = p['kwargs'] + except KeyError: + kwargs = {} + + func(self.object, self.inputs, self.outputs, self.settings, self.logger, *args, **kwargs) + + + def postprocess(self): + self.logger.info('post-processing...') + for p in self.postpros: + func = p['function'] + + try: + args = p['args'] + except KeyError: + args = [] + + try: + kwargs = p['kwargs'] + except KeyError: + kwargs = {} + + func(self.object, self.inputs, self.outputs, self.settings, self.logger, *args, **kwargs) diff --git a/msgpi/sgda.py b/msgpi/sgda.py deleted file mode 100644 index 82adeb7..0000000 --- a/msgpi/sgda.py +++ /dev/null @@ -1,31 +0,0 @@ -import msgpi.logger as mlog - - -class SGDesignAnalysis(): - - def __init__(self, sg, inputs={}, outputs={}, config={}, prepros=[], postpros=[], logger=None): - self.sg = sg - self.config = config - - self.inputs = inputs - self.outputs = outputs - - self.prepros = prepros - self.postpros = postpros - - if logger is None: - self.logger = mlog.initLogger(__name__) - else: - self.logger = logger - - - def preprocess(self): - self.logger.info('pre-processing...') - for p in self.prepros: - p(self.sg, self.inputs, self.outputs, self.config, self.logger) - - - def postprocess(self): - self.logger.info('post-processing...') - for p in self.postpros: - p(self.sg, self.inputs, self.outputs, self.config, self.logger)