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

Duncan-Selig hyperbolic soil model #194

Closed
Ricyteach opened this issue Mar 21, 2024 · 11 comments · Fixed by #198
Closed

Duncan-Selig hyperbolic soil model #194

Ricyteach opened this issue Mar 21, 2024 · 11 comments · Fixed by #198
Assignees
Labels

Comments

@Ricyteach
Copy link

Ricyteach commented Mar 21, 2024

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
Copy link
Owner

TLCFEM commented Mar 22, 2024

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
Copy link
Author

Ricyteach commented Mar 22, 2024

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
Copy link
Author

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
Copy link
Owner

TLCFEM commented Mar 22, 2024

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
Copy link
Author

Ricyteach commented Mar 23, 2024

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
Copy link
Owner

TLCFEM commented Mar 23, 2024

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
Copy link
Author

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
Copy link
Owner

TLCFEM commented Mar 25, 2024

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 TLCFEM linked a pull request Apr 3, 2024 that will close this issue
@TLCFEM TLCFEM self-assigned this Apr 3, 2024
@TLCFEM
Copy link
Owner

TLCFEM commented Apr 3, 2024

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 TLCFEM removed a link to a pull request Apr 5, 2024
@TLCFEM TLCFEM linked a pull request Apr 12, 2024 that will close this issue
@TLCFEM TLCFEM removed a link to a pull request Apr 13, 2024
@TLCFEM
Copy link
Owner

TLCFEM commented Apr 19, 2024

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

@TLCFEM TLCFEM closed this as completed Apr 19, 2024
@TLCFEM TLCFEM linked a pull request Apr 19, 2024 that will close this issue
@Ricyteach
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants