Biomedical Engineering Workshop Session 1: Stress shielding in a Hip joint prosthesis

Recording

Introduction

A hip joint prosthesis is used to replace a damaged hip joint. The most common materials used for artificial hip joints are metal alloys, ceramic or certain types of plastic. It is important to study these prostheses to understand how much compressive force will be transferred directly to the femur bone.

Ideally we would want a prosthetic joint component to carry stress in the same way as the original bone, however, this does not happen in real life.

According to the Department of Radiology at the University of Washington:

In a hip prosthesis, much of the load applied to the femoral component tends to be transmitted to the bone near its distal tip. The bone near the proximal part of the component tends to have less force transmitted through to it. What happens to the native bone that is now no longer receiving its usual loading? Bone loss occurs here. This phenomenon is called “stress shielding”. Since one can get quite a bit of stress shielding around a prosthesis, it’s no mystery why one sees progressive bone loss around prosthetic components over the years on follow-up radiographs.

The concept of stress shielding helps to explain the usual life course of a joint prosthesis. A hip prosthesis, for example, may last for 5 – 10 years before sufficient stress shielding occurs that the prosthesis loosens enough to be symptomatic. The loose prosthesis is then removed by the orthopedist, and a new one is put in. However, the native bone around the original femoral component now generally has substantially diminished bone stock. Therefore, the new one has to have a longer stem so that it will reach down far enough to seat in normal bone. This new prosthesis works for another 5 – 10 years, until stress shielding has caused enough bone resorption around this new prosthesis for it too to become symptomatically loosened. Then, a newer, even longer prosthesis is placed, and the cycle continues. Obviously, this process can’t go on forever, since you eventually run out of undisturbed bone in which to seat the prosthesis.

In this exercise, we will focus on a hip joint prothesis model considering different material combinations for our artificial hip joint to better understand how stresses are transferred to the femur bone. You will perform 3 different simulations using the same geometry with different material combinations as shown:

The image below shows settings of loading conditions for all of the 3 cases. The loading is assumed to be generated by a human walking at speed of 1 km/h [1].

$$~$$
To start this exercise, please import the project into your workspace by clicking on the link below:

Mesh Generation

In the Mesh Creator tab, click on the geometry hip_joint_prosthesis

Then, click on the New Mesh button in the options panel.

Select the mesh Type Tet-dominant. This operation will automatically create a mesh for the geometry. The cell size and refinement will be adapted automatically. Please choose the following parameters:

  • Element sizing Automatic
  • Mesh fineness 3-Moderate
  • Element orderFirst order
  • Number of computing cores 8

Click on Save to preserve the mesh settings

Now click the Start button to begin the mesh operation. The meshing job will start in a few moments (all of the computation is done via cloud computing).

The mesh operation takes about 5 minutes to complete. You will see the Finished status in the lower left corner when it is ready.

Simulation

For setting up the simulation switch to the Simulation Designer tab and click +New to create a new simulation.

A pop-up will appear. Give the project a name (optional) Co-Cr-Mo on Ti-6Al-4V and click Create

Since our load will be static and the deformation will be small, select the analysis type Static analysis - advanced under Solid mechanics. Let the Nonlinear analysis remain set to false and click Save.

After saving, the Navigator now looks as shown below. Here the entries in red must be completed.

Click the Domain item in the Navigator and select the mesh that you just created. Click Save. The mesh will then automatically load in the viewer.

Next, change the render mode to Surfaces in the top viewer bar to interact with the mesh more easily.

Due to different material definitions for the bone and hip joint, we have to have a geometry that contains multiple volumes. These need to be bonded together so that the solver knows that they are connected. We will proceed with defining the bonded contacts between all of the solids.

Go to Contacts and click +New to create a new contact.

Head - stem contact:

For creating a bonded contact between the head and stem of the hip joint, rename the contact definition to Head - stem contact (optional).

Hide all the volumes except volumeOnGeoVolumes_4 from the scene viewer in the top right.

Select all the faces that will come in contact with the stem. Add your selection from viewer under Master entity. This will add all the selected faces. (Note: make sure you are in Pick faces mode before the selection)

Click Clear selection to clear the selected surfaces.

Follow the same procedure for selecting the surfaces of the stem and assign these faces to the Slave entity. Click Save to create the contact.

To reconfirm, please make sure your selected entities match with those provided in the table below:

Stem - bones contact:

Now create the contact between the stem and bones. Hide all of the solids except volumeOnGeoVolumes_0,volumeOnGeoVolumes_1 and volumeOnGeoVolumes_2

Select all of the internal surfaces that are in contact with the stem. Assign them as the Master entity.

Do the same for stem and assign the faces as the Slave entity. Click Save to save the contact definition. (make sure to clear the previous selection before doing this)

To reconfirm, please make sure your selected entities match with those provided in the table below:

Trabecular - marrow contact:

Hide all volumes except volumeOnGeoVolumes_0. Select the lower face and assign it as the Master entity

Hide all volumes except volumeOnGeoVolumes_1. Select the lower face and assign it as the Slave entity. Click Save to save the contact definition.

To reconfirm, please make sure your selected entities match with those provided in the table below:

Cortical - trabecular - marrow contact:

Hide all volumes except volumeOnGeoVolumes_0 and volumeOnGeoVolumes_1. Select all of the outer faces and assign them as the Master entity.

Now hide all volumes except volumeOnGeoVolumes_2. Select all of the internal faces and assign them as the Slave entity. Click Save to save the contact definition.

To reconfirm, please make sure your selected entities match with those provided in the table below:

Now that the contacts are set up, we will define the material definition for all of our volumes. The material definition for the bones and the hip joint are taken from reference [1].

Go to Materials under tree and click + New

Head (Co-Cr-Mo alloy):

First we will define the material for the hip joint head. Rename the newly created material to Head (Co-Cr-Mo alloy) (optional).

Change the Young’s modulus, Poisson’s ratio and Density values to 210e9, 0.3, and 8800 as shown in the figure below.

Select volumeOnGeoVolumes_4 under Topological Mapping

Click Select Assignment to see if the right volume is assigned to the defined material. Click Save to save this material definition.

Femoral stem (Ti-6Al-4V alloy):

Proceed with the same steps as above to create a new material. Rename the newly created material to Femoral stem (Ti-6Al-4V alloy) (optional).

Change the Young’s modulus, Poisson’s ratio and Density values to 114e9, 0.3, and 4430 as shown in the figure below.

Select volumeOnGeoVolumes_3 under Topological Mapping

Click Select Assignment to see if the right volume is assigned to the defined material. Click Save to save this material definition.

Cortical bone:

Proceed with the same steps above to create a new material. Rename the newly created material to Cortical bone (optional).

Change the Young’s modulus, Poisson’s ratio and Density values to 16e9, 0.3, and 1850 as shown in the figure below.

Select volumeOnGeoVolumes_2 under Topological Mapping

Click Select Assignment to see if the right volume is assigned to the defined material. Click Save to save this material definition.

Trabecular bone:

Proceed with the same steps above to create a new material. Rename the newly created material to Trabecular bone (optional).

Change the Young’s modulus, Poisson’s ratio and Density values to 1e9, 0.3, and 900 as shown in the figure below.

Select volumeOnGeoVolumes_0 under Topological Mapping

Click Select Assignment to see if the right volume is assigned to the defined material. Click Save to save this material definition.

Bone marrow:

Proceed with the same steps above to create a new material. Rename the newly created material to Bone marrow (optional).

Change the Young’s modulus, Poisson’s ratio and Density values to 0.3e9, 0.45 and 1000 as shown in figure below.

Select volumeOnGeoVolumes_1 under Topological Mapping

Click Select Assignment to see if the right volume is assigned to the defined material. Click Save to save this material definition.

We will now proceed the constraint and load definitions for our simulation case, as shown in figure below.

Go to the Boundary Conditions item in the Navigator and click +New next to Constraint to first define the fixation boundary condition.

Fixation:

Rename the newly created constraint to Fixation (optional). Select Fixed support as the Type.

Change the Filter for entity types to faces under Topological Mapping

Select the bottom two faces of the model and click Add selection from viewer to assign these faces to the defined constraint.

Click Save to save the constraint definition. (Make sure you are in Pick faces mode before the selection)

Load_1:

Next we will define our first load boundary condition on the femur hip joint head. Proceed to Loads under tree and click +New to create a new load definition.

Rename the newly created constraint to Load_1 (optional). Select Force as the Type.

Change fx, fy and fz to -785, 17.5 and 1850 respectively.

Select the top two faces of the hip joint head and click Add selection from viewer to assign these faces to the defined load condition. Click Save to save the constraint definition.

Load_2:

Next we will define our second load boundary condition on top of the cortical bone. Create a new load.

Rename the newly created load to Load_2 (optional). Select Force as the Type.

Change fx, fy and fz to 471, 144, -967 respectively.

Select the top two faces of the cortical bone and click Add selection from viewer to assign these faces to the defined load condition. Click Save to save the constraint definition.

Now go to the Simulation control item in the Navigator

Change the Number of computing cores to 8. Click Save to register the changes.

Next we will add the principal stress solution fields under Result Control which will let us see the maximum principal stresses in the simulation results. The maximum principal stresses will show the compressive stresses in our model, thus showing the stress shielding effect.

Go to Solution fields under Result Control and click on +New to add a new solution field. Rename the newly created solution field to principal stress (optional).

Select stress and principal stress as the Type and Stress type respectively. Click Save to save the solution field.

Now everything is done for setting up the first simulation run. Click on Simulation runs and create a new run. Give the simulation run a suitable name in the pop-up window that appears e.g. Run - Co-Cr-Mo on Ti-6Al-4V (optional) in this case.

Click Create to create a new run.

The new run will be created under Simulation Runs. Click Start to run the simulation.

The simulation run will take approx. 10 min. to finish. Now you can proceed to configurations 2 and configuration 3

Configuration 2:

Once you have started the run with the first configuration setup, go ahead and make a duplicate of this simulation in order to perform the simulation with different material type for the hip joint (configuration 2).

Rename the simulation to Co-Cr-Mo on UHMWPE.

All you need to do is to change the material definition of Femoral stem to Ultra High Molecular Weight Polyethylene (UHMWPE).

Click on Femoral stem (Ti-6Al-4V alloy) under Materials, rename it to Femoral stem (UHMWPE) (optional).

Change the Young’s modulus, Poisson’s ratio and Density values to 0.9e9, 0.46 and 930 as shown in the figure below. Click Save to save the material definition.

Next create a new simulation run, rename it to Run - Co-Cr-Mo on UHMWPE (optional) and click Start to start the run.

Configuration 3:

For Configuration 3, follow the same steps to duplicate the simulation and rename it to Concrete on Concrete (optional).

This time we have to change the material of both femoral hip joint head and stem to concrete. For changing the material of hip joint head, go to Head (Co-Cr-Mo alloy) and click Import from material library to import the concrete material available already in the SimScale material library database.

Click on Concrete and click Save. Rename the material to Head (Concrete) (optional) and click Save to save the material definition.

Do the same process for changing the material of the Femoral stem (UHMWPE) to concrete. Rename it to Femoral stem (Concrete) (optional).

Next create a new run, rename it to Run - Concrete on Concrete (optional) and click Start to start the run.


If you are interested in seeing the effects on the hip joint for other materials, feel free to follow the same configuration steps to test your own material models

Post-processing

Once the simulation is over, click on Post-processor tab to view the results.

Select the Solution fields of the simulation run you want to view results. In this case it is Run-Co-Cr-Mo on Ti-6Al-4V.

In order to differentiate between the deformed and undeformed geometry of the bone, change the field (at the top left corner) to Solid color and change the Opacity to 0.1 in the Property panel. This will make the bone transparent.

To see the deformed geometry, click on Add Filter and then Warp by Vector.

You will see a Warp by Vector filter is added under your solution field. Again, change the field (at the top left corner) to Solid color and change the Opacity to 0.4 so we can compare the original and deformed hip joint.

Use a suitable scale factor to scale the deformed geometry, 30 in this case.

In order to view the stresses in the bone, we will add 2 slice filters. Click on Run-Co-Cr-Mo on Ti-6Al-4V above WarpByVector1 (note: you need to create the slices from the original result field).

Then click on Add Filter and select Slice. Change the Normal of the Slice to (0,1,0) and de-select Show Plane

Change the field in the top viewer bar to Principal_stress and PRIN_1 (1st Principal Stress)

Now we will add another Slice. Click on Run-Co-Cr-Mo on Ti-6Al-4V above Slice 1.

Then click on Add Filter and select Slice. This time, change the 3rd value of the Origin to 0.03 (z-direction) and the Normal of the Slice to (0, 0, 1) and de-select Show Plane

Change the field in the top viewer bar to Principal_stress and PRIN_1 (1st Principal Stress)

To view the stresses, click on Scale and use the Auto-Range Option to scale the stresses. Select the ruler to show the Stress values in the Viewer

You can hide or show filters by selecting or de-selecting the eye icons, for example:

Now, we will load the results of Run - Co-Cr-Mo on UHMWPE to the Viewer. HOVER your mouse over the Solution field item and RIGHT CLICK and choose Add results to viewer

The results are now overlapping so for viewing the results separately, we need to use the Transform filter.

Make sure Run - Co-Cr-Mo on UHMWPE is selected

Now Add Filter and select Transform to move the results along the x-axis so that they have a gap of 0.15 meters between them by giving the value of 0.15 next to the Translate in the x-direction.

De-select the eye icon for Run - Co-Cr-Mo on UHMWPE so you can only see the transformed solution

Change Transform to a Solid color and change the Opacity to 0.1 in the Property panel. This will make the bone transparent.

From Transform1 we can add the same filters as we did for Run-Co-Cr-Mo on Ti-6Al-4V to compare the results.

To see the deformed geometry, click on Add Filter and then Warp by Vector.

You will see a Warp by Vector filter is added under your solution field. Again, change the field (at the top left corner) to Solid color and change the Opacity to 0.4 so we can compare the original and deformed hip joint.

Use a suitable scale factor to scale the deformed geometry (you will notice that 30 is too much in this case since the material for the stem is not as stiff). Use a scale factor of 5.

In order to view the stresses in the bone, we will add 2 slice filters. Click on Transform1

Then click on Add Filter and select Slice. Change the Normal of the Slice to (0,1,0) and de-select Show Plane

Change the field in the top viewer bar to Principal_stress and PRIN_1 (1st Principal Stress)

Now add the second Slice. Click on Transform1

Then click on Add Filter and select Slice. This time, change the 3rd value of the Origin to 0.03 (z-direction) and the Normal of the Slice to (0, 0, 1) and de-select Show Plane

Change the field in the top viewer bar to Principal_stress and PRIN_1 (1st Principal Stress)

To view the stresses, click on Scale and use the Auto-Range Option to scale the stresses from Slice4

Do the same procedure for the 3rd configuration results, ‘Run - Concrete on Concrete’ in this case. This time use Translate x-axis value of 0.3 and a WarpByVector Scale Factor of 5.

Use Slice2 to Scale the stresses using Auto-Range

In this workshop we are using maximum principal stress for comparison. The purpose of using this stress quantity to visualize the results is that it clearly shows the tension and compression regions (+ indicates tension and - indicates compression).

It is interesting to note that results of Concrete and UHMWPE are very similar and lead to higher compressive stresses in regions of the bone (please see the green/yellow bone regions in the image above). This is due to the fact that these materials are less stiff than TI-6AL-4V and thus more of the load is transferred to the bone.

On the other hand, TI-6AL-4V is a more stiff material, thus it shares more of the compressive stresses resulting in less compressive stress in bone (see blue regions in inner implant on far right in the image above).

What other observations can you make about the results? Which prosthesis would you choose and why?

You can save post-processing screenshot by clicking on camera icon under Viewport Tools. The screenshot will appear under Screenshots section of a Result Evaluation tree item.


References

[1] Noyama, Yoshihiro, et al. “Bone loss and reduced bone quality of the human femur after total hip arthroplasty under stress-shielding effects by titanium-based implant.” Materials Transactions 53.3 (2012): 565-570.
[2] The base model for the femur bone used in this exercise is provided by Negar An from GrabCAD


Appendix:

PDF Version of the Biomedical Engineering Workshop - Session 1

1 Like

Hi there,
the project link is wrong. It is the “aircraft wing design optimization”

cheers

Luca

Thanks Luca,

I just updated the link :slight_smile:

Cheers,

Milad

Hello!

As seen in the boundary condition’s sketch, load_1 and load_2 have different directions, however when explaining the values, both have the same one…but in the screenshots they are different. Which one is the correct one?

Thank you in advance!

@fabiandeleon - load 2 should be 471,144, -967 as shown in the screenshot. Thanks for catching that, we’ll update the tutorial to the correct load!

Best,
Anna

Hey Everyone!

I think I should have mentioned this already in the tutorial but better right than late :slight_smile:

You can actually select faces much easily by using ‘invert selection’ operation. As an example, the internal faces of outer Cortical bone can be selected via this procedure. How you can do is pretty straight forward, just hide all the solids except the Cortical bone and then select all the external faces which are less and much easier to select. Then right click anywhere in the viewer and select invert selection. You will see that all the internal faces will be selected. Please see a small GIF explaining this procedure below:

You can do the same procedure for other face selections also. This procedure needs much attention as it can easily lead to wrong selection at the end therefore, please make sure that you properly select all the faces before inverting them.

Hope this will help to speed up your simulation setup process. If you have any question/s, feel free to ask.

Happy Simulating!

Ahmed

6 Likes

Hi all,
I finished the simulations, but there aren’ t compression zones (negative values) as the workshop does.
I checked the loads (both right) and the contact surfaces.
cheers Luca

Hi @l_trefiletti - notice that you have selected the Principle Stress and Magnitude rather than Principal Stress and PRIN_1 which is the maximum principle stress in this case. You can change this in the drop down right next to where you selected Principle Stress.

Best,
Anna

Hi Anna,
now it is better!!

Thank you

Luca

Hey Luca!

Nice that you have the results! But they look bit odd. Can you please recheck your bonded contacts if they applied correctly, specially the selected master and slave faces?

Best,
Ahmed

Hi Ahmed,
now it’s ok.
You are right, I missed some surface in a contact!!!

thanks

Luca

Great @l_trefiletti - looks perfect now :slight_smile:

1 Like

Hi @Milad_Mafi,

Thanks for another cracking tutorial, this will definitely help with a simulation I have in mind for the near future!

Cheers,
Darren Lynch

1 Like

hello friends ,
I actually have some problems in post processing , after I add the second model (Run Co-Cr-Mo on UHMWPE) , so when I add the Transform filter even when I change the second section in translate to 0.05 or 0.1 so the two models do not separate or move separatley , also with slice filter , the plane is along the z-axis so can anyone help me with it cause i
I’m sure there is no mistake I did during stimulation design or run cause I repeated twice , so I will realy appreciate any small advice with it
thank you

Hi @warsalkarkhy,

Can you make your project public so we can take a look. You can do this in ‘Edit project properties’

1 Like

yes of course

Dear Anna , is the project already visible to everyone now or not yet?
thnks :slight_smile:

Yep - I can see it now! Thanks