-
Notifications
You must be signed in to change notification settings - Fork 246
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
[ARCHIVED] Experiment lhs rhs calculators #12763
base: master
Are you sure you want to change the base?
Conversation
hi @rfaasse could you describe a bit what is the objective of this? |
Hi @RiccardoRossi, Currently that's solved in geomechanics by creating a new element where we override the calculation of the compressibility to be a zero matrix, but this way of working can lead to a 'wildgrowth' of elements, which is hard to maintain. Our idea is to provide the element with a list of abstract calculators which can calculate the contributions. By extracting the calculations in this way, we can very easily decide what contributions are taken into account (e.g. compressibility, permeability, coupling to displacement, fluid body flow etc). Concretely, this means that we create a transient Pw element like this:
And the only difference in creating a steady state Pw element would be to not add the compressibility contribution to the list_of_contributions (instead of creating a new element). The CalculateLocalSystem of the element then would look something like this:
We have done something conceptually similar for the stress states, where we inject a 3D, PlaneStrain or Axisymmetric stress state policy into an element, such that all the 'dimensional-specific' things are handled there and we don't need to create special 'axisymmetric' elements, we just create a 'normal' element and inject an axisymmetric stress state into it. We plan on elaborating on this way of writing our elements/components at the Kratos User Meeting this November as well and if you want to stay updated on this specific idea (see #12779 for the first implementation), or if you have any further questions, please let me or anyone from the @KratosMultiphysics/geomechanics team know! |
hi @rfaasse i think I understand wht you want to do. A few years back @pooyan-dadvand has in mind something (which never came to life) and that was tentatively called "Formulation". My impression however is that we are going a long way because of the limitations imposed by the builder and solver. imagine you were able to do something like auto element_function =
for(auto& geom: mp.Geometries()){
eq_ids = get_eq_ids_function(geom)
lhs,rhs = element_function(geom, ... )
rA.assemble(lhs, eq_ids)
rb.assemble(b,eq_ids)
} your code would look probably much more cleaner. Our idea (Still in the works) is to leverage the Kratos csr matrix to allow this. see for example link for an idea of what i would like to achieve in a new version of the scheme
|
Hi @RiccardoRossi, I'll try to find some time to look into the concept of the CSR matrix, it sounds interesting! |
This pull request archives an experimental prototype branch to be able to start discussions. There is no intention of merging this to master