non uniform distributed load

About the development of the FEM module/workbench.

Moderator: bernd

UR_
Posts: 990
Joined: Tue Jan 03, 2017 8:42 pm

Re: non uniform distributed load

Postby UR_ » Wed May 02, 2018 7:45 pm

You are right, i noticed this too.
I think major waste of time is object adding (to tree).
I will have a look at curveWB, perhaps i can find the place where Chris_G does the magic. :roll:
Chris_G wrote:ping
@Chris_G, can we please have a hint from Premier League :?
User avatar
Chris_G
Posts: 1141
Joined: Tue Dec 31, 2013 4:10 pm
Location: France
Contact:

Re: non uniform distributed load

Postby Chris_G » Wed May 02, 2018 9:26 pm

UR_ wrote:
Wed May 02, 2018 7:45 pm
I think major waste of time is object adding (to tree).
Hi,
you will probably get much faster rendering by adding directly your stuff in the coin SceneGraph().
Here is an example :

Code: Select all

import FreeCAD
from FreeCAD import Vector
import Part
from pivy import coin

NUM = 10

# create a sample curve

poles0 = [Vector (-2.207077980041504, -0.4698541462421417, 0.0), Vector (-1.3755598068237305, 1.137541651725769, 0.0), Vector (0.10200775414705276, 1.2364583015441895, 0.0), Vector (1.397197961807251, -0.0834609717130661, 0.0)]
weights0 = [1.0, 1.0, 1.0, 1.0]
knots0 = [0.0, 1.0]
mults0 = [4L, 4L]
periodic0 = False
degree0 = 3
rational0 = False
bs0 = Part.BSplineCurve()
bs0.buildFromPolesMultsKnots(poles0, mults0, knots0, periodic0, degree0)
obj0 = FreeCAD.ActiveDocument.addObject("Part::Spline","BSplineCurve0")
edge = bs0.toShape()
obj0.Shape = edge

# compute sample points

parameters = [float(i)/NUM for i in range(NUM+1)]
poc = [edge.valueAt(p) for p in parameters] # poc = points on curve
nor = [edge.valueAt(p)+edge.normalAt(p) for p in parameters] # nor = normals

# here is the coin stuff

coinVec = list()
indexes = list()
for i in range(NUM+1):
	coinVec.append(coin.SbVec3f(poc[i].x,poc[i].y,poc[i].z))
	coinVec.append(coin.SbVec3f(nor[i].x,nor[i].y,nor[i].z))
	indexes.extend([i*2,1+i*2,-1])

# indexes = [0, 1, -1, 2, 3, -1, 4, 5, -1, 6, 7, -1, 8, 9, -1, 10, 11, -1, 12, 13, -1, 14, 15, -1, 16, 17, -1, 18, 19, -1, 20, 21, -1]
# the -1 index value is a break in the polyline

node = coin.SoSeparator()
pts = coin.SoCoordinate3()
lineset = coin.SoIndexedLineSet()
node.addChild(pts)
node.addChild(lineset)

pts.point.setValues(0,len(coinVec),coinVec)
lineset.coordIndex.setValues(0,len(indexes),indexes)

sg = FreeCADGui.ActiveDocument.ActiveView.getSceneGraph()
sg.addChild(node)
#sg.removeChild(node)

And here are my 2 favorite links about coin :
https://grey.colorado.edu/coin3d/annotated.html
http://www-evasion.imag.fr/Membres/Fran ... index.html
UR_
Posts: 990
Joined: Tue Jan 03, 2017 8:42 pm

Re: non uniform distributed load

Postby UR_ » Wed May 02, 2018 9:34 pm

Chris_G wrote:
Wed May 02, 2018 9:26 pm
Here is an example
Thanks!
Will have a look at this.
Thank you very much!
UR_
Posts: 990
Joined: Tue Jan 03, 2017 8:42 pm

Re: non uniform distributed load

Postby UR_ » Sun May 06, 2018 5:21 pm

[/quote]
thschrader wrote:
Wed May 02, 2018 5:52 pm
Is there a possibility to speed this up?
Now it's a little bit faster.
So no more coffee breakes! :lol:

ApplyNonUniformLoad.FCMacro
(7.84 KiB) Downloaded 36 times

hardcoded user input is presetted for example file from here:


https://forum.freecadweb.org/posting.ph ... 8#pr231275


@thschrader: Please don't overshoot :lol:
phpBB [video]
thschrader
Posts: 1418
Joined: Sat May 20, 2017 12:06 pm
Location: Germany

Re: non uniform distributed load

Postby thschrader » Sun May 06, 2018 6:44 pm

UR_ wrote:
Sun May 06, 2018 5:21 pm
@thschrader: Please don't overshoot :lol:
no problem... :)
relax.jpg
relax.jpg (88.73 KiB) Viewed 503 times
Taufeeq2
Posts: 18
Joined: Fri Mar 30, 2018 12:39 pm

Re: non uniform distributed load

Postby Taufeeq2 » Mon May 07, 2018 10:08 am

there is a routine here http://web.mit.edu/calculix_v2.7/Calcul ... de190.html
But i dont know how to incoporate it in freecad
Jee-Bee
Posts: 1957
Joined: Tue Jun 16, 2015 10:32 am
Location: Netherlands

Re: non uniform distributed load

Postby Jee-Bee » Mon May 07, 2018 11:21 am

*DLOAD is the presure constraint in FreeCAD. only when applaying non uniform distributed load load you have to use the script somwhere in this topic
thschrader
Posts: 1418
Joined: Sat May 20, 2017 12:06 pm
Location: Germany

Re: non uniform distributed load

Postby thschrader » Mon May 07, 2018 4:34 pm

UR_ wrote:
Sun May 06, 2018 5:21 pm
Now it's a little bit faster.
So no more coffee breakes! :lol:
Yep. Writing the load needs only seconds. Very nice!
intze_tank.JPG
intze_tank.JPG (88.74 KiB) Viewed 458 times
Pep
Posts: 3
Joined: Fri Sep 20, 2019 12:12 pm

Re: non uniform distributed load

Postby Pep » Fri Sep 20, 2019 12:22 pm

Hey everyone,

I was trying to use this, since it would be extremely useful to me. However, when I run it, it computes as if there is no load distribution. The report contains the following errors:

...
Pressure on shell mesh at the moment only supported for meshes with appropriate group data.
...
PySide2.QtCore.QProcess.ProcessState.NotRunning
PySide2.QtCore.QRegExp('\*ERROR.*\n\n', 1, 0)
...

with only the first one being red. Anyone knows what is going wrong here?
User avatar
bernd
Posts: 8414
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland

Re: non uniform distributed load

Postby bernd » Fri Sep 20, 2019 3:15 pm

would you send the file you tested with, a link to the code you used and you freecad version info. than we could try to reproduce your problem