-
Notifications
You must be signed in to change notification settings - Fork 97
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
Data-Driven Simulation #924
Comments
@LoveFrootLoops The main issue I see is that Within the integral, So there are two things you should probably do:
i = 1
for (eps,sig) in zip(eps_vec,sig_vec)
res[i] = sum(∫(...)*dΩ)
i = i+1
end This is inefficient, since it evaluates |
Hi! Very interesting application btw. If you need to evaluate your fe stress and strain at arbitrary points, take a look into tutorial 15 in our tutorial page. |
Thanks for the fast and detailed reply. First of all @fverdugo I cannot find tutorial 15. Can you maybe share a link? Secondly, @JordiManyer, thanks for the detailed answer and explanations. It helps a lot. But there is one issue which maybe caused some misunderstanding. Let's say I operate on Gauss point level. For each Gauss point I have a corresponding strain and stress pair. For this strain and stress pair I want to find the data point in the data set which is closest to this pair. Then I want to sum the distance over all gauss points. In your code I would just sum over all data points. But this is not what I try to do. So in pseudo code I would yes to have something like
Is this somehow achievable? |
@LoveFrootLoops Manipulating directly at gauss-point level need to be done through composition, just like you do for You should define your distance functions as: function d_eps(ε)
return minimum(map(eps -> (eps - ToVoigt_eps(ε)) ⋅ (eps - ToVoigt_eps(ε)) , eps_vec))
end and then compose it to with Note that within the function But just so that we are clear: This will potentially choose a different data point each for gauss-point (which makes no sense in my mind). If the choice of the data-point needs to be global to the mesh, my first solution is what you need... |
Hi,
After addressing some initial challenges, I must say that I love working with it. To get started, I explored the "Linear Elasticity" example available at https://gridap.github.io/Tutorials/dev/pages/t003_elasticity/.
Now, I am working on implementing a fascinating concept called "Data Driven Computational Mechanics." Instead of relying on Hookes Law, I define a dataset$\mathcal{D}$ comprising pairs of strain-stress $(\hat{\epsilon}_i, \hat{\sigma}_i)$ . My objective is to find the material state $(\epsilon, \sigma)$ that best matches the dataset while satisfying the equilibrium and kinematics equations.
The optimization problem can be formulated as follows:
subject to:$\mathrm{div} \sigma = f$ and $\epsilon = \nabla^{\text{sym}} u$ .
While defining the equations is not an issue, my challenge lies in finding the data point in the dataset that yields the minimum distance from the material state during the simulation. I have tried using the following code, but it seems I cannot perform calculations directly on a CellField. Can somebody maybe help me regarding this?
The text was updated successfully, but these errors were encountered: