# -*- coding: utf-8 -*-
import platform
import os
[docs]
class ReductionParam():
"""
**Contain all the parameters related to the reduction**
"""
def __init__(self,tolModes,tolGIE,addRigidBodyModes,dataDir,saveVelocitySnapshots):
self.tolModes = tolModes
self.tolGIE = tolGIE
self.addRigidBodyModes = addRigidBodyModes
self.dataDir = dataDir
self.dataFolder = os.sep+dataDir.split(os.sep)[-2]+os.sep
self.stateFileName = "stateFile.state"
self.modesFileName = "modes.txt"
self.gieFilesNames = []
self.RIDFilesNames = []
self.weightsFilesNames = []
self.savedElementsFilesNames = []
self.nbrOfModes = -1
self.periodSaveGIE = 6 #10
self.nbTrainingSet = -1
self.paramWrapper = None
if not saveVelocitySnapshots:
self.velocityFileName = None
else:
self.velocityFileName = "velocityStateFile.state"
[docs]
def setNbTrainingSet(self,rangeOfAction,incr):
'''
'''
self.nbTrainingSet = int(rangeOfAction/incr)
[docs]
def addParamWrapper(self ,nodeToReduce ,prepareECSW = True, paramForcefield = None ,paramMORMapping = None):
'''
'''
nodeToReduce = "".join(nodeToReduce)
ndtSplit = nodeToReduce.split(os.sep)
nodeToParse = '@./' + ndtSplit[-1]
defaultParamPrepare = {
'paramForcefield' : {
'prepareECSW' : True,
'modesPath': self.dataDir+self.modesFileName,
'periodSaveGIE' : self.periodSaveGIE,
'nbTrainingSet' : self.nbTrainingSet},
'paramMORMapping' : {
'input': '@../MechanicalObject',
'modesPath': self.dataDir+self.modesFileName},
}
defaultParamPerform = {
'paramForcefield' : {
'performECSW': True,
'modesPath': self.dataFolder+self.modesFileName,
'RIDPath': self.dataFolder,
'weightsPath': self.dataFolder},
'paramMORMapping' : {
'input': '@../MechanicalObject',
'modesPath': self.dataFolder+self.modesFileName},
}
if paramForcefield and paramMORMapping :
pass
else:
if prepareECSW:
self.paramWrapper = ( (nodeToReduce ,
{'paramForcefield': defaultParamPrepare['paramForcefield'].copy(),
'paramMORMapping': defaultParamPrepare['paramMORMapping'].copy()} ) )
else :
self.paramWrapper = ( (nodeToReduce ,
{'paramForcefield': defaultParamPerform['paramForcefield'].copy(),
'paramMORMapping': defaultParamPerform['paramMORMapping'].copy()} ) )
return self.paramWrapper
[docs]
def setFilesName(self):
'''
'''
path , param = self.paramWrapper
nodeName = path.split(os.sep)[-1]
self.gieFilesNames.append('HyperReducedFEMForceField_'+nodeName+'_Gie.txt')
self.RIDFilesNames.append('RID_'+nodeName+'.txt')
self.weightsFilesNames.append('weight_'+nodeName+'.txt')