from __future__ import (nested_scopes, generators, division, absolute_import,
print_function, unicode_literals)
from six.moves import zip, range
from itertools import count
from pyNastran.bdf.cards.utils import wipe_empty_fields
from pyNastran.bdf.bdfInterface.assign_type import interpret_value
from pyNastran.bdf.field_writer_8 import print_field, print_card_8
[docs]def assert_fields(card1, card2):
try:
fields1 = wipe_empty_fields(card1.repr_fields())
fields2 = wipe_empty_fields(card2.repr_fields())
except:
print("card1 = \n%s" % (card1))
print("card2 = \n%s" % (card2))
raise
if len(fields1) != len(fields2):
msg = ('len(fields1)=%s len(fields2)=%s\n%r\n%r\n%s\n%s'
% (len(fields1), len(fields2), fields1, fields2,
print_card_8(fields1), print_card_8(fields2)))
raise RuntimeError(msg)
for (i, field1, field2) in zip(count(), fields1, fields2):
value1a = print_field(field1)
value2a = print_field(field2)
if value1a != value2a:
value1 = print_field(interpret_value(value1a))
value2 = print_field(interpret_value(value2a))
if value1 != value2:
msg = 'value1 != value2\n'
msg += ('cardName=%s ID=%s i=%s field1=%r field2=%r value1=%r '
'value2=%r\n%r\n%r' % (fields1[0], fields1[1], i,
field1, field2, value1, value2,
fields1, fields2))
raise RuntimeError(msg)
[docs]def compare_card_content(fem1, fem2):
assert len(fem1.params) == len(fem2.params), 'len(fem1.params)=%i len(fem2.params)=%i' % (len(fem1.params), len(fem2.params))
assert len(fem1.nodes) == len(fem2.nodes), 'len(fem1.nodes)=%i len(fem2.nodes)=%i' % (len(fem1.nodes), len(fem2.nodes))
assert len(fem1.elements) == len(fem2.elements), 'len(fem1.elements)=%i len(fem2.elements)=%i' % (len(fem1.elements), len(fem2.elements))
assert len(fem1.rigidElements) == len(fem2.rigidElements), 'len(fem1.rigidElements)=%i len(fem2.rigidElements)=%i' % (len(fem1.rigidElements), len(fem2.rigidElements))
assert len(fem1.properties) == len(fem2.properties), 'len(fem1.properties)=%i len(fem2.properties)=%i' % (len(fem1.properties), len(fem2.properties))
assert len(fem1.materials) == len(fem2.materials), 'len(fem1.materials)=%i len(fem2.materials)=%i' % (len(fem1.materials), len(fem2.materials))
assert len(fem1.creepMaterials) == len(fem2.creepMaterials), 'len(fem1.creepMaterials)=%i len(fem2.creepMaterials)=%i' % (len(fem1.creepMaterials), len(fem2.creepMaterials))
assert len(fem1.loads) == len(fem2.loads), 'len(fem1.loads)=%i len(fem2.loads)=%i' % (len(fem1.loads), len(fem2.loads))
assert len(fem1.coords) == len(fem2.coords), 'len(fem1.coords)=%i len(fem2.coords)=%i' % (len(fem1.coords), len(fem2.coords))
assert len(fem1.spcs) == len(fem2.spcs), 'len(fem1.spcs)=%i len(fem2.spcs)=%i' % (len(fem1.spcs), len(fem2.spcs))
assert len(fem1.spcadds) == len(fem2.spcadds), 'len(fem1.spcadds)=%i len(fem2.spcadds)=%i' % (len(fem1.spcadds), len(fem2.spcadds))
assert len(fem1.mpcs) == len(fem2.mpcs), 'len(fem1.mpcs)=%i len(fem2.mpcs)=%i' % (len(fem1.mpcs), len(fem2.mpcs))
assert len(fem1.mpcadds) == len(fem2.mpcadds), 'len(fem1.mpcadds)=%i len(fem2.mpcadds)=%i' % (len(fem1.mpcadds), len(fem2.mpcadds))
assert len(fem1.dareas) == len(fem2.dareas), 'len(fem1.dareas)=%i len(fem2.dareas)=%i' % (len(fem1.dareas), len(fem2.dareas))
assert len(fem1.nlparms) == len(fem2.nlparms), 'len(fem1.nlparms)=%i len(fem2.nlparms)=%i' % (len(fem1.nlparms), len(fem2.nlparms))
assert len(fem1.tsteps) == len(fem2.tsteps), 'len(fem1.tsteps)=%i len(fem2.tsteps)=%i' % (len(fem1.tsteps), len(fem2.tsteps))
assert len(fem1.tstepnls) == len(fem2.tstepnls), 'len(fem1.tstepnls)=%i len(fem2.tstepnls)=%i' % (len(fem1.tstepnls), len(fem2.tstepnls))
assert len(fem1.dmigs) == len(fem2.dmigs), 'len(fem1.dmigs)=%i len(fem2.dmigs)=%i' % (len(fem1.dmigs), len(fem2.dmigs))
assert len(fem1.dequations) == len(fem2.dequations), 'len(fem1.dequations)=%i len(fem2.dequations)=%i' % (len(fem1.dequations), len(fem2.dequations))
assert len(fem1.frequencies) == len(fem2.frequencies), 'len(fem1.frequencies)=%i len(fem2.frequencies)=%i' % (len(fem1.frequencies), len(fem2.frequencies))
assert len(fem1.sets) == len(fem2.sets), 'len(fem1.sets)=%i len(fem2.sets)=%i' % (len(fem1.sets), len(fem2.sets))
assert len(fem1.setsSuper) == len(fem2.setsSuper), 'len(fem1.setsSuper)=%i len(fem2.setsSuper)=%i' % (len(fem1.setsSuper), len(fem2.setsSuper))
assert len(fem1.tables) == len(fem2.tables), 'len(fem1.tables)=%i len(fem2.tables)=%i' % (len(fem1.tables), len(fem2.tables))
assert len(fem1.randomTables) == len(fem2.randomTables), 'len(fem1.randomTables)=%s len(fem2.randomTables)=%s' % (len(fem1.randomTables), len(fem2.randomTables))
assert len(fem1.methods) == len(fem2.methods), 'len(fem1.methods)=%s len(fem2.methods)=%s' % (len(fem1.methods), len(fem2.methods))
assert len(fem1.cMethods) == len(fem2.cMethods), 'len(fem1.cMethods)=%s len(fem2.cMethods)=%s' % (len(fem1.cMethods), len(fem2.cMethods))
for key in fem1.params:
card1 = fem1.params[key]
card2 = fem2.params[key]
assert_fields(card1, card2)
for key in fem1.nodes:
card1 = fem1.nodes[key]
card2 = fem2.nodes[key]
assert_fields(card1, card2)
for key in fem1.elements:
card1 = fem1.elements[key]
card2 = fem2.elements[key]
assert_fields(card1, card2)
for key in fem1.rigidElements:
card1 = fem1.rigidElements[key]
card2 = fem2.rigidElements[key]
assert_fields(card1, card2)
for key in fem1.properties:
card1 = fem1.properties[key]
card2 = fem2.properties[key]
assert_fields(card1, card2)
for key in fem1.materials:
card1 = fem1.materials[key]
card2 = fem2.materials[key]
assert_fields(card1, card2)
for key in fem1.creepMaterials:
card1 = fem1.creepMaterials[key]
card2 = fem2.creepMaterials[key]
assert_fields(card1, card2)
for key in fem1.loads:
loads1 = fem1.loads[key]
loads2 = fem2.loads[key]
for (card1, card2) in zip(loads1, loads2):
assert_fields(card1, card2)
for key in fem1.coords:
card1 = fem1.coords[key]
card2 = fem2.coords[key]
assert_fields(card1, card2)
#for key in fem1.spcs:
#card1 = fem1.spcs[key]
#card2 = fem2.spcs[key]
#assert_fields(card1, card2)
#for key in fem1.spcadds:
#card1 = fem1.spcadds[key]
#card2 = fem2.spcadds[key]
#assert_fields(card1, card2)
#for key in fem1.mpcs:
#card1 = fem1.mpcs[key]
#card2 = fem2.mpcs[key]
#assert_fields(card1, card2)
#for key in fem1.mpcadds:
#card1 = fem1.mpcadds[key]
#card2 = fem2.mpcadds[key]
#assert_fields(card1, card2)
for key in fem1.dareas:
card1 = fem1.dareas[key]
card2 = fem2.dareas[key]
assert_fields(card1, card2)
for key in fem1.nlparms:
card1 = fem1.nlparms[key]
card2 = fem2.nlparms[key]
assert_fields(card1, card2)
for key in fem1.tsteps:
card1 = fem1.tsteps[key]
card2 = fem2.tsteps[key]
assert_fields(card1, card2)
for key in fem1.tstepnls:
card1 = fem1.tstepnls[key]
card2 = fem2.tstepnls[key]
assert_fields(card1, card2)
for key in fem1.dequations:
card1 = fem1.dequations
card2 = fem2.dequations
assert_fields(card1, card2)
for key in fem1.frequencies:
card1 = fem1.frequencies[key]
card2 = fem2.frequencies[key]
assert_fields(card1, card2)
for key in fem1.sets:
card1 = fem1.sets[key]
card2 = fem2.sets[key]
assert card1 == card2, card1.symmetric_difference(card2)
#assert_fields(card1, card2)
for key in fem1.setsSuper:
card1 = fem1.setsSuper[key]
card2 = fem2.setsSuper[key]
assert_fields(card1, card2)
for key in fem1.tables:
card1 = fem1.tables[key]
card2 = fem2.tables[key]
assert_fields(card1, card2)
for key in fem1.randomTables:
card1 = fem1.randomTables[key]
card2 = fem2.randomTables[key]
assert_fields(card1, card2)
for key in fem1.methods:
card1 = fem1.methods[key]
card2 = fem2.methods[key]
assert_fields(card1, card2)
for key in fem1.cMethods:
card1 = fem1.cMethods[key]
card2 = fem2.cMethods[key]
assert_fields(card1, card2)
compare_matrices(fem1, fem2)
compare_optimization_content(fem1, fem2)
compare_aero_content(fem1, fem2)
compare_thermal_content(fem1, fem2)
[docs]def compare_matrices(fem1, fem2):
for key in fem1.dmigs:
card1 = fem1.dmigs[key]
card2 = fem2.dmigs[key]
assert str(card1) == str(card2)
#assert_fields(card1, card2)
#for key in fem1.dmis:
#card1 = fem1.dmis[key]
#card2 = fem2.dmis[key]
#assert str(card1) == str(card2)
for key in fem1.dmijs:
card1 = fem1.dmijs[key]
card2 = fem2.dmijs[key]
assert str(card1) == str(card2)
for key in fem1.dmijis:
card1 = fem1.dmijis[key]
card2 = fem2.dmijis[key]
assert str(card1) == str(card2)
for key in fem1.dmiks:
card1 = fem1.dmiks[key]
card2 = fem2.dmiks[key]
assert str(card1) == str(card2)
[docs]def compare_thermal_content(fem1, fem2):
assert len(fem1.bcs) == len(fem2.bcs)
assert len(fem1.thermalMaterials) == len(fem2.thermalMaterials)
assert len(fem1.phbdys) == len(fem2.phbdys)
assert len(fem1.convectionProperties) == len(fem2.convectionProperties)
for key in fem1.bcs:
BCs1 = fem1.bcs[key]
BCs2 = fem2.bcs[key]
for (card1, card2) in zip(BCs1, BCs2):
assert_fields(card1, card2)
for key in fem1.thermalMaterials:
card1 = fem1.thermalMaterials[key]
card2 = fem2.thermalMaterials[key]
assert_fields(card1, card2)
for key in fem1.phbdys:
card1 = fem1.phbdys[key]
card2 = fem2.phbdys[key]
assert_fields(card1, card2)
for key in fem1.convectionProperties:
card1 = fem1.convectionProperties[key]
card2 = fem2.convectionProperties[key]
[docs]def compare_optimization_content(fem1, fem2):
assert len(fem1.dconstrs) == len(fem2.dconstrs)
assert len(fem1.desvars) == len(fem2.desvars)
assert len(fem1.ddvals) == len(fem2.ddvals)
assert len(fem1.dresps) == len(fem2.dresps)
assert len(fem1.dvprels) == len(fem2.dvprels)
for key in fem1.dconstrs:
card1 = fem1.dconstrs[key]
card2 = fem2.dconstrs[key]
assert_fields(card1, card2)
for key in fem1.desvars:
card1 = fem1.desvars[key]
card2 = fem2.desvars[key]
assert_fields(card1, card2)
for key in fem1.ddvals:
card1 = fem1.ddvals[key]
card2 = fem2.ddvals[key]
assert_fields(card1, card2)
for key in fem1.dresps:
card1 = fem1.dresps[key]
card2 = fem2.dresps[key]
assert_fields(card1, card2)
for key in fem1.dvprels:
card1 = fem1.dvprels[key]
card2 = fem2.dvprels[key]
assert_fields(card1, card2)
[docs]def compare_aero_content(fem1, fem2):
assert len(fem1.caeros) == len(fem2.caeros)
assert len(fem1.paeros) == len(fem2.paeros)
assert len(fem1.aero) == len(fem2.aero)
assert len(fem1.aeros) == len(fem2.aeros)
assert len(fem1.aeparams) == len(fem2.aeparams)
assert len(fem1.aelinks) == len(fem2.aelinks)
assert len(fem1.aelists) == len(fem2.aelists)
assert len(fem1.aesurfs) == len(fem2.aesurfs)
assert len(fem1.aestats) == len(fem2.aestats)
assert len(fem1.gusts) == len(fem2.gusts)
assert len(fem1.flfacts) == len(fem2.flfacts)
assert len(fem1.flutters) == len(fem2.flutters)
assert len(fem1.mkaeros) == len(fem2.mkaeros)
assert len(fem1.splines) == len(fem2.splines)
assert len(fem1.trims) == len(fem2.trims)
for key in fem1.caeros:
card1 = fem1.caeros[key]
card2 = fem2.caeros[key]
assert_fields(card1, card2)
for key in fem1.paeros:
card1 = fem1.paeros[key]
card2 = fem2.paeros[key]
assert_fields(card1, card2)
for key in fem1.aero:
card1 = fem1.aero[key]
card2 = fem2.aero[key]
assert_fields(card1, card2)
for key in fem1.aeros:
card1 = fem1.aeros[key]
card2 = fem2.aeros[key]
assert_fields(card1, card2)
for key in fem1.aeparams:
card1 = fem1.aeparams[key]
card2 = fem2.aeparams[key]
assert_fields(card1, card2)
for key in fem1.aelinks:
aelinks1 = fem1.aelinks[key]
aelinks2 = fem2.aelinks[key]
for (card1, card2) in zip(aelinks1, aelinks2):
assert_fields(card1, card2)
for key in fem1.aelists:
card1 = fem1.aelists[key]
card2 = fem2.aelists[key]
assert_fields(card1, card2)
for key in fem1.aesurfs:
card1 = fem1.aesurfs[key]
card2 = fem2.aesurfs[key]
assert_fields(card1, card2)
for key in fem1.aestats:
card1 = fem1.aestats[key]
card2 = fem2.aestats[key]
assert_fields(card1, card2)
for key in fem1.gusts:
card1 = fem1.gusts[key]
card2 = fem2.gusts[key]
assert_fields(card1, card2)
for key in fem1.flfacts:
card1 = fem1.flfacts[key]
card2 = fem2.flfacts[key]
assert_fields(card1, card2)
for key in fem1.flutters:
card1 = fem1.flutters[key]
card2 = fem2.flutters[key]
assert_fields(card1, card2)
for i in range(len(fem1.mkaeros)):
card1 = fem1.mkaeros[i]
card2 = fem2.mkaeros[i]
assert_fields(card1, card2)
for key in fem1.splines:
card1 = fem1.splines[key]
card2 = fem2.splines[key]
assert_fields(card1, card2)
for key in fem1.trims:
card1 = fem1.trims[key]
card2 = fem2.trims[key]
assert_fields(card1, card2)