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!

Assigning material properties to individual elements. 1

Status
Not open for further replies.

Aravindkj

Bioengineer
Jun 15, 2014
25
0
0
SG
Hi guys,
I want to assign material property for individual elements. My exact problem statement is if ESEDEN (Strain energy density) exceeds a threshold value in a particular the material property for that element should be changed.
I have written a python script which works in such a way that the material property of the section changes. But I have no idea on how to change element property for individual elements. Please help me. Any guidance is much appreciated
Thank you
Regards
Aravind
 
Replies continue below

Recommended for you

Given your problem statement and that you are a bioengineer, my guess is that you are trying to model remodeling/adaptation. If that is correct, I am not sure if Python scripting is the way to do this because you post-processing the field outputs. If that is not the case, what are you trying to achieve?

Are you new to this forum? If so, please read these FAQ:

 
I have pegs in the bone model. I measure the ESEDEN values in the elements around the peg. If they exceed a particular value it changes the material property of that particular element and run the simulation for n times. This is to simulate bone growth around peg. I am able to create a element set and read their ESEDEN and change the material property for that section. But I need to change for individual element. Is there any way. i tried a lot. Please help me. Thank you.
Cheers
Aravind
 
I do not understand: Why do you *need to* *run the simulation "n times"* after having changed a given element's stiffness? How do you calculate 'n'? What would running the model 'n times' achieve?

With such a limited description, I am afraid I can't help much and I still 'feel' a Fortran subroutine is the right way to accomplish this (assuming you are doing what I think you are doing).

Are you new to this forum? If so, please read these FAQ:

 
I want to simulate bone growth around the pegs over a period of time. Since I am working in university they don't have Fortran compiler. So I have to work with python.
 
1. The Intel Fortran Compiler is for $200 (or something like that!) and if you are using Linux, you might even be able to get gFortran to work with Abaqus. Visual Studio (or, at the very least, C++ libraries) is also required. Check Simulia website or google for details.

2. More importantly, how will the bone 'grow'? How will additional nodes and elements be created (or how will the existing elements grow in size)? How will the elements grow in the 'right' direction? Have you looked at the literature? A LOT of people have worked on this problem for more than two decades now; do not try to reinvent the wheel.

3. Talk to Simulia about their remodeling code (implemented in the user subroutine USDFLD) and see if they will be willing to share it with you. You may have to modify it (since the bone is not being eroded in your application; its growing .. but it may be a simple modification). Even if they can't share their code, perhaps they can share some other materials.

Are you new to this forum? If so, please read these FAQ:

 
Since I have few time left for
My thesis focus lie entirely on design of pegs.
So I have to simulate something like bone growth around the pegs. I am just stuck with the changing element properties. Because that's what he needs.
 
I'm a composite materials person so come from a different perspective (although bone is essentially a composite of HCA and collagen!). Doing this by (ab)using the .rpy scripts created by Abaqus sounds like a nightmare to me and I can't think why your supervisor would specify this. However, you could write python programs to do what you are after though (or MatlLab, we use both for this at my company)

Anyway, AFAIK Abaqus always requires a section to be assigned to individual elements in order for these elements to each have their own properties assigned to them, even if you're using continuum elements. As a result, if you want to update/assign properties to individual elements than each element must have its own section assigned to it.

Creating a section for every element who's properties you want to change via CAE or from .rpy files would be extremely tedious. If you can get the element numbers of all the elements you wish to modify then I think this should be quite doable . As a start you could just pick the elements from CAE with some jedi mouse clicking skills or get creative with partitions.

Once you know the numbers of elements of interest you could then write a script to create a material (and an orientation, seeing as bone is a composite) for every element/section, assign them and then get the program to print and slice the relevant lines into your input deck.

All the values for the materials could start off a being identical. What you could then do is run the model and use the script you have already created to identify elementsthat have exceeded your threshold parameter. You would then get your program from above to change the material properties associated with those elements. The re-run it.

As an example; for creating materials, pseudo code might be something like:
Nel= number of elements you are modifying
Create array or list or something of the element numbers of interest
Map, index, or similar (whatever is your preference) element numbers to list of 1 to Nel
Then start a loop such as;
while x is less than or equal to Nel:
print '*Material, name=Material-',x
print '*Elastic, type=ENGINEERING CONSTANTS'
print ' Elastic constant xA, Elastic constant xB, Elastic constant xC, etc...'
increase x by one
Reset x once you're out the loop
Map output back to element numbering list
Slice back into Abaqus .inp file

Once you've got something along the above lines running then write a program to do this automatically by going back and forth from Abaqus for a given number of iterations.

If you want to improve on what you've outlined (IMO at least) then what you could do is get Abaqus to print out the stress components for each element, read these from the .odb (there are various post on the internet on how to do this), take their eigen values and vectors, update material properties in an anisotropic manner, as that is what bone would naturally do.

 
Status
Not open for further replies.
Back
Top