def getPfem(): global w if w: return w w = pfem mshFile = runPath + os.sep + 'cylinder.msh' rho0 = 1.0 mu = 0.01 pbl = w.Problem() pbl.rho0 = rho0 pbl.mu = mu pbl.alpha = 1.4 pbl.extP = 1.0 pbl.scalingU = 1.0 pbl.bodyForceY = -9.81 msh = w.MshData(pbl) msh.load(mshFile) print(msh) toll = 1e-6 nItMax = 20 solScheme = w.SchemeMonolithicPSPG(msh, pbl) convCriterion = w.ForceBalanceCriterion(msh, pbl, toll, 9.81 * rho0) nonLinAlgo = w.PicardAlgorithm(solScheme, convCriterion, nItMax) scheme = w.TimeIntegration(msh, pbl, solScheme) bndno = 9 w.Medium(msh, 15, 0., 0., 3) w.Medium(msh, 14, mu, rho0, 1) # boundaries w.Boundary(msh, 8, 3, pbl.extP) w.Boundary(msh, 7, 1, 0.0) w.Boundary(msh, 7, 2, 0.0) w.Boundary(msh, 9, 1, 0.0) w.Boundary(msh, 9, 2, 0.0) scheme.savefreq = 1 scheme.gamma = 0.6 scheme.omega = 0.5 scheme.addRemoveNodesOption = True # Results extManager = w.ExtractorsManager(msh) extManager.add(1, w.PositionExtractor(msh, 6)) extManager.add(20, w.IntForceExtractor(msh, "Cylinder")) extManager.add(21, wt.TotalIntForceExtractor(msh, "Cylinder")) import pfem.tools.link2vtk as v gui = v.Link2VTK(msh, scheme, False, True) return Module(w, msh, pbl, solScheme, nonLinAlgo, convCriterion, scheme, extManager, gui, bndno)
def getPfem(): global w if w: return w w = pfem mshFile = runPath + os.sep + 'lsdyna.msh' rho0 = 781. mu = 0.01 U0 = 0.05 V0 = -0.01 N = 10 pbl = w.Problem() pbl.rho0 = rho0 pbl.mu = mu pbl.nonLinAlgorithm = 1 pbl.solScheme = 1 pbl.alpha = 1.2 pbl.beta = 0. pbl.gravity = 0. pbl.scalingU = U0 msh = w.MshData(pbl) msh.load(mshFile) print(msh) toll = 1e-6 nItMax = 10 solScheme = w.SchemeMonolithicPSPG(msh, pbl) convCriterion = w.ForceBalanceCriterion(msh, pbl, toll, 9.81 * rho0) nonLinAlgo = w.PicardAlgorithm(solScheme, convCriterion, nItMax) scheme = w.TimeIntegration(msh, pbl, solScheme) bndno = 15 # fsi boundary w.Medium(msh, 15, 0., 0., 3) w.Medium(msh, 17, mu, rho0, 1) # boundaries w.Boundary(msh, 14, 3, 0.0) w.Boundary(msh, 15, 1, 0.0) w.Boundary(msh, 15, 2, 0.0) # Initial velocity bird = w.Group(msh, 17) loadingset = w.LoadingSet(msh) loadingset.add(1, w.InitialVelocity(msh, bird, U0, V0, 0.)) scheme.savefreq = 1 scheme.gamma = 0.5 scheme.omega = 0.5 scheme.addRemoveNodesOption = True scheme.tollNLalgo = 1e-7 # Results extManager = w.ExtractorsManager(msh) extManager.add(1, w.PositionExtractor(msh, 4)) extManager.add(2, w.PositionExtractor(msh, 3)) '''extManager.add(1,w.IntForceExtractor(msh,"Wall")) extManager.add(2,w.ExtForceExtractor(msh,"Wall")) extManager.add(3,w.IneForceExtractor(msh,"Wall")) extManager.add(4,w.PressureExtractor(msh,"Wall")) extManager.add(5,w.PositionExtractor(msh,"Wall")) extManager.add(6,wt.KineticEnergyExtractor(msh,pbl,"Body")) extManager.add(7,wt.ViscousEnergyExtractor(msh,pbl,scheme,"Body"))''' import pfem.tools.link2vtk as v gui = v.Link2VTK(msh, scheme, False, True) return Module(w, msh, pbl, solScheme, nonLinAlgo, convCriterion, bird, loadingset, scheme, extManager, gui, bndno)
def getPfem(): global w if w: return w w = pfem mshFile = runPath + os.sep + 'impactaxi.msh' rho0 = 1000. mu = 0.001 U0 = 100 pbl = w.Problem() pbl.rho0 = rho0 pbl.mu = mu pbl.nonLinAlgorithm = 1 pbl.solScheme = 1 pbl.alpha = 1.2 pbl.beta = 0. pbl.gravity = 0. pbl.scalingU = U0 pbl.isAxisymmetric = True msh = w.MshData(pbl) msh.load(mshFile) print(msh) toll = 1e-6 nItMax = 10 solScheme = w.SchemeMonolithicPSPG(msh, pbl) convCriterion = w.ForceBalanceCriterion(msh, pbl, toll, 9.81 * rho0) nonLinAlgo = w.PicardAlgorithm(solScheme, convCriterion, nItMax) scheme = w.TimeIntegration(msh, pbl, solScheme) bndno = 13 # fsi boundary no w.Medium(msh, 13, 0., 0., 3) w.Medium(msh, 17, mu, rho0, 1) # boundaries w.Boundary(msh, 15, 7, 0.0) w.Boundary(msh, 16, 3, 0.0) w.Boundary(msh, 13, 1, 0.0) w.Boundary(msh, 13, 2, 0.0) # --- Necessary for the correct elimination of nodes along the axis of symmetry --- n4 = msh.getNode(4) n4.isOnAxisOfSymmetry = True # --- # Initial velocity bird = w.Group(msh, 17) loadingset = w.LoadingSet(msh) loadingset.add(1, w.InitialVelocity(msh, bird, 0., -U0, 0.)) scheme.savefreq = 10 scheme.nthreads = 3 scheme.gamma = 0.5 scheme.omega = 0.5 scheme.addRemoveNodesOption = True scheme.tollNLalgo = 1e-7 # Results extManager = w.ExtractorsManager(msh) extManager.add(1, w.PositionExtractor(msh, 4)) extManager.add(6, wt.KineticEnergyExtractor(msh, pbl, 17)) extManager.add(7, wt.ViscousEnergyExtractor(msh, pbl, scheme, 17)) extManager.add(8, wt.PressureWorkExtractor(msh, pbl, scheme, 17)) extManager.add(9, w.MassExtractor(msh, pbl, 17)) import pfem.tools.link2vtk as v gui = v.Link2VTK(msh, scheme, False, True) return Module(w, msh, pbl, solScheme, nonLinAlgo, convCriterion, bird, loadingset, scheme, extManager, gui, bndno)
def getPfem(): global w if w: return w w = pfem mshFile = runPath+os.sep+'matching.msh' rho0 = 1000. mu = 0.001 pbl = w.Problem() pbl.rho0 = rho0 pbl.mu = mu pbl.alpha = 1.2 pbl.extP = 0. pbl.scalingU = 5.0 pbl.bodyForceY = -9.81 msh = w.MshData(pbl) msh.load(mshFile) print msh toll = 1e-6 nItMax = 20 solScheme = w.SchemeMonolithicPSPG(msh, pbl) convCriterion = w.ForcesBalanceNormedBodyForceCriterion(msh, pbl, toll) nonLinAlgo = w.PicardAlgorithm(solScheme, convCriterion, nItMax) scheme = w.BackwardEuler(msh, pbl, nonLinAlgo) bndno = 17 # fsi boundary contactTag = w.Tag(100, "Contact", 2) msh.ptags[100] = contactTag msh.ntags["Contact"] = contactTag w.Medium(msh, 100, 0., 0., 0., 4) w.Medium(msh, 17, 0., 0., 3) w.Medium(msh, 16, mu, rho0, 1) w.Medium(msh, 20, mu, rho0, 1) # boundaries w.Boundary(msh, 18, 3, pbl.extP) w.Boundary(msh, 16, 1, 0.0) w.Boundary(msh, 16, 2, 0.0) w.Boundary(msh, 17, 1, 0.0) w.Boundary(msh, 17, 2, 0.0) scheme.savefreq = 100 scheme.gamma = 0.6 scheme.omega = 0.5 scheme.addRemoveNodesOption = True # Results extManager = w.ExtractorsManager(msh) extManager.add(1, w.PositionExtractor(msh, 6)) '''extManager.add(1,w.PositionExtractor(msh,1)) extManager.add(2,w.IntForceExtractor(msh,1)) extManager.add(3,w.ExtForceExtractor(msh,1)) extManager.add(4,w.IneForceExtractor(msh,1))''' extManager.add(5, w.IntForceExtractor(msh, 6)) '''extManager.add(6,w.ExtForceExtractor(msh,6)) extManager.add(7,w.IneForceExtractor(msh,6)) extManager.add(8,w.PressureExtractor(msh,1)) extManager.add(9,w.VelocityExtractor(msh,"Water")) extManager.add(10,w.MassExtractor(msh,"Water")) extManager.add(11,wt.KineticEnergyExtractor(msh,pbl,"Water")) extManager.add(12,wt.ViscousEnergyExtractor(msh,pbl,scheme,"Water"))''' import pfem.tools.link2vtk as v gui = v.Link2VTK(msh, scheme, True) return Module(w, msh, pbl, contactTag, solScheme, nonLinAlgo, convCriterion, scheme, extManager, gui, bndno)
def getPfem(): global w if w: return w w = pfem mshFile = runPath+os.sep+'impact.msh' print 'mshFile: ', mshFile rho0 = 1000. mu = 0.001 U0 = 100 pbl = w.Problem() pbl.rho0 = rho0 pbl.mu = mu pbl.nonLinAlgorithm = 1 pbl.solScheme = 1 pbl.alpha = 1.2 pbl.beta = 0. pbl.gravity = 0. pbl.scalingU = U0 msh = w.MshData(pbl) msh.load(mshFile) print msh toll = 1e-6 nItMax = 10 solScheme = w.SchemeMonolithicPSPG(msh, pbl) convCriterion = w.ForcesBalanceNormedBodyForceCriterion(msh, pbl, toll) nonLinAlgo = w.PicardAlgorithm(solScheme, convCriterion, nItMax) scheme = w.TimeIntegration(msh, pbl, solScheme) bndno = 13 # fsi boundary w.Medium(msh, 13, 0., 0., 3) w.Medium(msh, 16, mu, rho0, 1) # boundaries w.Boundary(msh, 15, 3, 0.0) w.Boundary(msh, 13, 1, 0.0) w.Boundary(msh, 13, 2, 0.0) # Initial velocity bird = w.Group(msh, 16) loadingset = w.LoadingSet(msh) loadingset.add(1, w.InitialVelocity(msh, bird, 0., -U0, 0.)) scheme.savefreq = 10 scheme.gamma = 0.5 scheme.omega = 0.5 scheme.addRemoveNodesOption = True scheme.tollNLalgo = 1e-7 # Results extManager = w.ExtractorsManager(msh) extManager.add(1, w.PositionExtractor(msh, 310)) extManager.add(6, wt.KineticEnergyExtractor(msh, pbl, 16)) extManager.add(7, wt.ViscousEnergyExtractor(msh, pbl, scheme, 16)) extManager.add(8, wt.PressureWorkExtractor(msh, pbl, scheme, 16)) extManager.add(9, w.MassExtractor(msh, pbl, 16)) import pfem.tools.link2vtk as v gui = v.Link2VTK(msh, scheme, False, True) return Module(w, msh, pbl, solScheme, nonLinAlgo, convCriterion, bird, loadingset, scheme, extManager, gui, bndno)
def getPfem(): global w if w: return w w = pfem mshFile = runPath + os.sep + 'gate.msh' rho0 = 1000. mu = 0.001 pbl = w.Problem() pbl.rho0 = rho0 pbl.mu = mu pbl.nonLinAlgorithm = 1 pbl.solScheme = 1 pbl.alpha = 1.3 pbl.extP = 0. pbl.scalingU = 2.0 pbl.bodyForceY = -9.81 msh = w.MshData(pbl) msh.load(mshFile) print(msh) toll = 1e-6 nItMax = 10 solScheme = w.SchemeMonolithicPSPG(msh, pbl) convCriterion = w.ForceBalanceCriterion(msh, pbl, toll, 9.81 * rho0) nonLinAlgo = w.PicardAlgorithm(solScheme, convCriterion, nItMax) scheme = w.TimeIntegration(msh, pbl, solScheme) bndno = 17 # fsi boundary # w.Medium(msh, 100, 0., 0., 0., 4) w.Medium(msh, 17, 0., 0., 3) w.Medium(msh, 16, mu, rho0, 1) w.Medium(msh, 20, mu, rho0, 1) # boundaries w.Boundary(msh, 18, 3, pbl.extP) w.Boundary(msh, 16, 1, 0.0) w.Boundary(msh, 16, 2, 0.0) w.Boundary(msh, 17, 1, -1.0e-15) w.Boundary(msh, 17, 2, -1.0e-15) scheme.savefreq = 10 scheme.gamma = 0.5 scheme.omega = 0.5 scheme.addRemoveNodesOption = True # Results extManager = w.ExtractorsManager(msh) extManager.add(1, w.PositionExtractor(msh, 9)) extManager.add(3, w.IntForceExtractor(msh, 17)) '''extManager.add(2,w.IntForceExtractor(msh,1)) extManager.add(3,w.ExtForceExtractor(msh,1)) extManager.add(4,w.IneForceExtractor(msh,1)) extManager.add(5,w.IntForceExtractor(msh,6)) extManager.add(6,w.ExtForceExtractor(msh,6)) extManager.add(7,w.IneForceExtractor(msh,6)) extManager.add(8,w.PressureExtractor(msh,1)) extManager.add(9,w.VelocityExtractor(msh,"Water")) extManager.add(10,w.MassExtractor(msh,"Water")) extManager.add(11,wt.KineticEnergyExtractor(msh,pbl,"Water")) extManager.add(12,wt.ViscousEnergyExtractor(msh,pbl,scheme,"Water"))''' import pfem.tools.link2vtk as v gui = v.Link2VTK(msh, scheme, False, True) return Module(w, msh, pbl, solScheme, nonLinAlgo, convCriterion, scheme, extManager, gui, bndno)