#pylint: disable=C0301,C0111
from __future__ import print_function
from six import iteritems
from six.moves import zip, range
import os
from codecs import open
from pyNastran import is_release
from pyNastran.utils import print_bad_path
from pyNastran.utils.log import get_logger
#strainEnergyDensity,TemperatureGradientObject
from pyNastran.op2.tables.oee_energy.oee_objects import RealStrainEnergy
from pyNastran.f06.tables.oes import OES
from pyNastran.f06.tables.oug import OUG
from pyNastran.f06.tables.oqg import OQG
from pyNastran.f06.tables.oef import OEF
from pyNastran.f06.tables.lama import LAMA
from pyNastran.f06.tables.max_min import MAX_MIN
from pyNastran.f06.f06Writer import F06Writer
from pyNastran.op2.tables.ogf_gridPointForces.ogf_Objects import RealGridPointForces
from pyNastran.utils import is_binary_file
from pyNastran.f06.errors import FatalError
[docs]class F06(OES, OEF, OUG, OQG, LAMA, MAX_MIN, F06Writer):
[docs] def stop_after_reading_grid_point_weight(self, stop=True):
self._stop_after_reading_mass = stop
[docs] def build_vectorization(self):
if self.is_vectorized:
table_types = self.get_table_types()
for table_type in table_types:
result = getattr(self, table_type)
for key, case in iteritems(result):
if hasattr(case, 'build_f06_vectorization'):
case.build_f06_vectorization()
def __init__(self, debug=False, log=None):
"""
Initializes the F06 object
:param makeGeom: reads the BDF tables (default=False)
:param debug: prints data about how the F06 was parsed (default=False)
:param log: a logging object to write debug messages to
.. seealso:: import logging
"""
OES.__init__(self)
OEF.__init__(self)
OQG.__init__(self)
OUG.__init__(self)
LAMA.__init__(self)
MAX_MIN.__init__(self)
F06Writer.__init__(self)
self.f06_filename = None
self._subtitle = None
self.card_count = {}
self._stop_after_reading_mass = False
self.stored_lines = []
self.i = 0
self.is_vectorized = False
#: the TITLE in the Case Control Deck
self.Title = ''
self._start_log(log, debug)
self._line_marker_map = {
'R E A L E I G E N V E C T O R N O' : self._real_eigenvectors,
'C O M P L E X E I G E N V E C T O R NO' : self._complex_eigenvectors,
'News file -' : self._executive_control_echo,
}
self._marker_map = {
#====================================================================
# debug info
'THIS PROGRAM IS CONFIDENTIAL AND A TRADE SECRET OF MSC.SOFTWARE CORPORATION. THE RECEIPT OR' : self._executive_control_echo,
'N A S T R A N F I L E A N D S Y S T E M P A R A M E T E R E C H O' : self._nastran_file_and_system_parameter_echo,
'N A S T R A N E X E C U T I V E C O N T R O L E C H O' : self._executive_control_echo,
'C A S E C O N T R O L E C H O' : self._case_control_echo,
'G R I D P O I N T S I N G U L A R I T Y T A B L E' : self._grid_point_singularity_table,
# dummy
'E L E M E N T G E O M E T R Y T E S T R E S U L T S S U M M A R Y' : self._executive_control_echo,
'M O D E L S U M M A R Y' : self._executive_control_echo,
'M O D E L S U M M A R Y BULK = 0' : self._executive_control_echo,
'F O R C E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._grid_point_singularity_table,
'G R I D P O I N T F O R C E B A L A N C E' : self._grid_point_force_balance,
'N A S T R A N S O U R C E P R O G R A M C O M P I L A T I O N SUBDMAP = SESTATIC' : self._executive_control_echo,
'U S E T D E F I N I T I O N T A B L E ( I N T E R N A L S E Q U E N C E , C O L U M N S O R T )' : self._executive_control_echo,
'N O N - L I N E A R I T E R A T I O N M O D U L E O U T P U T' : self._executive_control_echo,
'N A S T R A N D M A P / N D D L L I N K A G E E D I T O R' : self._executive_control_echo,
'N O N - L I N E A R I T E R A T I O N M O D U L E S O L U T I O N C O N T R O L D A T A' : self._executive_control_echo,
#====================================================================
# useful info
#'E L E M E N T G E O M E T R Y T E S T R E S U L T S S U M M A R Y'
'O U T P U T F R O M G R I D P O I N T W E I G H T G E N E R A T O R': self._grid_point_weight_generator,
# dummy
'MAXIMUM SPCFORCES' : self._get_max_spc_forces,
#'OLOAD RESULTANT' : self.getMaxMpcForces,
'MAXIMUM MPCFORCES' : self._get_max_mpc_forces,
'SPCFORCE RESULTANT' : self._get_max_mpc_forces,
'MPCFORCE RESULTANT' : self._get_max_mpc_forces,
'MAXIMUM DISPLACEMENTS' : self._get_max_displacements,
'MAXIMUM APPLIED LOADS' : self._get_max_applied_loads,
#====================================================================
# F06 specific tables
'S O R T E D B U L K D A T A E C H O' : self._executive_control_echo,
'I N P U T B U L K D A T A E C H O' : self._executive_control_echo,
#'N O N - D I M E N S I O N A L S T A B I L I T Y A N D C O N T R O L D E R I V A T I V E C O E F F I C I E N T S' : self._nondimensional_stability_and_control_deriv_coeffs,
#'N O N - D I M E N S I O N A L H I N G E M O M E N T D E R I V A T I V E C O E F F I C I E N T S' : self._nondimensional_hinge_moment_derivative_coeffs,
#'A E R O S T A T I C D A T A R E C O V E R Y O U T P U T T A B L E S' : self._aerostatic_data_recovery_output_tables,
#'S T R U C T U R A L M O N I T O R P O I N T I N T E G R A T E D L O A D S' : self._structural_monitor_point_integrated_loads,
'N O N - D I M E N S I O N A L S T A B I L I T Y A N D C O N T R O L D E R I V A T I V E C O E F F I C I E N T S' : self._executive_control_echo,
'N O N - D I M E N S I O N A L H I N G E M O M E N T D E R I V A T I V E C O E F F I C I E N T S' : self._executive_control_echo,
'A E R O S T A T I C D A T A R E C O V E R Y O U T P U T T A B L E S' : self._executive_control_echo,
'S T R U C T U R A L M O N I T O R P O I N T I N T E G R A T E D L O A D S' : self._executive_control_echo,
#'A E R O D Y N A M I C M O N I T O R P O I N T I N T E G R A T E D L O A D S' : self._executive_control_echo, # uncommmented => crash
'FLUTTER SUMMARY' : self._executive_control_echo,
#------------------------
#'R O T O R D Y N A M I C S S U M M A R Y' : self._executive_control_echo,
#'R O T O R D Y N A M I C S M A S S S U M M A R Y' : self._executive_control_echo,
#'R O T O R D Y N A M I C S S U M M A R Y' : self._executive_control_echo, # uncommmented => crash
#'R O T O R D Y N A M I C S M A S S S U M M A R Y' : self._executive_control_echo, # uncommmented => crash
'E I G E N V A L U E A N A L Y S I S S U M M A R Y (COMPLEX LANCZOS METHOD)' : self._executive_control_echo,
#'E I G E N V A L U E A N A L Y S I S S U M M A R Y (READ MODULE)' : self._executive_control_echo,
#------------------------
#====================================================================
# OUG tables
'R E A L E I G E N V A L U E S': self._real_eigenvalues,
'C O M P L E X E I G E N V A L U E S U M M A R Y':self._complex_eigenvalue_summary,
'D I S P L A C E M E N T V E C T O R' : self._displacement_vector,
'C O M P L E X D I S P L A C E M E N T V E C T O R' : self._complex_displacement_vector,
'F O R C E S O F S I N G L E - P O I N T C O N S T R A I N T' : self._forces_of_single_point_constraints,
'F O R C E S O F M U L T I P O I N T C O N S T R A I N T' : self._forces_of_multi_point_constraints,
'T E M P E R A T U R E V E C T O R' : self._temperature_vector,
'L O A D V E C T O R' : self._load_vector,
#'F I N I T E E L E M E N T T E M P E R A T U R E G R A D I E N T S A N D F L U X E S': self._temperature_gradients_and_fluxes,
#====================================================================
# OES O-D
# stress - good
'S T R E S S E S I N S C A L A R S P R I N G S ( C E L A S 1 )' : self._stress_in_celas1_elements,
'S T R E S S E S I N S C A L A R S P R I N G S ( C E L A S 2 )' : self._stress_in_celas2_elements,
'S T R E S S E S I N S C A L A R S P R I N G S ( C E L A S 3 )' : self._stress_in_celas3_elements,
'S T R E S S E S I N S C A L A R S P R I N G S ( C E L A S 4 )' : self._stress_in_celas4_elements,
'S T R E S S E S I N R O D E L E M E N T S ( C R O D )' : self._stress_in_crod_elements,
'S T R E S S E S I N R O D E L E M E N T S ( C T U B E )' : self._stress_in_ctube_elements,
'S T R E S S E S I N R O D E L E M E N T S ( C O N R O D )' : self._stress_in_conrod_elements,
'S T R E S S E S I N B A R E L E M E N T S ( C B A R )' : self._stress_in_cbar_elements,
'S T R E S S E S I N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._stress_in_ctria3_elements,
'S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._stress_in_cquad4_elements,
'S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 ) OPTION = BILIN' : self._stress_in_cquad4_bilinear_elements,
'S T R E S S E S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( T R I A 3 )': self._stress_in_composite_ctria3_elements,
'S T R E S S E S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( Q U A D 4 )': self._stress_in_composite_cquad4_elements,
'S T R E S S E S I N T E T R A H E D R O N S O L I D E L E M E N T S ( C T E T R A )' : self._stress_in_ctetra_elements,
'S T R E S S E S I N H E X A H E D R O N S O L I D E L E M E N T S ( H E X A )' : self._stress_in_chexa_elements,
'S T R E S S E S I N P E N T A H E D R O N S O L I D E L E M E N T S ( P E N T A )' : self._stress_in_cpenta_elements,
# strain - good
'S T R A I N S I N S C A L A R S P R I N G S ( C E L A S 1 )' : self._strain_in_celas1_elements,
'S T R A I N S I N S C A L A R S P R I N G S ( C E L A S 2 )' : self._strain_in_celas2_elements,
'S T R A I N S I N S C A L A R S P R I N G S ( C E L A S 3 )' : self._strain_in_celas3_elements,
'S T R A I N S I N S C A L A R S P R I N G S ( C E L A S 4 )' : self._strain_in_celas4_elements,
'S T R A I N S I N R O D E L E M E N T S ( C R O D )' : self._strain_in_crod_elements,
'S T R A I N S I N R O D E L E M E N T S ( C O N R O D )' : self._strain_in_conrod_elements,
'S T R A I N S I N B A R E L E M E N T S ( C B A R )' : self._strain_in_cbar_elements,
'S T R A I N S I N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._strain_in_ctria3_elements,
'S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._strain_in_cquad4_elements,
'S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 ) OPTION = BILIN' : self._strain_in_cquad4_bilinear_elements,
'S T R A I N S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( T R I A 3 )' : self._strain_in_composite_ctria3_elements,
'S T R A I N S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( Q U A D 4 )' : self._strain_in_composite_cquad4_elements,
'S T R A I N S I N T E T R A H E D R O N S O L I D E L E M E N T S ( C T E T R A )' : self._strain_in_ctetra_elements,
'S T R A I N S I N H E X A H E D R O N S O L I D E L E M E N T S ( H E X A )' : self._strain_in_chexa_elements,
'S T R A I N S I N P E N T A H E D R O N S O L I D E L E M E N T S ( P E N T A )' : self._strain_in_cpenta_elements,
# energy - good
'E L E M E N T S T R A I N E N E R G I E S' : self._element_strain_energies,
#====================================================================
# stress - not implemented
'S T R E S S D I S T R I B U T I O N I N B A R E L E M E N T S ( C B A R )' : self._executive_control_echo,
'S T R E S S E S I N B E N D E L E M E N T S ( C B E N D )' : self._executive_control_echo,
'S T R E S S E S I N B E A M E L E M E N T S ( C B E A M )' : self._executive_control_echo,
'S T R E S S E S ( F O R C E S ) I N B U S H 1 D E L E M E N T S ( C B U S H 1 D )' : self._executive_control_echo,
'S T R E S S E S I N B U S H E L E M E N T S ( C B U S H )' : self._executive_control_echo,
'S T R E S S E S I N T R I A X 6 E L E M E N T S' : self._executive_control_echo,
'S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 8 )' : self._executive_control_echo,
'S T R E S S E S I N T R I A N G U L A R E L E M E N T S ( T R I A 6 )' : self._executive_control_echo,
'S T R E S S E S I N T R I A N G U L A R E L E M E N T S ( T R I A R )' : self._executive_control_echo,
'S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R )' : self._executive_control_echo,
'S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R ) OPTION = CENTER' : self._executive_control_echo,
'S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 ) OPTION = CUBIC' : self._executive_control_echo,
'S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 ) OPTION = SGAGE' : self._executive_control_echo,
'S T R E S S E S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( T R I A 6 )' : self._executive_control_echo,
'S T R E S S E S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( T R I A R )' : self._executive_control_echo,
'S T R E S S E S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( Q U A D 8 )' : self._executive_control_echo,
'S T R E S S E S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( Q U A D R )' : self._executive_control_echo,
# strain - not implemented
'S T R A I N S I N B U S H E L E M E N T S ( C B U S H )' : self._executive_control_echo,
'S T R A I N D I S T R I B U T I O N I N B A R E L E M E N T S ( C B A R )' : self._executive_control_echo,
'S T R A I N S I N B E A M E L E M E N T S ( C B E A M )' : self._executive_control_echo,
'S T R A I N S I N B E N D E L E M E N T S ( C B E N D )' : self._executive_control_echo,
'S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 8 )' : self._executive_control_echo,
'S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R )' : self._executive_control_echo,
'S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R ) OPTION = CENTER' : self._executive_control_echo,
'S T R A I N S I N T R I A N G U L A R E L E M E N T S ( T R I A 6 )' : self._executive_control_echo,
'S T R A I N S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( Q U A D 8 )' : self._executive_control_echo,
# other real - not implemented
'S T R E S S E S I N U S E R E L E M E N T S (CDUM8)' : self._executive_control_echo,
'S T R E S S E S I N U S E R E L E M E N T S (CDUM9)' : self._executive_control_echo,
'E L E M E N T S T R A I N E N E R G I E S ( A V E R A G E )' : self._executive_control_echo,
'E L E M E N T S T R E S S D I S C O N T I N U I T I E S - - S U R F A C E 99' : self._executive_control_echo,
# FORCE - not implemented
'F O R C E S I N S C A L A R S P R I N G S ( C E L A S 1 )' : self._executive_control_echo,
'F O R C E S I N S C A L A R S P R I N G S ( C E L A S 2 )' : self._executive_control_echo,
'F O R C E S I N S C A L A R S P R I N G S ( C E L A S 3 )' : self._executive_control_echo,
'F O R C E S I N S C A L A R S P R I N G S ( C E L A S 4 )' : self._executive_control_echo,
'F O R C E S I N G A P E L E M E N T S ( C G A P )' : self._executive_control_echo,
'F O R C E D I S T R I B U T I O N I N B A R E L E M E N T S ( C B A R )' : self._executive_control_echo,
'F O R C E S I N B A R E L E M E N T S ( C B A R )' : self._executive_control_echo,
'F O R C E S I N B E A M E L E M E N T S ( C B E A M )' : self._executive_control_echo,
'F O R C E S I N B E N D E L E M E N T S ( C B E N D )' : self._executive_control_echo,
'F O R C E S I N B U S H E L E M E N T S ( C B U S H )' : self._executive_control_echo,
'F O R C E S I N R O D E L E M E N T S ( C R O D )' : self._forces_in_crod_elements,
'F O R C E S I N R O D E L E M E N T S ( C T U B E )' : self._forces_in_ctube_elements,
'F O R C E S I N R O D E L E M E N T S ( C O N R O D )' : self._forces_in_conrod_elements,
'F O R C E S A C T I N G O N S H E A R P A N E L E L E M E N T S (CSHEAR)' : self._executive_control_echo,
'F O R C E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 ) OPTION = BILIN' : self._forces_in_cquad4s_bilinear,
'F O R C E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 ) OPTION = CUBIC' : self._executive_control_echo,
'F O R C E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 8 )' : self._executive_control_echo,
'F O R C E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R )' : self._executive_control_echo,
'F O R C E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R ) OPTION = CENTER' : self._executive_control_echo,
'F O R C E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 ) OPTION = SGAGE' : self._executive_control_echo,
'F O R C E S I N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
'F O R C E S I N T R I A N G U L A R E L E M E N T S ( T R I A 6 )' : self._executive_control_echo,
'F O R C E S I N T R I A N G U L A R E L E M E N T S ( T R I A R )' : self._executive_control_echo,
# thermal forces
'H E A T F L O W I N R O D E L E M E N T S ( C R O D )' : self._executive_control_echo,
'H E A T F L O W I N R O D E L E M E N T S ( C O N R O D )' : self._executive_control_echo,
'H E A T F L O W I N R O D E L E M E N T S ( C T U B E )' : self._executive_control_echo,
'H E A T F L O W I N B A R E L E M E N T S ( C B A R )' : self._executive_control_echo,
'H E A T F L O W I N B E A M E L E M E N T S ( C B E A M )' : self._executive_control_echo,
'H E A T F L O W I N B E N D E L E M E N T S ( C B E N D )' : self._executive_control_echo,
'H E A T F L O W I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
'H E A T F L O W I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 8 )' : self._executive_control_echo,
'H E A T F L O W I N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
'H E A T F L O W I N T R I A N G U L A R E L E M E N T S ( T R I A 6 )' : self._executive_control_echo,
'H E A T F L O W I N A X I S Y M M E T R I C T R I A N G U L A R E L E M E N T S ( C T R I A X 6 )' : self._executive_control_echo,
'H E A T F L O W I N T E T R A H E D R O N S O L I D E L E M E N T S ( C T E T R A )' : self._executive_control_echo,
'H E A T F L O W I N P E N T A H E D R O N S O L I D E L E M E N T S ( P E N T A )' : self._executive_control_echo,
'H E A T F L O W I N H E X A H E D R O N S O L I D E L E M E N T S ( H E X A )' : self._executive_control_echo,
'H E A T F L O W I N T O H B D Y E L E M E N T S (CHBDY)' : self._executive_control_echo,
'T E M P E R A T U R E G R A D I E N T S A N D F L U X E S I N T E T R A H E D R O N P - E L E M E N T S' : self._executive_control_echo,
# b-list outputs
'S T R E N G T H R A T I O S F O R L A Y E R E D C O M P O S I T E E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
'S T R E N G T H R A T I O S F O R L A Y E R E D C O M P O S I T E E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
## ===========================================
# complex
# complex stress - not implemented
'C O M P L E X S T R E S S E S I N S C A L A R S P R I N G S ( C E L A S 1 )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N S C A L A R S P R I N G S ( C E L A S 2 )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N S C A L A R S P R I N G S ( C E L A S 3 )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N S C A L A R S P R I N G S ( C E L A S 4 )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N B U S H E L E M E N T S ( C B U S H )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N R O D E L E M E N T S ( C R O D )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N R O D E L E M E N T S ( C T U B E )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N R O D E L E M E N T S ( C O N R O D )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N B A R E L E M E N T S ( C B A R )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N B E A M E L E M E N T S ( C B E A M )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N B E N D E L E M E N T S ( C B E N D )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N S H E A R P A N E L S ( C S H E A R )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 8 )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R ) OPTION = CENTER' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N T R I A N G U L A R E L E M E N T S ( T R I A 6 )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N T R I A N G U L A R E L E M E N T S ( T R I A R )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N T E T R A H E D R O N E L E M E N T S ( C T E T R A )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N P E N T A H E D R O N S O L I D E L E M E N T S ( P E N T A )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N H E X A H E D R O N E L E M E N T S ( H E X A )' : self._executive_control_echo,
# complex strain - not implemented
'C O M P L E X S T R A I N S I N S C A L A R S P R I N G S ( C E L A S 1 )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N S C A L A R S P R I N G S ( C E L A S 2 )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N S C A L A R S P R I N G S ( C E L A S 3 )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N B U S H E L E M E N T S ( C B U S H )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N R O D E L E M E N T S ( C R O D )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N R O D E L E M E N T S ( C T U B E )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N R O D E L E M E N T S ( C O N R O D )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N B A R E L E M E N T S ( C B A R )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N B E A M E L E M E N T S ( C B E A M )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N B E N D E L E M E N T S ( C B E N D )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 8 )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R ) OPTION = CENTER' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N T R I A N G U L A R E L E M E N T S ( T R I A R )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N T R I A N G U L A R E L E M E N T S ( T R I A 6 )' : self._executive_control_echo,
'S T R A I N S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( Q U A D R )' : self._executive_control_echo,
'S T R A I N S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( T R I A 6 )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N P E N T A H E D R O N S O L I D E L E M E N T S ( P E N T A )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N H E X A H E D R O N E L E M E N T S ( H E X A )' : self._executive_control_echo,
# complex force - not implemented
'C O M P L E X F O R C E S I N S C A L A R S P R I N G S ( C E L A S 1 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N S C A L A R S P R I N G S ( C E L A S 2 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N S C A L A R S P R I N G S ( C E L A S 3 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N S C A L A R S P R I N G S ( C E L A S 4 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N S C A L A R D A M P E R S ( C D A M P 1 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N S C A L A R D A M P E R S ( C D A M P 2 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N S C A L A R D A M P E R S ( C D A M P 3 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N S C A L A R D A M P E R S ( C D A M P 4 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N B U S H E L E M E N T S ( C B U S H )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N V I S C E L E M E N T S ( C V I S C )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N R O D E L E M E N T S ( C R O D )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N R O D E L E M E N T S ( C T U B E )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N R O D E L E M E N T S ( C O N R O D )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N B A R E L E M E N T S ( C B A R )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N B E A M E L E M E N T S ( C B E A M )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N B E N D E L E M E N T S ( C B E N D )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N B E N D E L E M E N T S ( C B E N D )' : self._executive_control_echo, # why are there different writers for the same table!!!
'C O M P L E X F O R C E S A C T I N G O N S H E A R P A N E L E L E M E N T S (CSHEAR)' : self._executive_control_echo,
'C O M P L E X F O R C E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 8 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R ) OPTION = CENTER' : self._executive_control_echo,
'C O M P L E X F O R C E S I N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N T R I A N G U L A R E L E M E N T S ( T R I A 6 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N T R I A N G U L A R E L E M E N T S ( T R I A R )' : self._executive_control_echo,
# thermal force - not implemented
'F I N I T E E L E M E N T T E M P E R A T U R E G R A D I E N T S A N D F L U X E S' : self._executive_control_echo,
'S T R E S S E S ( F O R C E S ) I N G A P E L E M E N T S ( C G A P )' : self._executive_control_echo,
## ===========================================
# hyperelastic - not implemented
'S T R E S S E S I N H Y P E R E L A S T I C T R I A N G L E E L E M E N T S ( T R I A F D )' : self._executive_control_echo,
'S T R E S S E S I N H Y P E R E L A S T I C Q U A D R I L A T E R A L E L E M E N T S ( QUAD4FD )' : self._executive_control_echo,
'S T R E S S E S I N H Y P E R E L A S T I C H E X A H E D R O N E L E M E N T S ( HEXA8FD )' : self._executive_control_echo,
# oug nonlinear - not implemented
'N O N - L I N E A R - F O R C E V E C T O R' : self._executive_control_echo,
# stress nonlinear - not implemented
'N O N L I N E A R S T R E S S E S I N R O D E L E M E N T S ( C R O D )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N R O D E L E M E N T S ( C T U B E )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N R O D E L E M E N T S ( C O N R O D )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N B E A M E L E M E N T S ( C B E A M )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D R )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N T E T R A H E D R O N S O L I D E L E M E N T S ( T E T R A )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N P E N T A H E D R O N S O L I D E L E M E N T S ( P E N T A )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N H E X A H E D R O N S O L I D E L E M E N T S ( H E X A )' : self._executive_control_echo,
# nonlinear hyperelastic stress - not implemented
'N O N L I N E A R S T R E S S E S I N H Y P E R E L A S T I C T R I A N G L E E L E M E N T S ( TRIA3FD )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N H Y P E R E L A S T I C Q U A D R I L A T E R A L E L E M E N T S ( QUADFD )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N H Y P E R E L A S T I C Q U A D R I L A T E R A L E L E M E N T S ( QUAD4FD )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S IN H Y P E R E L A S T I C A X I S Y M M. Q U A D R I L A T E R A L ELEMENTS (QUADXFD)' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N H Y P E R E L A S T I C T R I A N G L E E L E M E N T S ( T R I A F D )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N H Y P E R E L A S T I C A X I S Y M M. T R I A N G L E E L E M E N T S (TRIAXFD)' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N H Y P E R E L A S T I C A X I S Y M M. T R I A N G L E ELEMENTS (TRIAX3FD)' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N H Y P E R E L A S T I C T E T R A H E D R O N E L E M E N T S ( T E T R A F D )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N H Y P E R E L A S T I C P E N T A E L E M E N T S ( P E N T A F D )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N H Y P E R E L A S T I C H E X A H E D R O N E L E M E N T S ( H E X A F D )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N H Y P E R E L A S T I C T E T R A H E D R O N E L E M E N T S ( TETRA4FD )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N H Y P E R E L A S T I C P E N T A E L E M E N T S ( PENTA6FD )' : self._executive_control_echo,
'N O N L I N E A R S T R E S S E S I N H Y P E R E L A S T I C H E X A H E D R O N E L E M E N T S ( HEXA8FD )' : self._executive_control_echo,
# nonlinear forces
'N O N L I N E A R F O R C E S A N D S T R E S S E S I N B U S H E L E M E N T S ( C B U S H )' : self._executive_control_echo,
## ===========================================
# complex oug - not implemented
'C O M P L E X V E L O C I T Y V E C T O R' : self._executive_control_echo,
'C O M P L E X A C C E L E R A T I O N V E C T O R' : self._executive_control_echo,
'C O M P L E X L O A D V E C T O R' : self._executive_control_echo,
'C O M P L E X F O R C E S O F S I N G L E P O I N T C O N S T R A I N T' : self._executive_control_echo,
'C O M P L E X F O R C E S O F M U L T I P O I N T C O N S T R A I N T' : self._executive_control_echo,
# solution set - not implemented
'D I S P L A C E M E N T V E C T O R (SOLUTION SET)' : self._executive_control_echo,
# complex solution set - not implemented
'C O M P L E X D I S P L A C E M E N T V E C T O R (SOLUTION SET)' : self._executive_control_echo,
# complex weirdness - not implemented
'C O M P L E X V E L O C I T I E S I N S L O T E L E M E N T S ( C S L O T 3 - S T R E S S )' : self._executive_control_echo,
'C O M P L E X V E L O C I T I E S I N S L O T E L E M E N T S ( C S L O T 4 - S T R E S S )' : self._executive_control_echo,
'C O M P L E X V E L O C I T I E S I N A X I S Y M M E T R I C F L U I D E L E M E N T S ( C A X I F 2 - S T R E S S )' : self._executive_control_echo,
'C O M P L E X V E L O C I T I E S I N A X I S Y M M E T R I C F L U I D E L E M E N T S ( C A X I F 3 - S T R E S S )' : self._executive_control_echo,
'C O M P L E X A C O U S T I C P R E S S U R E R E S U L T S' : self._executive_control_echo,
## ===========================================
# p-element stress - not implemented
'S T R E S S E S I N P - V E R S I O N B E A M E L E M E N T S ( B E A M )' : self._executive_control_echo,
'S T R E S S E S I N P - V E R S I O N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
'S T R E S S E S I N P - V E R S I O N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
'S T R E S S E S I N P - V E R S I O N T E T R A H E D R O N S O L I D E L E M E N T S ( T E T R A )' : self._executive_control_echo,
'S T R E S S E S I N P - V E R S I O N P E N T A H E D R O N S O L I D E L E M E N T S ( P E N T A )' : self._executive_control_echo,
'S T R E S S E S I N P - V E R S I O N H E X A H E D R O N S O L I D E L E M E N T S ( H E X A )' : self._executive_control_echo,
# p-element strain - not implemented
'S T R A I N S I N P - V E R S I O N B E A M E L E M E N T S ( B E A M )' : self._executive_control_echo,
'S T R A I N S I N P - V E R S I O N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
'S T R A I N S I N P - V E R S I O N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
'S T R A I N S I N P - V E R S I O N H E X A H E D R O N S O L I D E L E M E N T S ( H E X A )' : self._executive_control_echo,
'S T R A I N S I N P - V E R S I O N P E N T A H E D R O N S O L I D E L E M E N T S ( P E N T A )' : self._executive_control_echo,
'S T R A I N S I N P - V E R S I O N T E T R A H E D R O N S O L I D E L E M E N T S ( T E T R A )' : self._executive_control_echo,
# p-element force - not implemented
'F O R C E S I N P - V E R S I O N B E A M E L E M E N T S ( B E A M )' : self._executive_control_echo,
'F O R C E S I N P - V E R S I O N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
'F O R C E S I N P - V E R S I O N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
# p-element temperature
'T E M P E R A T U R E G R A D I E N T S A N D F L U X E S I N B E A M P - E L E M E N T S' : self._executive_control_echo,
'T E M P E R A T U R E G R A D I E N T S A N D F L U X E S I N T R I A N G U L A R P - E L E M E N T S' : self._executive_control_echo,
'T E M P E R A T U R E G R A D I E N T S A N D F L U X E S I N Q U A D R I L A T E R A L P - E L E M E N T S' : self._executive_control_echo,
'T E M P E R A T U R E G R A D I E N T S A N D F L U X E S I N T E T R A H E D R O N P - E L E M E N T S' : self._executive_control_echo,
'T E M P E R A T U R E G R A D I E N T S A N D F L U X E S I N P E N T A H E D R O N P - E L E M E N T S' : self._executive_control_echo,
'T E M P E R A T U R E G R A D I E N T S A N D F L U X E S I N H E X A H E D R O N P - E L E M E N T S' : self._executive_control_echo,
## ===========================================
# complex p-element stress - not implemented
'C O M P L E X S T R E S S E S I N P - V E R S I O N B E A M E L E M E N T S ( B E A M )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N P - V E R S I O N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N P - V E R S I O N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N P - V E R S I O N H E X A H E D R O N S O L I D E L E M E N T S ( H E X A )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N P - V E R S I O N P E N T A H E D R O N S O L I D E L E M E N T S ( P E N T A )' : self._executive_control_echo,
'C O M P L E X S T R E S S E S I N P - V E R S I O N T E T R A H E D R O N S O L I D E L E M E N T S ( T E T R A )' : self._executive_control_echo,
# complex p-element strain - not implemented
'C O M P L E X S T R A I N S I N P - V E R S I O N B E A M E L E M E N T S ( B E A M )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N P - V E R S I O N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N P - V E R S I O N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N P - V E R S I O N P E N T A H E D R O N S O L I D E L E M E N T S ( P E N T A )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N P - V E R S I O N T E T R A H E D R O N S O L I D E L E M E N T S ( T E T R A )' : self._executive_control_echo,
'C O M P L E X S T R A I N S I N P - V E R S I O N H E X A H E D R O N S O L I D E L E M E N T S ( H E X A )' : self._executive_control_echo,
# complex p-element force - not implemented
'C O M P L E X F O R C E S I N P - V E R S I O N B E A M E L E M E N T S ( B E A M )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N P - V E R S I O N T R I A N G U L A R E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
'C O M P L E X F O R C E S I N P - V E R S I O N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
## ===========================================
# ???
# peak/rms not included
'A C C E L E R A T I O N S V E L O C I T I E S A N D P R E S S U R E L E V E L S' : self._executive_control_echo,
'F A I L U R E I N D I C E S F O R L A Y E R E D C O M P O S I T E E L E M E N T S ( T R I A 3 )' : self._executive_control_echo,
'F A I L U R E I N D I C E S F O R L A Y E R E D C O M P O S I T E E L E M E N T S ( T R I A 6 )' : self._executive_control_echo,
'F A I L U R E I N D I C E S F O R L A Y E R E D C O M P O S I T E E L E M E N T S ( T R I A R )' : self._executive_control_echo,
'F A I L U R E I N D I C E S F O R L A Y E R E D C O M P O S I T E E L E M E N T S ( Q U A D 4 )' : self._executive_control_echo,
'F A I L U R E I N D I C E S F O R L A Y E R E D C O M P O S I T E E L E M E N T S ( Q U A D 8 )' : self._executive_control_echo,
# more weirdness - not implemented
'C O M P L E X F I E L D S I N A A B S F E L E M E N T S ( C A A B S F )' : self._executive_control_echo,
'S T R E S S E S A T G R I D P O I N T S - - S U R F A C E 1' : self._executive_control_echo,
'S T R E S S E S A T G R I D P O I N T S - - S U R F A C E 2' : self._executive_control_echo,
'S T R E S S E S A T G R I D P O I N T S - - S U R F A C E 3' : self._executive_control_echo,
'S T R E S S E S A T G R I D P O I N T S - - S U R F A C E 4' : self._executive_control_echo,
'S T R E S S E S A T G R I D P O I N T S - - S U R F A C E 5' : self._executive_control_echo,
'R E S U L T S F O R S L I D E L I N E E L E M E N T S (IN ELEMENT SYSTEM)' : self._executive_control_echo,
'P - E L E M E N T E R R O R E S T I M A T E T A B L E' : self._executive_control_echo,
'P - E L E M E N T E R R O R E S T I M A T E S U M M A R Y T A B L E' : self._executive_control_echo,
'S U P E R E L E M E N T T R E E' : self._executive_control_echo,
'D E S I G N C Y C L E = 1 S U B C A S E = 1' : self._executive_control_echo,
'E L E M E N T I N T E R N A L F O R C E S A N D M O M E N T S' : self._executive_control_echo,
'E L E M E N T S T R E S S D I S C O N T I N U I T I E S - - S U R F A C E 1' : self._executive_control_echo,
'E L E M E N T S T R E S S D I S C O N T I N U I T I E S - - S U R F A C E 91' : self._executive_control_echo,
'P R I N C I P A L E L E M E N T S T R E S S D I S C O N T I N U I T I E S - - V O L U M E 92' : self._executive_control_echo,
'U S E T D E F I N I T I O N T A B L E ( I N T E R N A L S E Q U E N C E , R O W S O R T )' : self._executive_control_echo,
'S U M M A T I O N O F E L E M E N T O R I E N T E D F O R C E S O N A D J A C E N T E L E M E N T S' : self._executive_control_echo,
'* E L E M E N T P R O P E R T Y S U M M A R Y (BY ELEMENT TYPE / ID) *' : self._executive_control_echo,
'N O N - L I N E A R I T E R A T I O N M O D U L E S O L U T I O N D A T A' : self._executive_control_echo,
#'* * * END OF JOB * * *': self.end(),
}
self.markers = self._marker_map.keys()
[docs] def _start_log(self, log=None, debug=False):
"""
Sets up a dummy logger if one is not provided
:self: the object pointer
:log: a python logging object
:debug: adds debug messages (True/False)
"""
self.log = get_logger(log, 'debug' if debug else 'info')
[docs] def _get_grid_point_singularities(self): # .. todo:: not done
"""
::
G R I D P O I N T S I N G U L A R I T Y T A B L E
POINT TYPE FAILED STIFFNESS OLD USET NEW USET
ID DIRECTION RATIO EXCLUSIVE UNION EXCLUSIVE UNION
1 G 4 0.00E+00 B F SB S *
1 G 5 0.00E+00 B F SB S *
"""
pass
[docs] def _grid_point_weight_generator(self):
line = ''
lines = []
while 'PAGE' not in line:
line = self.infile.readline()[1:].strip()
lines.append(line)
self.i += 1
self.fatal_check(line)
#print('\n'.join(lines))
self.grid_point_weight.read_grid_point_weight(lines)
[docs] def _case_control_echo(self):
line = ''
lines = []
i = 0
while 'PAGE' not in line and '* * * END OF JOB * * *' not in line:
line = self.infile.readline()[1:].strip()
lines.append(line)
self.i += 1
self.fatal_check(line)
if not line:
i += 1
else:
i = 0
if i >= 1000: # if there are 1000 blank lines, stop
#print('i=%s line=%r' % (i, line))
if is_release:
break
else:
raise RuntimeError('infinite loop')
#self.grid_point_weight.read_grid_point_weight(lines)
[docs] def _executive_control_echo(self):
line = ''
lines = []
i = 0
while 'PAGE' not in line and '* * * END OF JOB * * *' not in line:
line = self.infile.readline()[1:].strip()
lines.append(line)
self.i += 1
self.fatal_check(line)
if not line:
i += 1
else:
i = 0
if i >= 1000: # if there are 1000 blank lines, stop
#print('i=%s line=%r' % (i, line))
if is_release:
break
else:
raise RuntimeError('infinite loop')
#self.grid_point_weight.read_grid_point_weight(lines)
[docs] def fatal_check(self, line):
if 'FATAL' in line:
raise FatalError(line)
[docs] def _nastran_file_and_system_parameter_echo(self):
line = ''
lines = []
while 'PAGE' not in line and '* * * END OF JOB * * *' not in line:
line = self.infile.readline()[1:].strip()
lines.append(line)
self.i += 1
self.fatal_check(line)
#self.grid_point_weight.read_grid_point_weight(lines)
[docs] def _grid_point_singularity_table(self):
line = ''
lines = []
while 'PAGE' not in line and '* * * END OF JOB * * *' not in line:
line = self.infile.readline()[1:].strip()
lines.append(line)
self.i += 1
self.fatal_check(line)
#self.grid_point_weight.read_grid_point_weight(lines)
[docs] def _set_f06_date(self, month, day, year):
months = ['JANUARY', 'FEBRUARY', 'MARCH', 'APRIL', 'MAY', 'JUNE',
'JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER']
assert month in months, 'month=%r' % month
month = months.index(month) + 1
day = int(day)
year = int(year)
self.date = (month, day, year)
[docs] def _element_strain_energies(self):
"""
::
EIGENVALUE = -3.741384E-04
CYCLES = 3.078479E-03
E L E M E N T S T R A I N E N E R G I E S
ELEMENT-TYPE = QUAD4 * TOTAL ENERGY OF ALL ELEMENTS IN PROBLEM = -1.188367E-05
MODE 1 * TOTAL ENERGY OF ALL ELEMENTS IN SET -1 = -1.188367E-05
ELEMENT-ID STRAIN-ENERGY PERCENT OF TOTAL STRAIN-ENERGY-DENSITY
1 -5.410134E-08 -0.0929 -4.328107E-05
2 -3.301516E-09 -0.0057 -2.641213E-06
"""
isubcase = 1 # TODO not correct
cycles = self.stored_lines[-1][1:].strip()
try:
cycles = float(cycles.split('=')[1])
except (IndexError, ValueError):
return
eigenvalue = self.stored_lines[-2][1:].strip()
eigenvalue = float(eigenvalue.split('=')[1])
#print("eigenvalue=%s cycle=%s" % (eigenvalue, cycles))
eTypeLine = self.skip(2)[1:]
#eType = eTypeLine[30:40]
#totalEnergy1 = eTypeLine[99:114]
mode_line = self.skip(1)[1:]
iMode = mode_line[24:40]
#totalEnergy2 = mode_line[99:114]
#print("eType=%r totalEnergy1=%r" % (eType, totalEnergy1))
#print("iMode=%r totalEnergy2=%r" % (iMode, totalEnergy2))
headers = self.skip(2)
data = []
while 1:
line = self.infile.readline()[1:].rstrip('\r\n ')
self.i += 1
if 'PAGE' in line:
break
sline = line.strip().split()
if sline == []:
break
eid = int(sline[0])
strain_energy = float(sline[1])
percent_total = float(sline[2])
strain_energy_density = float(sline[3])
out = (eid, strain_energy, percent_total, strain_energy_density)
data.append(out)
if sline == []:
line = self.infile.readline()[1:].rstrip('\r\n ')
self.i += 1
if not is_release:
if isubcase in self.iSubcases:
self.strain_energy[isubcase].readF06Data(data, transient)
else:
sed = RealStrainEnergy(data, transient)
sed.readF06Data(data, transient)
self.strain_energy[isubcase] = sed
[docs] def _grid_point_force_balance(self):
try:
(subcase_name, isubcase, transient, dt, analysis_code, is_sort1) = self._read_f06_subcase_header()
except ValueError:
line = ''
while 'PAGE' not in line:
line = self.infile.readline()[1:].rstrip()
#lines.append(line)
self.i += 1
return
headers = self.skip(2)
line = ''
lines = []
#POINT-ID ELEMENT-ID SOURCE T1 T2 T3 R1 R2 R3
while 'PAGE' not in line:
line = self.infile.readline()[1:].rstrip()
lines.append(line)
self.i += 1
self.fatal_check(line)
data = []
for line in lines:
if 'PAGE' in line:
break
point_id, element_id, source = line[1:11], line[11:24], line[24:36]
t1, t2, t3, r1, r2, r3 = line[36:55], line[55:72], line[72:87], line[87:102], line[102:117], line[117:138]
try:
point_id = int(point_id)
element_id = element_id.strip()
if element_id:
element_id = int(element_id)
t1 = float(t1)
t2 = float(t2)
t3 = float(t3)
r1 = float(r1)
r2 = float(r2)
r3 = float(r3)
except:
msg = "point_id=%r, element_id=%r, source=%r\n" % (point_id, element_id, source)
msg += "t1=%r, t2=%r, t3=%r, r1=%r, r2=%r, r3=%r" % (t1, t2, t3, r1, r2, r3)
raise SyntaxError(msg)
data.append([point_id, element_id, source, t1, t2, t3, r1, r2, r3])
data_code = {
'analysis_code': analysis_code,
'device_code': 1, 'sort_code': 0,
'sort_bits': [0, 0, 0], 'num_wide': 9,
'table_code': 1,
'table_name': 'OES1X',
#'s_code': s_code,
#'stress_bits': stress_bits,
#'element_name': element_name, 'element_type': element_type,
'format_code': 1,
'nonlinear_factor': dt,
'dataNames':['lsdvmn'],
'lsdvmn': 1,
}
is_sort1 = True
if isubcase not in self.grid_point_forces:
self.grid_point_forces[isubcase] = RealGridPointForces(data_code, is_sort1, isubcase, dt)
self.grid_point_forces[isubcase].add_f06_data(dt, data)
self.iSubcases.append(isubcase)
[docs] def _read_f06_table(self, Format, debug=False):
"""
Reads displacement, spc/mpc forces
:param self: the object pointer
:param Format: list of types [int,str,float,float,float] that maps to sline
.. seealso:: self.parseLine
"""
sline = True
data = []
while sline:
line = self.infile.readline()[1:].strip()
sline = line.split()
if debug:
print(sline)
self.i += 1
if 'PAGE' in sline:
#self.stored_lines = [line] ## changed...
return data
sline = self.parseLine(sline, Format)
if sline is None or len(sline) == 0:
return data
data.append(sline)
return data
[docs] def _read_table_dummy(self):
sline = True
data = []
while sline:
sline = self.infile.readline()[1:].strip().split()
self.i += 1
if 'PAGE' in sline:
return data
if sline is None:
return data
data.append(sline)
return data
[docs] def parseLine(self, sline, formats):
"""
:param self: the object pointer
:param sline: list of strings (split line)
:param formats: list of types [int,str,float,float,float] that maps to sline
"""
out = []
for entry, iformat in zip(sline, formats):
try:
entry2 = iformat(entry)
except:
#print("sline=%r\n entry=%r format=%s" % (sline, entry, iformat))
#raise
return None
out.append(entry2)
return out
[docs] def _parse_line_blanks(self, sline, formats):
"""allows blanks"""
out = []
for entry, iformat in zip(sline, formats):
if entry.strip():
try:
entry2 = iformat(entry)
except:
print("sline=%r\n entry=%r format=%s" % (sline, entry, formats))
raise
else:
entry2 = None
#print("sline=%r\n entry=%r format=%s" % (sline, entry, iformat))
out.append(entry2)
return out
[docs] def read_f06(self, f06_filename=None, vectorized=False):
"""
Reads the F06 file
:self: the object pointer
:f06FileName: the file to be parsed (None -> GUI)
"""
self.is_vectorized = vectorized
if f06_filename is None:
from pyNastran.utils.gui_io import load_file_dialog
wildcard_wx = "Nastran F06 (*.f06)|*.f06|" \
"All files (*.*)|*.*"
wildcard_qt = "Nastran F06 (*.f06);;All files (*)"
title = 'Please select a F06 to load'
f06_filename = load_file_dialog(title, wildcard_wx, wildcard_qt)
assert f06_filename is not None, f06_filename
else:
if not os.path.exists(f06_filename):
msg = 'cant find f06_filename=%r\n%s' \
% (f06_filename, print_bad_path(f06_filename))
raise RuntimeError(msg)
#if is_binary(f06_filename):
#raise IOError('f06_filename=%r is a binary file.' % f06_filename)
if os.path.getsize(f06_filename) == 0:
raise IOError('f06_filename=%r is empty.' % f06_filename)
self.log.debug('f06_filename = %r' % f06_filename)
self.f06_filename = f06_filename
blank = 0
self.infile = open(self.f06_filename, 'r')
while 1:
#if self.i % 1000 == 0:
#print("i=%i" % (self.i))
line = self.infile.readline()
marker = line[1:].strip()
if 'FATAL' in marker and 'IF THE FLAG IS FATAL' not in marker:
msg = '\n' + marker
fatal_count = 0
while 1:
line = self.infile.readline().rstrip()
#print("blank = %s" % blank)
fatal_count += 1
if fatal_count == 20 or '* * * END OF JOB * * *' in line:
break
#else:
#blank = 0
msg += line + '\n'
raise FatalError(msg.rstrip())
if(marker != '' and 'SUBCASE' not in marker and 'PAGE' not in marker and 'FORTRAN' not in marker
and 'USER INFORMATION MESSAGE' not in marker and 'TOTAL DATA WRITTEN FOR DATA BLOCK' not in marker
and marker not in self.markers and marker != self._subtitle):
if ' ' in marker and ' ' not in marker and '=' not in marker:
# markers have multiple words in "stupid" format ('CAT' -> 'C A T'),
# so spaced tables 'CAT DOG' -> 'C A T D O G')
print("marker = %r" % marker)
pass
#print('Title = %r' % self.subtitle)
if marker in self.markers:
blank = 0
#print("\n1*marker = %r" % marker)
self._marker_map[marker]()
if self._stop_after_reading_mass and marker in 'O U T P U T F R O M G R I D P O I N T W E I G H T G E N E R A T O R':
#print('breaking opgwg')
break
self.stored_lines = []
elif 'R E A L E I G E N V E C T O R N O' in marker:
blank = 0
#print("\n2*marker = %r" % marker)
self._line_marker_map['R E A L E I G E N V E C T O R N O'](marker)
#print('done with real eigenvector')
self.stored_lines = []
elif 'C O M P L E X E I G E N V E C T O R NO' in marker:
blank = 0
#print("\n2*marker = %r" % marker)
self._line_marker_map['C O M P L E X E I G E N V E C T O R NO'](marker)
self.stored_lines = []
elif 'News file -' in marker:
blank = 0
self._line_marker_map['News file -']()
self.stored_lines = []
elif marker == '':
blank += 1
if blank == 20:
#print('breaking blank lines')
break
elif self._is_marker(marker): # marker with space in it (e.g. Model Summary)
print("***marker = %r" % marker)
else:
blank = 0
self.stored_lines.append(line)
self.i += 1
#print("i=%i" % self.i)
self.infile.close()
self._process_f06()
if hasattr(self, '_ieigenvalue'):
del self._ieigenvalue
self.build_vectorization()
[docs] def _process_f06(self):
#data = [self.disp,self.SpcForces,self.stress,self.isoStress,self.barStress,self.solidStress,self.temperature]
data_pack = [self.ctetra_stress, self.cpenta_stress, self.chexa_stress,
self.ctetra_strain, self.cpenta_strain, self.chexa_strain,]
for data_set in data_pack:
for key, data in iteritems(data_set):
#print('key=%s class=%s' % (key, type(data)))
data.processF06Data()
[docs] def _is_marker(self, marker):
"""returns True if the word follows the 'N A S T R A N P A T T E R N'"""
marker = marker.strip().split('$')[0].strip()
if len(marker) < 2 or marker == '* * * * * * * * * * * * * * * * * * * *':
return False
for i, char in enumerate(marker):
#print("i=%s i%%2=%s char=%s" % (i, i%2, char))
if i % 2 == 1 and ' ' is not char:
return False
elif i % 2 == 0 and ' ' == char:
return False
return True
[docs] def skip(self, iskip):
for i in range(iskip - 1):
self.infile.readline()
self.i += iskip
return self.infile.readline()
#def get_op2_stats(self):
#"""
#Gets info about the contents of the different attributes of the
#OP2 class.
#"""
#pass
[docs]def _parse_label_isubcase(label_isubcase):
label = label_isubcase[1:65].strip()
isubcase = label_isubcase[65:].strip()
#print('stored2 = ', label_isubcase.strip().replace(' ', ' '))
if isubcase:
isubcase = int(isubcase.split()[-1])
else:
#raise RuntimeError('asdf')
isubcase = 1
return label, isubcase
#assert isinstance(isubcase,int),'isubcase=%r' % isubcase
#print("subcaseName=%s isubcase=%s" % (subcaseName, isubcase))
if __name__ == '__main__': # pragma: no cover
from pyNastran.f06.test.test_f06 import main
main()