Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new tutorial: Two-scale composite laminate simulation with ABAQUS #412

Open
wants to merge 34 commits into
base: develop
Choose a base branch
from

Conversation

IshaanDesai
Copy link
Member

This PR adds a new tutorial which simulates a composite laminate in a two-scale manner by also simulating the underlying micro structure. This case was developed at the Composite Structures Lab at the Aerospace Engineering department of the University of Michigan.

@IshaanDesai IshaanDesai changed the base branch from master to develop November 28, 2023 09:56
@IshaanDesai IshaanDesai self-assigned this Nov 28, 2023
@IshaanDesai IshaanDesai marked this pull request as ready for review December 4, 2023 09:22
@IshaanDesai
Copy link
Member Author

@MakisH @uekerman I have tested this tutorial on the Great Lakes cluster of the University of Michigan. I am trying to set up a testing framework at the University of Stuttgart, but it may take a while. In the meantime, I suggest finalizing this tutorial, so that we can present a case to users who are interested in coupling ABAQUS.

tools/cleaning-tools.sh Outdated Show resolved Hide resolved
two-scale-composite-laminate/clean-tutorial.sh Outdated Show resolved Hide resolved
@@ -0,0 +1,174 @@
*Heading
** Job name: Crossply_meso_18elements Model name: Model-1
** Generated by: Abaqus/CAE 2022
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we allowed to publish files generated by Abaqus? Does the Abaqus license specify what license is attached to these files? Is it compatible with our LGPL-3.0 license?

Maybe a better question: Can we automate (and parameterize) the generation of this file? What if I wanted to use a different mesh size?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried to look up if Abaqus imposes a license on auto-generated input files, and there are no clear instructions. There are ample open-source repositories which directly upload Abaqus input files. This input file is actually usable via other FEM softwares too, for example, CalculiX. It is just generated by Abaqus.

Automation of the generation of this file could be possible, but I won't invest time in this. We get a fixed mesh here, for a different mesh size, one would have to go through the Abaqus GUI, load this file, change the mesh size, and generate another file.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you then maybe document the steps to generate such a new mesh?

two-scale-composite-laminate/micro-ruc-abaqus/clean-ruc.sh Outdated Show resolved Hide resolved
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the tutorials are not the right place to document user- or platform-specific needs. If this tutorial is most probably be used by specific users on a specific systems, then it would be nice to have a link to such documentation, but I wouldn't add a batch script here.

Different places to document different things (links are welcome and helpful):

  • If Abaqus or the Abaqus adapter have special dependencies, they should go on the Abaqus adapter documentation. If we have more tutorials with Abaqus, we don't want to duplicate such information.
  • If a system has issues, then this should go to a related page under https://precice.org/installation-special-systems.html

Adding the script here is of course the quick-and-dirty solution, but I am afraid that we would then start mixing up different parts of the documentation together.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These Fortran files have very few comments and the variable names do not help. I have no clue how to read or how I could maintain them. Do you, and will you be able to maintain this tutorial in a year from today?

Since it looks like you were not the one directly developing material_model.f and get_strains.f, I think it would be good exercise if you could now try to add comments to those files and raise questions.


## Setup

The meso-scale model is a 3D beam structure which is being axially loaded.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you could add some more information or real-life example of what this case is supposed to represent.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will describe the composite nature of the geometry, but apart from that, there is not more to it than just a beam which is axially loaded. An axially loaded beam is a standard and widely-known example case in structural mechanics.


<img src="images/tutorials-two-scale-composite-laminate-ruc.png" width="300" height="330">

The coupling workflow is as follows
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any information about how the mesh was generated? How was the case created?

Comment on lines +37 to +41
This case was developed by running it on the [Great Lakes HPC cluster](https://arc.umich.edu/greatlakes/) at the University of Michigan. In principle the setup should work on any machine or cluster which has an adequate amount of ABAQUS licenses. To case is run on the Great Lakes HPC cluster via a SLURM job submission script, which is given for reference as [submit_job.sbat](submit_job.sbat).

Due to restrictions in the way ABAQUS creates folder and starts the simulation, some paths are hard coded in this example. The exchange directory in [precice-config.xml](precice-config.xml) and the directory paths in [micro-ruc-abaqus/ruc_abaqus_restart.py](micro-ruc-abaqus/ruc_abaqus_restart.py) are currently set manually.

Currently simulations on both the scales are run in serial. Running all the micro simulations in serial is extremely slow, which makes the total run time of this case several days. The main idea of this tutorial is to show how ABAQUS can be coupled via preCICE in a mutliscale setting.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not clear to me if this case should be in the tutorials, but I do understand it is an interesting study case for the PreECO project, where we want to establish such guidelines.

In my perspective, this case seems to be rather too specific to a setup, system, and solver, which makes it difficult to reuse. We can also not test it, since we don't have Abaqus licenses, so we will not be able to maintain or check it in the future, which is a promise we give for our tutorials.

It also seems to be an early prototype, as stated by the "currently simulations on both the scales are run in serial", from which I understand that this will be a validation case for your research.

We also have the Community projects section, which serves as a place to share cases that we don't promise to maintain.

What maintenance plan would you suggest? What do we need to maintain this case? Will you have access to the system and codes long-enough or easily on demand?

We have more ways to publish cases, we don't need that everything is in the tutorials. In my understanding, tutorials should be rather flexible, extensible, and reusable. They should be starting points. We do have old cases that could be improved in this direction, but I think that new cases should as much as possible be more flexible.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the moment my standard answer would be: add now and potentially move somewhere else later once we have guidelines. This just forces us (i.e. @IshaanDesai ) to clean up and document such cases.

Maintaining should be doable as we now have access to Abaqus licenses in Stuttgart.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand the need and the impulse to "just add it to make people happy and move on", but as a reviewer, I am obliged to point out that

  1. nothing is more permanent in Software Engineering than a temporary hack
  2. this creates precedent for adding more special cases

With the knowledge that we already got the PreECO project and that via that we have a "contract" to clean things up and come up with such guidelines, I don't mind accepting such a special case now.

Maintaining should be doable as we now have access to Abaqus licenses in Stuttgart.

That's good news! This case then could be a test case for integrating proprietary codes into our system tests.

@IshaanDesai IshaanDesai removed the request for review from uekerman December 19, 2023 09:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants