Andrew, > As I understand it, the reinit command "points" fe_values to the > current cell and then recalculates the various quantities prescribed in > the update_flags. The problem is that I have scaled the displacements > for post-processing so I don't want reinit to recalculate any parameters > for the current cell, all I want it to do is recall the initial values > on the undeformed initial domain.
That's not quite so easy to do: FEValues::reinit computes the quantities using the mapping from the reference cell to the current configuration of the cell using its vertices and the mapping object. Of course it has no idea about any previous values the locations of the vertices may have had. I see three options for you: - either you keep two meshes, one where you move nodes around and one that keeps the reference configuration. You use one or the other depending on whether you need quantities in the reference or the current configuration - you compute quantities like shape function values and gradients once at the beginning of the program and put them into a cache of your own - you use the MappingQEulerian or MappingQ1Eulerian class that tracks the deformation of your domain as a finite element field. The mesh itself if undeformed. Pretty much all parts of deal.II accept a mapping object; by default, this is a MappingQ1 object that assumes that your mesh is as the vertices of the cells indicate, but whenever you want to deal with the deformed configuration you could pass a MappingQ1Eulerian object that describes this deformation. Maybe one of these gets you where you want to be! Cheers W. ------------------------------------------------------------------------- Wolfgang Bangerth email: [email protected] www: http://www.math.tamu.edu/~bangerth/ _______________________________________________
