Skip to content

Commit

Permalink
0927
Browse files Browse the repository at this point in the history
  • Loading branch information
tian50 committed Sep 27, 2021
1 parent 1ae2605 commit 4ae36cc
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 39 deletions.
47 changes: 29 additions & 18 deletions msgpi/csda.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ class CrossSectionDesignAnalysis(DesignAnalysis):

class_name = 'cs'

def __init__(self, name='', inputs={}, outputs={}, settings={}, prepros=[], postpros=[], analyses=[], logger=None, parent=None):
DesignAnalysis.__init__(self, inputs, outputs, settings, prepros, postpros, analyses, logger, parent)
def __init__(self, name='', inputs={}, outputs={}, settings={}, prepros=[], postpros=[], analyses=[], logger=None, parent=None, debug=None):
DesignAnalysis.__init__(self, inputs, outputs, settings, prepros, postpros, analyses, logger, parent, debug)
# self.cs = cs
# self.job_args = job_args

Expand All @@ -27,6 +27,7 @@ def __init__(self, name='', inputs={}, outputs={}, settings={}, prepros=[], post
self.settings['integrated'] = False
self.settings['timeout'] = 30
self.settings['scrnout'] = False
self.settings['substitution'] = True

self.cs = mcs.CrossSection(self.name)

Expand Down Expand Up @@ -67,20 +68,21 @@ def run(self):
# ----------------
self.preprocess()

# Substitute parameters
# ---------------------
try:
di.dprepro(
template=self.inputs['template'],
output=self.inputs['input_file'],
include=self.inputs
)
except KeyError:
pass
if self.settings['substitution']:
# Substitute parameters
# ---------------------
try:
di.dprepro(
template=self.inputs['template'],
output=self.inputs['input_file'],
include=self.inputs
)
except KeyError:
pass

# Solve
# -----
self.cs.props = sga.solve(
results = sga.solve(
self.inputs['input_file'],
self.settings['analysis'],
ppcmd,
Expand All @@ -91,11 +93,20 @@ def run(self):
logger=self.logger
)

# Extract beam properties
# -----------------------
self.logger.debug('extracting beam properties...')
for n in self.outputs['beam_properties']:
self.outputs[n] = self.cs.props.get(n)
if self.settings['analysis'] == 0 or self.settings['analysis'] == 'h' or self.settings['analysis'] == '':
# Extract beam properties
# -----------------------
self.cs.props = results
self.logger.debug('extracting beam properties...')
for n in self.outputs['beam_properties']:
self.outputs[n] = self.cs.props.get(n)

elif self.settings['analysis'] == 3 or self.settings['analysis'] == 'fi':
# Initial failure indices and strength ratios
self.cs.fis = results[0]
self.cs.srs = results[1]
self.cs.sr = results[2]
self.outputs['sr'] = self.cs.sr


# Post-process data
Expand Down
37 changes: 27 additions & 10 deletions msgpi/dakota/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,22 @@


class DakotaDesignAnalysis(mda.DesignAnalysis):

class_name = 'dakota'

def __init__(self):
mda.DesignAnalysis.__init__(self)
self.evid = 0
self.inputs = {}
self.outputs = {
"interim": {},
"final": []
}
self.settings = {}
self.interface_args = {}
self.analyses = []
self.classes = []
self.objects = []
self.log_prompt = ''
self.logger = None
self.das = {}
self.sgs = {}
self.sg_names = []


def initialize(self, fn_json_args):
Expand All @@ -39,6 +37,11 @@ def initialize(self, fn_json_args):

self.updateDataAll(self.interface_args)

try:
self.debug = self.settings['debug']
except KeyError:
pass

# ------------------------------------------------------------
# FROM DAKOTA
# ------------------------------------------------------------
Expand Down Expand Up @@ -186,15 +189,21 @@ def analysis(self):
if bld_name in ['class', 'all']:
continue
else:
bda = mbda.BladeDesignAnalysis(bld_name, logger=self.logger, parent=self)
try:
bda = self.children[bld_name]
except KeyError:
bda = mbda.BladeDesignAnalysis(bld_name, logger=self.logger, parent=self, debug=self.debug)

bda.addExtraData(bld_all)
bda.addExtraData(bld_data)

# bda.summary('BLADE')
# if self.settings['debug']:
# bda.summary('summary before run')

bda.run()

# bda.summary('BLADE')
if self.settings['debug']:
bda.summary('summary after run')

# dda.summary('DAKOTA')

Expand All @@ -211,14 +220,22 @@ def analysis(self):
except KeyError:
cs_data = {}

csda = mcsda.CrossSectionDesignAnalysis(cs_name, logger=self.logger, parent=self)
try:
csda = self.children[cs_name]
except KeyError:
csda = mcsda.CrossSectionDesignAnalysis(cs_name, logger=self.logger, parent=self, debug=self.debug)

csda.addExtraData(cs_all)
csda.addExtraData(cs_data)

# csda.summary(f'CSDA {cs_name}')
# if self.settings['debug']:
# csda.summary('summary before run')

csda.run()

if self.settings['debug']:
csda.summary('summary after run')

return


Expand Down
47 changes: 40 additions & 7 deletions msgpi/design_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class DesignAnalysis(metaclass=abc.ABCMeta):

class_name = ''

def __init__(self, inputs={}, outputs={}, settings={}, prepros=[], postpros=[], analyses=[], logger=None, parent=None):
def __init__(self, inputs={}, outputs={}, settings={}, prepros=[], postpros=[], analyses=[], logger=None, parent=None, debug=False):
# self.object = object
self.name = ''
self.design = None
Expand Down Expand Up @@ -48,12 +48,18 @@ def __init__(self, inputs={}, outputs={}, settings={}, prepros=[], postpros=[],
self.parent: DesignAnalysis = parent
self.sg_names = []
self.sgs = {}
self.children = {}

self.debug = debug

def summary(self, title=''):

def summary(self, title='SUMARY'):
pp = pprint.PrettyPrinter(indent=1, width=-1)
print('\n', title)
print('----------')
print()
print('========================================')
print(title)
print(self.class_name, ':', self.name)
print('----------------------------------------')
print('settings')
pp.pprint(self.settings)
print('\ninputs')
Expand All @@ -66,11 +72,16 @@ def summary(self, title=''):
pp.pprint(self.postpros)
print('\nsg names')
pp.pprint(self.sg_names)
print('\nchildren')
pp.pprint(self.children)
print('\nparent:')
print(self.parent)
# print('\nanalyses')
# for da in self.analyses:
# if isinstance(da, DesignAnalysis):
# da.summary()
print('\n----------')
print('========================================')
print()


def addExtraData(self, data):
Expand All @@ -82,8 +93,30 @@ def updateData(self, inputs={}, outputs={}, settings={}, prepros=[], postpros=[]
self.inputs.update(inputs)
self.outputs.update(outputs)
self.settings.update(settings)
self.prepros += prepros
self.postpros += postpros
# self.prepros += prepros
for new_pp in prepros:
found_old = False
for old_pp in self.prepros:
if old_pp['function'] == new_pp['function']:
found_old = True
break
if found_old:
old_pp.update(new_pp)
else:
self.prepros.append(new_pp)

# self.postpros += postpros
for new_pp in postpros:
found_old = False
for old_pp in self.postpros:
if old_pp['function'] == new_pp['function']:
found_old = True
break
if found_old:
old_pp.update(new_pp)
else:
self.postpros.append(new_pp)

self.analyses += analyses

return
Expand Down
9 changes: 5 additions & 4 deletions msgpi/ms/bda.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,13 @@ class BladeDesignAnalysis(DesignAnalysis):

class_name = 'blade'

def __init__(self, name='', inputs={}, outputs={}, settings={}, prepros=[], postpros=[], analyses=[], logger=None, parent=None):
DesignAnalysis.__init__(self, inputs, outputs, settings, prepros, postpros, analyses, logger, parent)
def __init__(self, name='', inputs={}, outputs={}, settings={}, prepros=[], postpros=[], analyses=[], logger=None, parent=None, debug=False):
DesignAnalysis.__init__(self, inputs, outputs, settings, prepros, postpros, analyses, logger, parent=parent, debug=debug)

self.name = name

self.blade = None

self.sg_names = []


def generateDesign(self):
return
Expand All @@ -38,6 +36,9 @@ def run(self):
# ----------------
self.preprocess()

if self.debug:
self.summary()

# Substitute parameters
# ---------------------
try:
Expand Down
3 changes: 3 additions & 0 deletions msgpi/sg/cross_section.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,9 @@ def __init__(self, name):

self.sg = None #: :obj:`msgpi.sg.StructureGene`: Structure gene
self.props = None #: :obj:`msgpi.sg.BeamProperty`: Beam property
self.fis = None #: float: Element failure indices
self.srs = None #: float: Element strength ratios
self.sr = None #: float: Sectional strength ratio

# Design
self.params = {}
Expand Down

0 comments on commit 4ae36cc

Please sign in to comment.