예제 #1
0
    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()
예제 #2
0
 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'
예제 #3
0
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):
예제 #4
0
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)
예제 #5
0
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"