Abaqus UMAT Subroutine for Localised Yarn Properties
Moderators: Martin, Developers
Abaqus UMAT Subroutine for Localised Yarn Properties
An Abaqus UMAT subroutine file is available for download which which computes yarn properties for every element based on the local fibre volume fraction data provided in the .eld export file produces by the Export to Abaqus functions in TexGen.
Instead of providing homogenised properties of yarns to Abaqus , raw fibre and matrix properties are specified and then the Chamis micromechanical model is used to compute yarn properties for every element. Every element will then have unique properties which depend on the fibre volume fraction.
Details can be found here: http://texgen.sourceforge.net/index.php ... Properties
I hope you find this useful (and thanks to Mikhail Matveev for providing the file )
Best regards,
Louise
Instead of providing homogenised properties of yarns to Abaqus , raw fibre and matrix properties are specified and then the Chamis micromechanical model is used to compute yarn properties for every element. Every element will then have unique properties which depend on the fibre volume fraction.
Details can be found here: http://texgen.sourceforge.net/index.php ... Properties
I hope you find this useful (and thanks to Mikhail Matveev for providing the file )
Best regards,
Louise
Re: Abaqus UMAT Subroutine for Localised Yarn Properties
Hi, Pls let's me know how to expand the results E1, E2, E3...
Thanks
Thanks
Re: Abaqus UMAT Subroutine for Localised Yarn Properties
Hello,
I'm not sure what you mean?
Best wishes,
Louise
I'm not sure what you mean?
Best wishes,
Louise
Re: Abaqus UMAT Subroutine for Localised Yarn Properties
I'm sorry my english is not good, please show me how I can get the mechanical properties of the material?
Re: Abaqus UMAT Subroutine for Localised Yarn Properties
Hello,
If you want to use the UMAT you would use the method described here: https://texgen.sourceforge.net/index.ph ... and_Abaqus but edit the .inp file as described earlier in this thread to set the material to use the UMAT.
Best wishes,
Louise
If you want to use the UMAT you would use the method described here: https://texgen.sourceforge.net/index.ph ... and_Abaqus but edit the .inp file as described earlier in this thread to set the material to use the UMAT.
Best wishes,
Louise
Re: Abaqus UMAT Subroutine for Localised Yarn Properties
Hi,
thanks for your help, but you have code UMAT Subroitine for get the mechanical results?
thanks
thanks for your help, but you have code UMAT Subroitine for get the mechanical results?
thanks
Re: Abaqus UMAT Subroutine for Localised Yarn Properties
Hello,
It's up to you whether you use the UMAT or not. This will enable you to ustilise the volume fraction information which is given in the .eri file. Alternatively you can just use material properties for a given volume fraction (assume it is the same throughout the yarn). This is a reasonable assumption if you are using an idealised model with constant yarn cross sections.
Best wishes,
Louise
It's up to you whether you use the UMAT or not. This will enable you to ustilise the volume fraction information which is given in the .eri file. Alternatively you can just use material properties for a given volume fraction (assume it is the same throughout the yarn). This is a reasonable assumption if you are using an idealised model with constant yarn cross sections.
Best wishes,
Louise
-
endrianputra
- Posts: 3
- Joined: Wed Apr 09, 2025 2:04 pm
Re: Abaqus UMAT Subroutine for Localised Yarn Properties
Hello,
Im currently using TexGen to generate data to train my machine learning. I dont have the properties of the yarns, i currently only have the properties of the fiber and matrix. I read the power point presentation about using Abaqus UMAT Subroutine to obtain the local yarn properties. Im facing a problem when using the chamis_model_final.for as Intel (Intel One API toolkit) is transitioning to the new ifx compiler, but Abaqus 2021 still requires the classic ifort, which only available in the older version (like 2021). The older version is no longer accessible for public. I encountered this issue and now im stuck. Is there any solution for this, or is there any alternatives that i can do if i dont know the yarn properties (i only know the fiber and matrix properties).
Also, i have another question. When im exporting abaqus voxel input file, i noticed that the local coordinate of the elements is not following the curvature of the yarn. Is this going to affect the final material properties? or do i need to reassign each local properties so it follows the curvature of the yarn? Is there any export methods that solve this problem and give an accurate simulation result?
Please kindly respond, thank you.
Im currently using TexGen to generate data to train my machine learning. I dont have the properties of the yarns, i currently only have the properties of the fiber and matrix. I read the power point presentation about using Abaqus UMAT Subroutine to obtain the local yarn properties. Im facing a problem when using the chamis_model_final.for as Intel (Intel One API toolkit) is transitioning to the new ifx compiler, but Abaqus 2021 still requires the classic ifort, which only available in the older version (like 2021). The older version is no longer accessible for public. I encountered this issue and now im stuck. Is there any solution for this, or is there any alternatives that i can do if i dont know the yarn properties (i only know the fiber and matrix properties).
Also, i have another question. When im exporting abaqus voxel input file, i noticed that the local coordinate of the elements is not following the curvature of the yarn. Is this going to affect the final material properties? or do i need to reassign each local properties so it follows the curvature of the yarn? Is there any export methods that solve this problem and give an accurate simulation result?
Please kindly respond, thank you.
-
endrianputra
- Posts: 3
- Joined: Wed Apr 09, 2025 2:04 pm
Re: Abaqus UMAT Subroutine for Localised Yarn Properties
Hello,
Thank you for your response. I also have another question, i want to use python script to automate the model and abaqus file .inp generation. Can i run the code outside texgen? or does it need to be inside texgen python console using this command [exec(open(r'python file directory').read())] ?
Also, during the model generation process, i also want to take screenshot of the top view and side view. The way i do this using scripting is that i did it manually first, and then copy the script in the "python output", then i merged the script into the model generation script. But i noticed that when i checked my file (where the model files are generated) and checked the screenshot, the screenshot of the model is not rotated at all. Is there any solution to this? Please kindly response, thank you.
Here i attached the code that i try to use,,
# Loop through each wovenwithprops_x folder
for i in range(1, 10): # Loop from wovenwithprops_1 to wovenwithprops_1000
folder_path = os.path.join(base_dir, f"wovenwithprops_{i}")
tg3_file = os.path.join(folder_path, f"wovenwithprops_{i}.tg3")
# Check if the TexGen file exists before proceeding
if os.path.exists(tg3_file):
print(f"Processing: {tg3_file}")
ReadFromXML(tg3_file) # Open TexGen file
# Rotate to Top View
Weave = GetTextile('2DWeave(W:2,H:2)')
Weave.Rotate(WXYZ(XYZ(1,0,0), math.radians(75)), XYZ(0,0,0))
Domain = Weave.GetDomain()
Domain.Rotate(WXYZ(XYZ(1,0,0), math.radians(75)))
weave2D = Weave.GetWeave2D()
weave2D.SetInPlaneTangents(False)
time.sleep(1) # Wait 1 second for TexGen to update
top_screenshot_path = os.path.join(folder_path, f"wovenwithprops_{i}_top.png")
GetRenderWindow().TakeScreenShot(top_screenshot_path, 1)
# Rotate to Side View
Weave = GetTextile('2DWeave(W:2,H:2)')
Weave.Rotate(WXYZ(XYZ(0,0,1), math.radians(90)), XYZ(0,0,0))
Domain = Weave.GetDomain()
Domain.Rotate(WXYZ(XYZ(0,0,1), math.radians(90)))
Weave = GetTextile('2DWeave(W:2,H:2)')
Weave.Rotate(WXYZ(XYZ(0,1,0), math.radians(15)), XYZ(0,0,0))
Domain = Weave.GetDomain()
Domain.Rotate(WXYZ(XYZ(0,1,0), math.radians(15)))
weave2D = Weave.GetWeave2D()
weave2D.SetInPlaneTangents(False)
Weave = GetTextile('2DWeave(W:2,H:2)')
Weave.Rotate(WXYZ(XYZ(1,0,0), math.radians(-20)), XYZ(0,0,0))
Domain = Weave.GetDomain()
Domain.Rotate(WXYZ(XYZ(1,0,0), math.radians(-20)))
weave2D = Weave.GetWeave2D()
weave2D.SetInPlaneTangents(False)
time.sleep(1) # Wait 1 second for TexGen to update
side_screenshot_path = os.path.join(folder_path, f"wovenwithprops_{i}_side.png")
GetRenderWindow().TakeScreenShot(side_screenshot_path, 1)
Thank you for your response. I also have another question, i want to use python script to automate the model and abaqus file .inp generation. Can i run the code outside texgen? or does it need to be inside texgen python console using this command [exec(open(r'python file directory').read())] ?
Also, during the model generation process, i also want to take screenshot of the top view and side view. The way i do this using scripting is that i did it manually first, and then copy the script in the "python output", then i merged the script into the model generation script. But i noticed that when i checked my file (where the model files are generated) and checked the screenshot, the screenshot of the model is not rotated at all. Is there any solution to this? Please kindly response, thank you.
Here i attached the code that i try to use,,
# Loop through each wovenwithprops_x folder
for i in range(1, 10): # Loop from wovenwithprops_1 to wovenwithprops_1000
folder_path = os.path.join(base_dir, f"wovenwithprops_{i}")
tg3_file = os.path.join(folder_path, f"wovenwithprops_{i}.tg3")
# Check if the TexGen file exists before proceeding
if os.path.exists(tg3_file):
print(f"Processing: {tg3_file}")
ReadFromXML(tg3_file) # Open TexGen file
# Rotate to Top View
Weave = GetTextile('2DWeave(W:2,H:2)')
Weave.Rotate(WXYZ(XYZ(1,0,0), math.radians(75)), XYZ(0,0,0))
Domain = Weave.GetDomain()
Domain.Rotate(WXYZ(XYZ(1,0,0), math.radians(75)))
weave2D = Weave.GetWeave2D()
weave2D.SetInPlaneTangents(False)
time.sleep(1) # Wait 1 second for TexGen to update
top_screenshot_path = os.path.join(folder_path, f"wovenwithprops_{i}_top.png")
GetRenderWindow().TakeScreenShot(top_screenshot_path, 1)
# Rotate to Side View
Weave = GetTextile('2DWeave(W:2,H:2)')
Weave.Rotate(WXYZ(XYZ(0,0,1), math.radians(90)), XYZ(0,0,0))
Domain = Weave.GetDomain()
Domain.Rotate(WXYZ(XYZ(0,0,1), math.radians(90)))
Weave = GetTextile('2DWeave(W:2,H:2)')
Weave.Rotate(WXYZ(XYZ(0,1,0), math.radians(15)), XYZ(0,0,0))
Domain = Weave.GetDomain()
Domain.Rotate(WXYZ(XYZ(0,1,0), math.radians(15)))
weave2D = Weave.GetWeave2D()
weave2D.SetInPlaneTangents(False)
Weave = GetTextile('2DWeave(W:2,H:2)')
Weave.Rotate(WXYZ(XYZ(1,0,0), math.radians(-20)), XYZ(0,0,0))
Domain = Weave.GetDomain()
Domain.Rotate(WXYZ(XYZ(1,0,0), math.radians(-20)))
weave2D = Weave.GetWeave2D()
weave2D.SetInPlaneTangents(False)
time.sleep(1) # Wait 1 second for TexGen to update
side_screenshot_path = os.path.join(folder_path, f"wovenwithprops_{i}_side.png")
GetRenderWindow().TakeScreenShot(side_screenshot_path, 1)
-
endrianputra
- Posts: 3
- Joined: Wed Apr 09, 2025 2:04 pm
Re: Abaqus UMAT Subroutine for Localised Yarn Properties
Hello,
I'm sorry, i have another question. To calculate the composite modulus using the following modified rule of mixture:
E_comp = nL * n0 * E_yarn * (Vyarn/VRVE) + Em * (1 - (Vyarn/VRVE))
Does the domain volume fraction accounts for the volume fraction inside the yarn? Or domain volume fraction only counts the ratio of yarn volume/total domain volume? (in simple terms, does QuickCalculateDomainVolumeFraction calculates Vfiber/VRE or Vyarn/Vrve). Im kinda confused right now, because i already did insert the yarn properties using rule of mixture. Now, to calculate the whole composite properties, i can also use modified rule of mixture for woven composite (with n0 = 0,5 correction factor for biaxial 0-90 and nL = 1 for continuous fiber). Thus, should use the volume fraction of Vyarn/VRVE right?
Please kindly response, thank you.
I'm sorry, i have another question. To calculate the composite modulus using the following modified rule of mixture:
E_comp = nL * n0 * E_yarn * (Vyarn/VRVE) + Em * (1 - (Vyarn/VRVE))
Does the domain volume fraction accounts for the volume fraction inside the yarn? Or domain volume fraction only counts the ratio of yarn volume/total domain volume? (in simple terms, does QuickCalculateDomainVolumeFraction calculates Vfiber/VRE or Vyarn/Vrve). Im kinda confused right now, because i already did insert the yarn properties using rule of mixture. Now, to calculate the whole composite properties, i can also use modified rule of mixture for woven composite (with n0 = 0,5 correction factor for biaxial 0-90 and nL = 1 for continuous fiber). Thus, should use the volume fraction of Vyarn/VRVE right?
Please kindly response, thank you.
Re: Abaqus UMAT Subroutine for Localised Yarn Properties
Hello,
Sorry for the slow response, I was off work last week.
The domain volume fraction functions take into account the volume fraction inside the yarn. The differences are explained in the User Guide here: https://texgen.sourceforge.io/index.php ... e_Fraction
You can run Python scripts using the API without the GUI as long as you have the access to the appropriate TexGen modules.
I haven't tried to take a screenshot from a script but, intuitively, I think that the render window would, by default, access your original weave not the rotated one. When you use the rotate option you are changing your actual model, not just the view.
Hope that helps,
Louise
Sorry for the slow response, I was off work last week.
The domain volume fraction functions take into account the volume fraction inside the yarn. The differences are explained in the User Guide here: https://texgen.sourceforge.io/index.php ... e_Fraction
You can run Python scripts using the API without the GUI as long as you have the access to the appropriate TexGen modules.
I haven't tried to take a screenshot from a script but, intuitively, I think that the render window would, by default, access your original weave not the rotated one. When you use the rotate option you are changing your actual model, not just the view.
Hope that helps,
Louise