def __init__(self, beamMesh, backgroundMesh, beamThickness, initialGap): ## Read in 2d Solid Mesh self.beam_thickness = beamThickness self.Gap = initialGap beamReader = FluentCase(beamMesh) beamReader.read() print "read solid mesh" self.solidMeshes = beamReader.getMeshList() self.geomFields = models.GeomFields('geom') self.solidMetricsCalculator = models.MeshMetricsCalculatorA( self.geomFields, self.solidMeshes) self.solidMetricsCalculator.init() ## Define plate and deformation model self.plateFields = models.PlateFields('plate') self.pmodel = models.PlateModelA(self.geomFields, self.plateFields, self.solidMeshes) self.dmodel = models.PlateDeformationModelA(self.geomFields, self.plateFields, self.solidMeshes) bcMap = self.pmodel.getBCMap() ## Apply a default Boundary Condition #for i, bc in bcMap.iteritems(): #bc.bcType = 'SpecifiedTraction' ## Read in 3d Background Mesh fluidReader = FluentCase(backgroundMesh) fluidReader.read() self.fluidMeshes = fluidReader.getMeshList() self.fluidMetricsCalculator = models.MeshMetricsCalculatorA( self.geomFields, self.fluidMeshes) self.fluidMetricsCalculator.init() ## Define electric model self.elecFields = models.ElectricFields('elec') self.emodel = models.ElectricModelA(self.geomFields, self.elecFields, self.fluidMeshes) bcMap = self.emodel.getBCMap() ## Apply Default boundary conditions for i, bc in bcMap.iteritems(): bc.bcType = "Symmetry" self.solidBoundaryMeshes = [ m.extrude(1, beamThickness, True) for m in self.solidMeshes ] self.solidBoundaryMetricsCalculator = models.MeshMetricsCalculatorA( self.geomFields, self.solidBoundaryMeshes) self.solidBoundaryMetricsCalculator.init()
def createModels(self): if self.enablePlateModel == True: self.plateFields = models.PlateFields('plate') self.pmodel = models.PlateModelA(self.geomFields, self.plateFields, self.solidMeshes) self.dmodel = models.PlateDeformationModelA( self.geomFields, self.plateFields, self.solidMeshes) if self.enableElecModel == True: self.elecFields = models.ElectricFields('elec') self.emodel = models.ElectricModelA(self.geomFields, self.elecFields, self.fluidMeshesNew) if self.enableFlowModel == True: self.flowFields = models.FlowFields('flow') self.fmodel = models.FlowModelA(self.geomFields, self.flowFields, self.fluidMeshes) #currently contact model is implemented in ComputeForce.py #if self.enableContactModel == True: # self.contactFields = models.ContactFields('contact') # self.cmodel = models.ContactModelA(self.geomFields,self.contactFields,self.fluidMeshesNew) print 'models are created'
beamReader.read() solidMeshes = beamReader.getMeshList() solidBoundaryMeshes = [m.extrude(1, beam_thickness, True) for m in solidMeshes] solidBoundaryMetricsCalculator = models.MeshMetricsCalculatorA( geomFields, solidBoundaryMeshes) solidBoundaryMetricsCalculator.init() ### output files probeFile = open(fileBase_output + "centerDisplacement.dat", "w") forceFile = open(fileBase_output + "force.dat", "w") ### electric model and boundary condition ### elecFields = models.ElectricFields('elec') emodel = models.ElectricModelA(geomFields, elecFields, fluidMeshes) bcMap = emodel.getBCMap() ### specify a potential field; use it as boundary condition pf = fvmbaseExt.Field('potential') fgs = fluidMeshes[0].getBoundaryFaceGroups() for fg in fgs: if fg.id == fluidBot: faces = fg.site nFaces = faces.getCount() areaMag = geomFields.areaMag[faces] xf = geomFields.coordinate[faces].asNumPyArray() pot = areaMag.newSizedClone(nFaces) pota = pot.asNumPyArray() for f in range(0, nFaces):
rho = 7854.0 E = 2.0 * math.pow(10, 11) nu = 0.31 if fvm.atype == 'tangent': metricsCalculator.setTangentCoords(0, 7, 1) flowFields = models.FlowFields('flow') structureFields = models.StructureFields('structure') electricFields = models.ElectricFields('elec') smodel = models.StructureModelA(geomFields, structureFields, meshes0) dmodel = models.StructureDeformationModelA(geomFields, structureFields, meshes0) movingMeshModel = models.MovingMeshModelA(meshes1, geomFields, flowFields) emodel = models.ElectricModelA(geomFields, electricFields, meshes1) movingMeshModel.init() bcMap = smodel.getBCMap() #left (mesh0) bcID = 6 if bcID in bcMap: bc = smodel.getBCMap()[bcID] bc.bcType = 'SpecifiedDeformation' bc['specifiedXDeformation'] = 0 bc['specifiedYDeformation'] = 0 bc['specifiedZDeformation'] = 0 #top (mesh0)
for id in [beamTopID, beamBotID, beamSideID]: bc = sbcMap[id] bc.bcType = 'SpecifiedForce' vcMap = pd.smodel.getVCMap() for i, vc in vcMap.iteritems(): vc['density'] = rho vc['eta'] = E / (2. * (1 + nu)) vc['eta1'] = nu * E / ((1 + nu) * (1 - 2.0 * nu)) ### electric model and boundary condition ### pd.elecFields = models.ElectricFields('elec') pd.emodel = models.ElectricModelA(pd.geomFields, pd.elecFields, pd.fluidMeshes) bcMap = pd.emodel.getBCMap() for i in electrodeGround: bc = bcMap[i] bc.bcType = "SpecifiedPotential" bc['specifiedPotential'] = 0 for i in electrodeInactive: bc = bcMap[i] bc.bcType = "Symmetry" for i in electrodeActive: bc = bcMap[i] bc.bcType = "SpecifiedPotential"