Source code for pyfem.io.InputReader
# SPDX-License-Identifier: MIT
# Copyright (c) 2011–2026 Joris J.C. Remmers
from pyfem.util.dataStructures import Properties
from pyfem.util.dataStructures import GlobalData
from pyfem.fem.NodeSet import NodeSet
from pyfem.fem.ElementSet import ElementSet
from pyfem.fem.DofSpace import DofSpace
from pyfem.models.ModelManager import ModelManager
from pyfem.util.fileParser import fileParser
from pyfem.util.logger import setLogger, separator
import getopt,os.path,pickle,time
#-------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------
[docs]
def InputReader( argv ):
pName,dName,params = getArguments( argv )
return InputRead( pName , dName , params )
#-------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------
[docs]
def InputRead( fname , dname = None , parameters = None ):
t1 = time.time()
if dname is not None:
with open(dname, 'rb') as f:
data = pickle.load(f)
props = data["props"]
if fname is not None:
if fname[-4:] == '.pro':
props = fileParser( fname )
else:
props = fileParser( fname+'.pro')
pathName, _ = os.path.split(fname)
if parameters is not None:
for p in parameters:
x = p.split("=")
props.store(x[0],x[1])
if dname is not None:
return props,data["globdat"]
dataFileName = props.input
dataFileName = os.path.join(pathName,dataFileName)
logger = setLogger( props )
separator("=")
logger.info(" PyFEM analysis: " + fname )
separator("=")
nodes = NodeSet()
nodes.readFromFile( dataFileName )
elems = ElementSet( nodes , props )
elems.readFromFile( dataFileName )
elems.logInfo()
dofs = DofSpace( elems )
dofs.readFromFile( dataFileName )
globdat = GlobalData( nodes, elems, dofs )
globdat.readFromFile( dataFileName )
globdat.active = True
globdat.prefix = os.path.splitext(fname)[0]
globdat.models = ModelManager( props , globdat )
globdat.startTime = t1
return props,globdat
#-------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------
[docs]
def getArguments( argv ):
slist = 'd:i:hvp:'
llist = ['dump=','input=','help','version']
options, remainder = getopt.getopt( argv[1:] , slist , llist )
proFileName = None
dumpFileName = None
parameters = []
if len(options) == 0:
proFileName = argv[1]
options, remainder = getopt.getopt( argv[2:] , slist, llist )
for opt, arg in options:
if opt in ('-i', '--input'):
proFileName = arg
elif opt in ('-d', '--dump'):
dumpFileName = arg
elif opt in ('-h', '--help'):
print("Help")
elif opt in ('-p' , '--param'):
parameters.append(arg)
return proFileName,dumpFileName,parameters