Welcome to ask.woodem.org. You may post when you login through your GitHub account.

Problem about example 'membrane-split.py'

0 votes
50 views
asked Sep 13, 2016 by MarcoTar (770 points)
Hi, I have one problem during simulating the code by the example which uploaded

https://github.com/eudoxos/woodem/blob/master/examples/membrane-split.py

Accroding to what it's showed in the youtube, the membrane should have the deflection while I copy the code run the simulation it doesn't show the deflection. Besides, the original code cannot be runned after I changed some code like GlSetup or whatever.

Anyhow, here's the code that I've modified.

_______________________________________________________________

from woo.core import *
from woo.dem import *
from woo.fem import *
import woo
import woo.gl
import math
from math import pi
from minieigen import *
woo.master.usesApi=10103
S=woo.master.scene=Scene(fields=[DemField(gravity=(0,0,-9.81))],dtSafety=.8)
S.gl=woo.gl.GlSetup(
woo.gl.Gl1_Membrane(uScale=1.0,relPhi=0.2,refConf=True),
woo.gl.Gl1_DemField(shape=woo.gl.Gl1_DemField.shapeNonSpheres,colorBy=woo.gl.Gl1_DemField.colorDisplacement,vecAxis='norm',colorBy2=woo.gl.Gl1_DemField.colorVel),
)
woo.gl.Gl1_DemField.colorRange2=(0,2.)

import woo.pack, woo.utils, numpy

xmax,ymax=1,1
xdiv,ydiv=15,15
mat=FrictMat(young=3e6,tanPhi=.55,ktDivKn=.2,density=3000)
ff=woo.pack.gtsSurface2Facets(woo.pack.sweptPolylines2gtsSurface([[(x,y,0) for x in numpy.linspace(0,xmax,num=xdiv)] for y in numpy.linspace(0,ymax,num=ydiv)]),flex=True,halfThick=.01,mat=mat)
S.dem.par.add(ff)

# a few spheres falling onto the mesh
sp=woo.pack.SpherePack()
sp.makeCloud((.3,.3,.1),(.7,.7,.6),rMean=.3*xmax/xdiv,rRelFuzz=.5)
sp.toSimulation(S,mat=mat)

# set boundary conditions and set some fake masses and inertia of mesh nodes
for n in S.dem.nodes:
    n.dem.blocked=''
    if n.pos[0]==0 or (n.pos[1]==0): n.dem.blocked='xyz'

for n in [n for n in S.dem.nodes if n.pos[0]==n.pos[1]]:
    # make the other end of the diagonal fixed as well, just so that the split effect is better visible
    if n.pos[1]==1.: n.dem.blocked='xyz'
    # if n.pos[0]<.2: continue
    S.dem.splitNode(n,[p for p in n.dem.parRef if p.shape.getCentroid()[0]>p.shape.getCentroid()[1]])

S.engines=DemField.minimalEngines(damping=.4,verletDist=-0.01)+[IntraForce([In2_Membrane_ElastMat(thickness=.01,bending=True,bendThickness=.01)]),BoxOutlet(box=((-.1,-.1,-1),(1.1,1.1,1)),glColor=float('nan'))]

for n in S.dem.nodes: DemData.setOriMassInertia(n)

S.saveTmp()

import woo.qt
woo.qt.Controller()
woo.qt.View()

_____________________________________________________

I hope someone can help me as soon as possible, because it's related to my master thesis.

Again, I repeat my key point

I just want to create a concrete membrane and fix four corner points of D.o.F, and check the deflection due to the impact force on it. Now I just need a Membrane which has deflection.

Thanks in advance

Regards

Feixiang Xuan

1 Answer

+1 vote
answered Sep 13, 2016 by eudoxos (45,050 points)
selected Oct 21, 2016 by eudoxos
 
Best answer

Hi, well spotted, the scripts were fixed in this commit . If you change usesApi, you also have to update the script as explained in https://woodem.org/api.html . Cheers, vaclav

commented Sep 14, 2016 by FrancescoCalvetti (100 points)

Hello Vaclav, thanks for the answer. I am afraid the link to the "this commit" is broken.
Kind regards
Francesco

commented Sep 14, 2016 by eudoxos (45,050 points)

Sorry, pasted twice by accident, fixed. Use the latest git, that's all you need to do.

commented Sep 15, 2016 by MarcoTar (770 points)

Indeed. Now everything works.
Keep in contact if I have some other code questions.
Thanks a lot. Vaclav and also Prof. Calvetti.
Regards
Feixiang Xuan

...