Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

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

Modify FE Mesh by Editing CAE file directly? 3

Status
Not open for further replies.

MrSamuel

Bioengineer
Oct 13, 2011
45
0
0
CA
I need to do FEA on many similar organic parts. So rather than generating meshes and cae files for each of them, I would like to deform a master FE mesh to each of the parts. The deformation algorithms I have developed elsewhere, so no need for help on that.

What I am hoping for is the ability to access a list of vertices of the FE mesh through the CAE file, modify the locations, and put them back into the cae file, then run the new sim.
I tried to open the CAE file in notepad, and as I suspected, its a bunch of giberish! :-<

Anyone have any ideas how to do this?

Thanks,
Sam
 
Replies continue below

Recommended for you

Try using a macro if you're repeatedly modfifying geometry. You'll still have to open cae each time but the macro will make the changes quickly.

 
I've never written a macro for Abaqus before. Will I be able to re-position any given vertex of a part's FE mesh?
The parts are organic and the deformations are free form, so need to have the ability to translate each FE mesh vertex independently for the part.
Could you show me a sample script for translating a FE mesh vertex, or maybe point me in the right direction?

Thanks,
Sam
 
My typical work flow when using Abaqus is to import an iges part into Abaqus cae directly, then mesh it inside Abqus cae. So I have never used input files before. I am open to suggestions though.
Really I just need a list of FE mesh vertices for a part so that I can use my deformation algorithm to translate the vertices, then replace the original vertices in abaqus with the new vertices. It would be great if I could get the mesh vertices in a text file from abaqus, modify them, and then give the text file back to Abaqus.

I'm not even sure where the input file resides, how to get it from a cae file, and how to put it back into a cae file...

Thanks,
Sam
 
Once you import the model and mesh it you can have Abaqus write the input file, this is done by creating a job and right-clicking on the job and choose "Write Input File". This file has the mesh details (nodes, elements, and connectivity). It is the file that Abaqus actually runs when you perform an analysis.

Your macro (or whatever it is) can then either modify it or create new ones.

HTH,
Dan

Han primo incensus
 
Great, thanks!

That's got me rolling for now, I may have some more questions down the road on this same topic.

Thanks again,
Sam
 
I guess times are changing. It used to be that every analyst was familiar with the deck (input file) and knew what every row in there meant (at least the good ones did). Perhaps that is dying now that pre/posts are getting better and more seamless. The Patran/ABAQUS guys still have to hack the deck quite a bit.

But I still like to look at (and work in) the deck manually. At lot of times it is more efficient and is always the end product from your pre processor.

Being familiar with a deck has many advantages. One notable one is that it is sometimes easier to communicate/demonstrate how you set up a problem since sharing a deck is easy. It is also pre/post independent (many ABAQUS users still use Patran). You can also build entire models without having to use a pre processor so it can be very efficient to run parametric studies.

Brian
 
Modifying the input file/deck still has its place but for anyone with access to CAE python scripting offers a very useful method of pre-processing. I've found it alot easier to deal with things like element connectivities etc. with Abaqus python (since there is a built in method to deal with them).

For the original question, I presume by vertices of the mesh you mean mesh nodes? Its very easy to map mesh nodes within CAE with python...for example here's a snippet of code that maps a flat orphan mesh part onto a cylindrical one in CAE.

for eachnode in MeshPart.nodes:
theta=eachnode.coordinates[1]/Radius
newcoord1=eachnode.coordinates[0]
newcoord2=(Radius-eachnode.coordinates[2])*cos(theta)
newcoord3=(Radius-eachnode.coordinates[2])*sin(theta)
MeshPart.editNode(nodes=eachnode,coordinate1=newcoord1,coordinate2=newcoord2,
coordinate3=newcoord3)
 
And there are still some things that can't be done in the CAE!

I can't say that I've done a lot with the inp files but I've played with them now and then.

Han primo incensus
 
Thanks so much for your thoughts.
I'm calculating the deformations withing a plugin for Rhinoceros 3D, so it is really convenient to just modify the inp file as a text file and send that off to abaqus on any computer.
The models are fairly complicated and the deformations are large, so I'm hoping the FE mesh isn't distorted beyond use... If thats the case, then maybe I will use python instead, automate the remeshing and so on...

In regards to the inp file, I should probably check out the manual for a detailed guide on each line. Is that the best way to learn?
Couple quick questions I had about it:
- nodes are listed as such: number, x-coord, y-coord, z-coord
how does abaqus know which node to connect to which node to form an element? Is it just the first 4 form the first tetrahedron, the second four form the second tetrahedron (in the case of tetrahedrons?)
- picked surfaces are described by a long string of numbers, these are just referring to nodes?

Thanks!
Sam
 
I have found that the CAE default method of using assembly and part definitions makes rooting around in the node and element tables very difficult. If you want become more familiar with the .inp instead of relying on the CAE interface (I HIGHLY recommend this, it makes debugging much easier once you know what each line is doing), have CAE write out a 'flattened' input deck. This way, you can still deal with the assembly of part instances in CAE as you're used to, but can then go into the input deck without having to figure out which part you're in....
With that said, a flattened deck will start with a node table
*NODE
Node number, x coordinate, y coordinate, z coordinate.
1, 0.0, 0.0, 0.0

The solver knows how to turn these into elements with the element connectivity table.
*ELEMENT, TYPE=...
element number, node 1, node 2, node 3, ....etc..
1, 1, 2, 3, 4...etc.

Surfaces are then defined based on the elements defined above
*SURFACE
element number, face identifier
1,S1


The manual is very good detailing what the data lines required for a given element type are.
 
OK, I'm going to try first to work with the input file.

By right clicking on the job and selecting 'write input', I get the input file. How do I get the flattened input file?

Thanks,
Sam
 
There are a few ways. You can add the following line to your abaqusv6.env file

noPartsInputFile=ON

OR enter the following line into the small command window at the bottom of the CAE sessions

mdb.models['model name'].setValues(noPartsInputFile=ON)

Depending on which version of CAE you're using, I believe there's a check box somewhere for 'use parts and instances'. You may be abe to just uncheck it.
 
Status
Not open for further replies.
Back
Top