TLCFEM / suanPan

🧮 An Open Source, Parallel and Heterogeneous Finite Element Analysis Framework
https://tlcfem.github.io/suanPan-manual/latest/
GNU General Public License v3.0
60 stars 9 forks source link

Duncan-Selig hyperbolic soil model #194

Closed Ricyteach closed 6 months ago

Ricyteach commented 7 months ago

Feature Hello, excited about trying out this library for structural analysis.

The geotechnical analysis capability is great, but it is limited by the number of soil models. A great addition would be the Duncan-Selig hyperbolic soil model (modified somewhat recently by Katona, to take into account residual deformation during unloading).

The Duncan-Selig model is the gold standard for analysis of structural problems in which soil is the dominant load carrying component in a soil-structure system, such as in buried flexible culverts. In fact the AASHTO LRFD design code requires FEA to be performed for some classes of buried culverts, such as corrugated metal structures with deep corrugations. The only free FEA program available for this kind of FEA using the Duncan-Selig model is CANDE, and although it is still being actively updated, it is not open source and long periods of time pass between updates. It is also 2D only, the preprocessor and postprocessor are woefully out of date, and it is just dad-blamed tough to use. A more modern open source option like suanPan would be most welcome by the geotechnical engineering community.

References Modified Duncan-Selig model by Katona

TLCFEM commented 7 months ago

It looks like a plane strain phenomenological model, meaning that it shall be easy to implement. I will have a look. Are you available for validation, etc.?

Ricyteach commented 7 months ago

I can try to be! What would that entail? I've not done this sort of thing before.

What I could do is analyze some basic 2D problems (perhaps using a 2D NASTRAN mesh...?) using the CANDE implementation of the D-S soil model, and compare the results against the output of the suanPan implementation... is there a better way?

Ricyteach commented 7 months ago

Additionally: I know that the CANDE implementation of D-S has been written in FORTRAN already and if we ask nicely, we might be able to prevail upon the author (Mike Katona) to provide the FORTRAN modules. Would that help?

TLCFEM commented 7 months ago

For sure it would help if a reference implementation is available. Though, I had a quick glance at the paper provided, I think it wouldn't be too difficult to implement it from scratch. It is not a conventional plasticity theory based model with heavy tensor algebra after all.

For the FORTRAN source code, if acquiring that is relatively easy and there are no licensing/copyright issues, then we can try to ask for it.

I can only make the model work, whether the results make sense is beyond me. Fine-tuning may require your input.

For validation, I think some basic single element tests would be enough.

Ricyteach commented 7 months ago

Ah, single element would be cake.

Ignorant question: I have read the original D-S paper and Katona's paper a few times but beyond understanding how to determine the input parameters so I can turn soil test data into soil models, I get a little bit lost in all the math involved. My question is: is it going to be an issue that the CANDE reference implementation will have been made for 2D problems only? Is the D-S-Katona model viable for 3D problems?

I have sent Dr Katona a message asking him permission to provide the code as reference implementation. He usually responds pretty quickly. As a credentialed and experienced academic, who knows- he might even want to be involved and potentially collaborate on a paper out of this or something.

Something extra: I'm a pretty adept python coder and a geotechnical engineer, and I had an FEA course in grad school (and have a textbook gathering dust on my office shelf ;) )- but I am clueless when it comes to FORTRAN, and almost as bad when it comes to c++.

But I am wondering, assuming this moves forward if you would be willing to walk me through the final implementation? Perhaps not quite on a "explain it to me like I'm 5" level, but not far off, haha. I have thought many times about trying to implement it in cython (if you're not familiar: cython basically turns python code into c code) but have always been too intimidated. I'd enjoy taking this as an opportunity to sort of level up my knowledge. If it is an option I'd even love to write some of the code, if we could consider writing it in cython and if you'd be willing to give me somewhat specific tasks... but that might be asking too much.

TLCFEM commented 7 months ago

My question is: is it going to be an issue that the CANDE reference implementation will have been made for 2D problems only? Is the D-S-Katona model viable for 3D problems?

From the paper and relevant work, it is a plane strain phenomenological model. It cannot be extended to 3D version in a straightforward manner, as some important information is missing. I believe whatever reference implementations available are only for 2D plain strain problems.

Implementation would not be very difficult. With all scaffolding code prepared, one only needs to implement one method Material::update_trial_status. See this for example.

If you want to implement that in python, if you have the FORTRAN implementation, you can translate it to C, using for example f2c. Then use something to provide the python interface. But I personally do not see any value doing so. If for learning purposes, a pure python implementation is okay I presume.

In terms of the model itself, it appears local iterations are needed, meaning that an implicit Euler method is used. Whether the algorithmic consistent tangent stiffness is easy to compute could be an issue. Not sure how it was implemented in CANDE. Also, I am not sure how to compute $\sigma_2$, by using the bulk modulus?

There are still some details not clear to me. More information needs to be gathered.

Ricyteach commented 7 months ago

Ah, I understand about it being a plane-strain model! So it was a dumb question after all. ;)

Here is the D-S-K (Duncan Selig Katona) reference implementation from CANDE, provided with permission from Dr Katona this morning.

https://www.dropbox.com/scl/fi/tcl7b6nqzanij5adrzaov/duncanNEW.f?rlkey=sbugcoj7mu9f5pctfyhxld1ng&dl=0

I don't know if it will be of any help but I found a pair of lectures from a professor at the Indian Institute of Technology on exactly the topic of the Duncan model. Perhaps it might help.

Lecture 1: https://www.youtube.com/watch?v=kvHS_OlR11s

Lecture 2: https://www.youtube.com/watch?v=hawKO_-8OIs

TLCFEM commented 7 months ago

Thank you for the quick response. I will go through the implementation first. I believe there is no quadratic convergence. I may run into more issues, which will be compiled together later and please communicate to Prof. Katona if possible.

TLCFEM commented 7 months ago

I have implemented this Duncan soil model as in #195. If you check the corresponding workflows you will find the latest binaries that can be downloaded and tested. Please feel free to let me know if you are available to test it, and what additional information you need to do so. Please also check the comments in #195, as I have not added documentations yet.

TLCFEM commented 6 months ago

After two more PRs #197 and #198, I believe it looks good enough for practical usage.

The details of the implementation is documented here.

Note there are two differences:

  1. The parameter $\beta$ in Eq. (5) is not adopted.
  2. The reference bulk modulus is computed via Duncan's power law, instead of Selig's equation that uses the hydrostatic stress.

I'll thus close this issue to mark it as done. Please feel free to reopen or open a new issue if there is anything wrong with the current implementation.

The following is a confined compression example that resembles Fig. 6 in Katona's paper. confined-compression.zip

confined-compression

Ricyteach commented 6 months ago

Thank you this is great, I will check it out!