Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Applying a load to a datum point using findAt

Status
Not open for further replies.

Bailey40894

Mechanical
Apr 27, 2015
4
Hello,

I am studying tree branches with Abaqus and my model is a wire connected by 3D datum points. To represent leaves, a concentrated force is applied to that point on the branch, which is an x,y,z coordinate that already exists in the model. Modeling these tree branches is very time consuming, so I am trying to automate the process with the help of MATLAB.

My problem is applying the concentrated force with the findAt command. The error I get is that Abaqus can't find the geometric entity for each load at it's respective coordinate, even though the correct coordinates for the datum point are entered. An example of my code to apply a load is:

mdb.models['Model-1'].rootAssembly.Set(name='Set-1', vertices=
mdb.models['Model-1'].rootAssembly.instances['Part-1-1'].vertices.findAt
(((0.544,0.134,0.165),)))
mdb.models['Model-1'].ConcentratedForce(cf3=-0.00981, createStepName='Step-1',
distributionType=UNIFORM, field=' ', localCsys=None, name='P11', region=
mdb.models['Model-1'].rootAssembly.sets['Set-1'])

My theory is that with findAt, Abaqus can't locate the exact datum point because of the connecting wires at each end.

I have been stuck for a week or two now, and with thorough searching through different forums and through the Abaqus Scripting Reference Manual, I can't find a solution.

Any help would be greatly appreciated - Thank you in advance!
 
Replies continue below

Recommended for you

You can not put a datum point into a set and you can not apply a point load to a datum point. Try it in the GUI and you'll see that it is not possible.

You can apply point load to real geometric points, reference nodes or nodes of your mesh.

When you want to have your definitions on the geometry (which is recommended), then you could partition your geometry to get a geometric point at the desired location and use that one.
 
Mustaine3, sorry, I shouldn't have said applying loads to datum points. Now I am aware of the difference.

Anyway, I want to apply the load to it's real geometric point. The findAt command will not find the geometric point. The error I get is that Abaqus can not find the "geometric entity at (x.x,x.x,x.x)" when the geometric point does exist. Like I said before, my model consists of 3D points, connected by wires. Is there any reason why I cannot use the findAt command to apply the load to the geometric point?

Thank you for your help, and thank you for clearing up that confusion for me.
 
I've just tried a small example and had no problem.

Code:
from abaqus import *
from abaqusConstants import *

x=mdb.models['Model-1'].rootAssembly.instances['Part-1-1'].vertices.findAt(((0,15,0),),)

mdb.models['Model-1'].rootAssembly.Set(name='Set-1', vertices=x)

y=mdb.models['Model-1'].rootAssembly.sets['Set-1']

mdb.models['Model-1'].ConcentratedForce(cf2=6.0, createStepName='Step-1',
distributionType=UNIFORM, field='', localCsys=None, name='Load-foo', region=y)
 
Mustaine3, thank you for the quick reply, and I really appreciate your help. I literally put in the same exact code as yours, I just changed the coordinates and load to match mine. Still no luck and I get the same error.

The loads are in the Abaqus file, except it says "the set 'Set-x' which is associated with the region to which the selected load is applied, has been suppressed, deleted, renamed, or excluded or is a part of a reference representation..."

The wire geometry for the branches are somewhat complex and there are usually about a minimum of 80 datum points with wires connecting them.

For some reason, I can successfully use the findAt command to apply a boundary condition, which is the first geometric point, but I can't use it when applying a load.

I still am not sure where to go from here. Maybe the structure of my script is wrong and I have just not realized.
 
If you can't find the problem, reproduce it in a small example and upload the .cae & .py.
 
Mustaine3, wow, so I use excel and MATLAB to automate the process to create the script. I was reducing my python file and I found that the reason why my findAt command would not work to apply loads was because I was rotating the instance before applying them. For some reason, it works when I rotate the instance after applying the loads.

I have to thank you, because if it wasn't for you, I would have never of stumbled upon that. I've been working on this for a few weeks now!
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor