yes, I see, I forgot something. It should be: SNRJ = gf.asm_generic(mimp3b, 1, "(Gb*Grad(ub):Grad(ub)+Gb/(1-2*nub)*Div(ub)*Div(ub))*Test_t", -1, md,
"t", True, mfpb, np.zeros(mfpb.nbdof()), "select_output", "t") otherwise the asm_generic function will include all model dofs which are not used in the expression. Best regards Kostas On Thu, Jan 27, 2022 at 11:00 PM Lesage,Anne Cecile J < ajles...@mdanderson.org> wrote: > Dear Konsta > > > > I wrote the following lines > > > > print('mfpf dofs',mfpb.nbdof(),'mfoutb dofs',mfoutb.nbdof()) > > mass_mat = gf.asm_mass_matrix(mimp3b, mfpb) > > > > > > for step in range(steps): > > nit, conv = md.solve('noisy', 'max_iter', 25, 'max_res', 1e-10, > 'lsolver', 'mumps', > > 'lsearch', 'simplest', 'alpha max ratio', 100, > 'alpha min', 0.2, 'alpha mult', 0.6, > > 'alpha threshold res', 1e9) > > time_elapsed(timer) > > it = step+1 > > SNRJ = gf.asm_generic(mimp3b, 1, > "(Gb*Grad(ub):Grad(ub)+Gb/(1-2*nub)*Div(ub)*Div(ub))*Test_t", -1, md, > > "t", True, mfpb, > np.zeros(mfpb.nbdof())) > > SNRJ = np.transpose(gf.linsolve_mumps(mass_mat, SNRJ)) > > > > But I get a size error as follows on the transpose line > > > > > > <pre>mfpf dofs 54026 mfoutb dofs 54026 > > Time elapsed: 9.0 minutes and 40.03 seconds > > Traceback (most recent call last): > > File "/work/testr25pebrainbsftslhomnrj.py", line 271, in > <module> > > SNRJ = np.transpose(gf.linsolve_mumps(mass_mat, SNRJ)) > > File "/venv/lib/python3.8/site-packages/getfem/getfem.py", > line 6447, in linsolve_mumps > > return getfem('linsolve', 'mumps', M, b) > > RuntimeError: (Getfem::InterfaceError) -- Argument 3 has wrong dimensions: > expected 54026, found 1339902</pre> > > > > Thank you > > AC > > > > *From:* Konstantinos Poulios <logar...@googlemail.com> > *Sent:* Wednesday, January 26, 2022 2:24 AM > *To:* Lesage,Anne Cecile J <ajles...@mdanderson.org> > *Cc:* getfem-users@nongnu.org > *Subject:* Re: [EXT] Re: Computing the linear elastic strain energy > > > > *WARNING: *This email originated from outside of MD Anderson. Please > validate the sender's email address before clicking on links or attachments > as they may not be safe. > > > > Dear Anne-Cecile, > > > > Ok, I see. I would not do node-averaging, like most commercial (and not > only) software do, for exporting smooth scalar fields (von Mises, strain > energy, etc.). Instead, my favorite approach is the one that you can find in > > > https://git.savannah.nongnu.org/cgit/getfem.git/tree/interface/tests/python/demo_finite_strain_plasticity_3D.py > <https://urldefense.com/v3/__https:/git.savannah.nongnu.org/cgit/getfem.git/tree/interface/tests/python/demo_finite_strain_plasticity_3D.py__;!!PfbeBCCAmug!wugJEgC0-WoDQzcgHwoZj5gYuTCA8KyuOZ3mE5mEy45wApyQgTuf2h_rRcM-rIzopg$> > > for exporting the plastic strain field GAMMA. > > > > What you need for this method is: > > > > 1) Before starting your simulation you calculate and store a mass matrix > for the scalar mesh_fem that you want to get the nodal values for > > mass_mat = gf.asm_mass_matrix(mim, mfout) > > mfout has to be a scalar fem (1 dof per node). > > > > 2) After (each step of) your simulation, you assemble the quantity that > you want to export, in this case strain energy with something like > > STRAIN_ENERGY = gf.asm_generic(mim, 1, > "(Gb*Grad(ub):Grad(ub)+Gb/(1-2*nub)*Div(ub)*Div(ub))*Test_t", -1, md, > "t", True, mfout, > np.zeros(mfout.nbdof())) > > (check the correctness of the strain energy expression that I took from > some code you sent earlier) > > > > 3) Recover nodal values with > > STRAIN_ENERGY = np.transpose(gf.linsolve_mumps(mass_mat, STRAIN_ENERGY)) > > Then the vector STRAIN_ENERGY has the nodal values of the strain energy > on all dofs of mfout. If you calculate this vector for several simulations > or simulation steps, you can copy the result into different columns of a > big matrix as in the paper you are referring to. > > > > Hope it helps. > > > > BR > > Kostas > > > > On Tue, Jan 25, 2022 at 8:50 PM Lesage,Anne Cecile J < > ajles...@mdanderson.org> wrote: > > Dear Konstantinos > > > > The problem with patient specific surgery modeling is that we ignore a lot > of the surgery scenario > > One way to model it with FEM is to precompute an atlas of organ > deformation with a variety of surgery scenario parameter (here direction of > gravity, loss of brain buoyancy by csf drainage, shrinkage due to drug, > > swelling due to edema, tumor resection, etc …) That is about 1000 > simulations > > > > Then the idea is to match intraoperative data, the surgeons measure a > ground truth displacement on a few brain surface points > > The idea is to minimize function equation 7 in attached pdf: > > the first term is the least square between the ground truth displacement > and the simulated one see equation > > the second term use the elastic strain energy on fem points pondered by > the distance to the ground truth measurement points > > Finally we want to get the optimal alpha pondering vector to match the > surgery measurement > > > > Ideally I would like my python script to output after poroelastic > simulation converge > > The simulated displacements on the few measurement points (15) > > The pondered energy term > > So that I can assemble the function to minimize for the whole atlas > > > > Thank you > > Regards > > Anne-Cecile > > > > > > *From:* Konstantinos Poulios <logar...@googlemail.com> > *Sent:* Tuesday, January 25, 2022 2:40 AM > *To:* Lesage,Anne Cecile J <ajles...@mdanderson.org> > *Cc:* getfem-users@nongnu.org > *Subject:* [EXT] Re: Computing the linear elastic strain energy > > > > *WARNING: *This email originated from outside of MD Anderson. Please > validate the sender's email address before clicking on links or attachments > as they may not be safe. > > > > Dear Anne-Cecile > > > > The elastic strain energy density (is a scalar) at each node is easy to > calculate. However, I have to ask you what you need this quantity for. Your > reference suggests calculating this quantity on nodes which is probably not > the best solution. If you calculate the strain energy density at a node > between different elements, you get different results depending on which > element you are evaluating the common node from. Then some averaging is > required to get a value somewhere between all neighboring elements. > Normally we evaluate strain energy densities at integration points. If you > tell us what you need this result for I can maybe help with a better > solution. > > > > Best regards > > K. > > > > On Mon, Jan 24, 2022 at 9:09 PM Lesage,Anne Cecile J < > ajles...@mdanderson.org> wrote: > > Dear all > > > > I need to output tat the end of my poroelastic simulation the linear > elastic strain energy matrix at each node of my mesh > > See attached formula > > What is an optimal way to compute it from the displacement u? > > Epsilon i = 0.5 (grad u + grad ut) right? > > And S here is the stress-strain law for isotropic materials? > > > > Thank you > > Anne-Cecile > > The information contained in this e-mail message may be privileged, > confidential, and/or protected from disclosure. This e-mail message may > contain protected health information (PHI); dissemination of PHI should > comply with applicable federal and state laws. If you are not the intended > recipient, or an authorized representative of the intended recipient, any > further review, disclosure, use, dissemination, distribution, or copying of > this message or any attachment (or the information contained therein) is > strictly prohibited. If you think that you have received this e-mail > message in error, please notify the sender by return e-mail and delete all > references to it and its contents from your systems. > > The information contained in this e-mail message may be privileged, > confidential, and/or protected from disclosure. This e-mail message may > contain protected health information (PHI); dissemination of PHI should > comply with applicable federal and state laws. If you are not the intended > recipient, or an authorized representative of the intended recipient, any > further review, disclosure, use, dissemination, distribution, or copying of > this message or any attachment (or the information contained therein) is > strictly prohibited. If you think that you have received this e-mail > message in error, please notify the sender by return e-mail and delete all > references to it and its contents from your systems. > > The information contained in this e-mail message may be privileged, > confidential, and/or protected from disclosure. This e-mail message may > contain protected health information (PHI); dissemination of PHI should > comply with applicable federal and state laws. If you are not the intended > recipient, or an authorized representative of the intended recipient, any > further review, disclosure, use, dissemination, distribution, or copying of > this message or any attachment (or the information contained therein) is > strictly prohibited. If you think that you have received this e-mail > message in error, please notify the sender by return e-mail and delete all > references to it and its contents from your systems. >