-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Problems reading material property in InterfaceKernel #28908
Replies: 3 comments · 13 replies
-
|
Hello You should share your input and the header as well for the interface kernel. The interface kernel is set to act on an internal boundary between two subdomains right? |
Beta Was this translation helpful? Give feedback.
All reactions
-
|
Hi @GiudGiud, And this is the header file: In this case, the two material properties are not correct. The value is always zero. Thanks again for your help. Best, |
Beta Was this translation helpful? Give feedback.
All reactions
-
|
I forgot the input file: |
Beta Was this translation helpful? Give feedback.
All reactions
-
|
Hi @GiudGiud, I have been trying to find the problem with the Material Properties in the InterfaceDiffusion kernel. The values were set to zero because I used the wrong values when initializing the variables in DiscoFluxCPStressUpdate::initQpStatefulProperties(). In interfacediffusiondislocation And in conservativeadvectiondislocation As you can see the memory address of the variable in the crystal plasticity (DiscoFluxCPStressUpdate) and the advection kernel (ConservativeAdvection) is the same. And the address of the interface diffusion kernel is different. Does it means that in the interface kernel system we are using the element face material properties? |
Beta Was this translation helpful? Give feedback.
All reactions
-
|
hi sorry for the delay. I ll get to this this weekend. I tried to find a resource to help earlier but failed. |
Beta Was this translation helpful? Give feedback.
All reactions
-
|
I can't run the input file, I need the I ll make a MWE to see if I can reproduce this without those |
Beta Was this translation helpful? Give feedback.
All reactions
-
|
ok I made do with I am not getting uniformly 0 values on my case. So it could have something to do with your mesh. Is it possible for you to share that with me?
Yes that is expected. The interface kernels request "boundary material data" from their inheritance on TwoMaterialPropertyInterface. Which under the hood maps to boundary material data So it's a different address than the kernels which use block material data, which is from regular materials. |
Beta Was this translation helpful? Give feedback.
All reactions
-
|
Hi @GiudGiud, We found out after a while that the material properties were not correct because in the Crystal Plasticity class (ComputeMultipleCrystalPlasticityStress.C) there is this line at the beginning of the updateStress function: I commented this and the Crystal Plasticity code is working but I'm not sure if that'll generate trouble in the convergence later. I'll share my input in case I see that. Thanks again for your help! |
Beta Was this translation helpful? Give feedback.
All reactions
-
getMaterialsPorperty is all I know, and when called on an object executing on a boundary it gets you the face Qp material property values. |
Beta Was this translation helpful? Give feedback.
All reactions
-
|
Hi @GiudGiud, I think element properties work too. I read other discussions and found this one: #27879 I tried to create a Material object but I have the same issue, the values of the Material Property are not defined in the boundary/interface elements. Thanks for your help, |
Beta Was this translation helpful? Give feedback.
All reactions
-
my question wuld be, which quadrature point from the element would we use for evaluating the material property when at the interface?
FunctorMaterials are a whole different system for materials. You will need to adapt any kernel consuming these properties for full compatibility. If you are open to writing the relevant calls in the interface kernel to use a functor material, then please feeel free to try
You mean you created a derived class from interface material and got an error, was that error from the interface kernel or from using it in a different kernel? You can implement subdomain_setup. It's likely just doing nothing in your case. |
Beta Was this translation helpful? Give feedback.
All reactions
-
I need the value of a quadrature point close to the interface. I am using hex 8 elements so the values may change at the 4 quadrature points.
I tried to do something similar to SideSetHeatTransferMaterial (https://mooseframework.inl.gov/source/materials/SideSetHeatTransferMaterial.html). The properties are computed in SideSetHeatTransferMaterial and then used in the SideSetHeatTransferKernel. I have a question regarding this line of code If I bypass this condition, does it mean the residuals and jacobians are considered twice: One for the regular materials and other for the interface materials? I appreciate your help! |
Beta Was this translation helpful? Give feedback.
All reactions
-
Right. I think there is indeed an element Qp that is closer to the side Qp being considered. It's still something we have not implemented, preferring to compute the value of the material property at the side Qp.
In an interface kernel, this does not seem right.
The residual (and Jacobian) are computed in an element loop across the entire mesh, where for each element, first the element Qps are considered, and then its sides (for DG, for boundary conditions, interface kernels). |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Check these boxes if you have followed the posting rules.
Question
Hello Moose community,
I am using a crystal plasticity model where I define material properties that I need to use inside a modified version of ConservativeAdvection kernel and InterfaceDiffusion interface kernel.
When I read the property in the ConservativeAdvection kernel, the material properties are correct and have the same value computed in the crystal plasticity model.
However, when I read the material properties in the InterfaceDiffusion interface kernel the variables are set to zero. Do you know why this can happen?
This is the validParameters and constructor of the "ConservativeDiffusion" kernel:
This is the validParameters and constructor of the "InterfaceDiffusion" interface kernel:
In the interface kernel, the only variable that is correct is
_slip_resistance. The other variables are always set to zero. Can you please help me with this.Thanks a lor for your help!
Best,
Brayan
Beta Was this translation helpful? Give feedback.
All reactions