See also ~/nodal_stress ____________________________________________________ *********** NEW in LS-PrePost ********** LSPP 4.3 after 2015-11-17 (implemented by Anders Jernberg, Ticket#2015110210000036: Changed "Glob/Loca" to "d3plot/Glob/Elem/Mtrl/User". The first option, d3plot, will use the stresses directly from d3plot, no transformation performed by LSPP. To use any of the remaining four options would require that the user loads the keyword file because that is the only way to be sure that we make a correct transformation to these systems. _____________________________________________________________________________ You probably want to use *DATABASE_RECOVER_NODE. If you don't see that command in your User's Manual, download the latest DRAFT of the Manual from www.lstc.com/download/manuals . Following is some in-house correspondence on the topic of nodal stresses which gives a broader overview. Let me know if you have any questions. Thanks, Jim Ticket 2017062010000161 Jim, (1) Results in eloutdet and d3plot are extrapolated based on the same shape function for nodal displacement. Therefore only multiple-integration-point element can be extrapolated. It is kinda "entry-level" method for nodal stress recovery. I programmed eloutdet using this algorithm because it is easier to implement, (2) The new method (*database_recover_node) is based on the legendary ZZ's SPR, Superconvergent Patch Recovery by Zienkiewicz & Zhu. You can google it and should see of a lot of documentations on this. It can extrapolate 1-point or multi-point integration elements. It is used by Abaqus, and well-believed to be more accurate. Also, it is one of the most popular criterion used for adaptive remeshing. Isheng 6/27/15 Ticket 2014120910000229 On 6/18/2015 7:18 PM, Jim Day wrote: > Isheng, > > Please confirm that the x,y,z coordinate system used for the stress output from *database_recover_node is the global coordinate system. I'm thinking it would have to be the global system since there is no local coordinate system for nodes. Does the command gather and average stress information from the elements that share the node? I think there need to be some remarks in the Manual explaining how the nodal stresses are determined. > > Moreover, there are now several "competing" methods of reporting nodal stresses. We almost need some kind of table to explain the differences. Else customers will compare stresses from each method and wonder why they don't all agree. Some notes I've gathered on the other 3 methods, labeled as I, II, and III below, are: > > I. Setting NODOUT=STRESS or ALL in *database_extent_binary will write the > extrapolated nodal stresses to eloutdet. See also *database_history_solid and *database_elout. > > II. Via LS-PrePost. > A summary of extrapolation for multi-integration point tet elements is provided here... > http://www.dynamore.se/en/news/news-en/2013/extrapolate-stresses-in-solid-elements-in-ls-prepost-v3.2 . > Furthermore, the "extrapolate x" command with any positive number x will work for hex elements > that have 8 integration points. > Of course, the variable NINTSLD in *database_extent_binary must be set so that data for each integration point > is written to d3plot. > The GUI equivalent of the "extrapolate" command is > Post > Setting > Extrapolate > for linear extrapolation of integration point stresses to nodes. > When toggled it will read the value of NIPTET if the keyword file is also loaded, otherwise > it will assume default value, 4. > This post-processing option should however be used with care. It is only appropriate to do this > extrapolation if the material is behaving linear elastic. That is, this option should NOT be used > when the material undergo plastic deformation. > > III. Set SOLSIG to *CONTROL_OUTPUT which will permit stresses and other > history variables for multi-integration point solids to be extrapolated to > nodes. These extrapolated nodal values replace the integration point values > normally stored in d3plot. NINTSLD must be set to 8 in *DATABASE_EXTENT_BINARY > when a nonzero SOLSIG is specified. > Supported solid formulations are solid elements are: -1, -2, 2, 3, 4, 18, 16, 17, 23. > > Jim __________________________________________________________________________________________ Q1: In LS-DYNA, solid element stresses are reported at the centre of the element. Does this mean the stresses are calculated, for fully integrated element, at all integration points and then report the average at the centre of the element? A: In general, yes, but you have some options. It is possible to output data from all 8 integration points of type -1,-2,2 solid to the d3plot file. This is done by setting NINTSLD to 8 in field 1 of card 3 of *database_extent_binary. Then using LS-PrePost to postprocess, History > Int.pt plots the selected component at all 8 integration points. ------------------------------------------------- The following remarks apply to fringing of multi-integration point solid elements for which NINSLD=8 is set in *database_extent_binary. A. There is no way to fringe stress/strain for individual integration points, i.e., the "Ipt" option does not apply. B. If the "Max" option is selected, LSPP will choose the maximum of all the 8 integration points for the element. Similarly for "Min" and "Ave". C. If any one of the "Low", "Mid", or "Upp" are selected (there's no difference), nodal values of the selected component are fringed. The nodal value is determined as follows: 1. Determine which elements share that node. 2. For each of those element(s), find the closest int pt to the node. 3. Take the unweighted average of those integration point values to get the nodal value. 4. Output>NodalResults will spit out all the nodal values." Based on emails from Wangkai 7/22-24/15 Ticket#2015071610000241 ------------------------------------------------- When NINTSLD=8, all 8 integration points are output to dynain (assuming *interface_springback_lsdyna is in the input deck, of course). Starting at 971 R4.2, you can set INTOUT=STRESS or ALL (*database_extent_binary) and have stresses output for all the integration points to a file called eloutdet (*database_elout governs the output interval and *database_history_solid governs which elements are output). The integration point order is such that integration point #1 is close to node #1 in the connectivity array, point #2 is close to node #2, etc. For tetrahedrons type 4,16 and 17 with 5 integration points, point #5 is the midpoint. Setting NODOUT=STRESS or ALL in *database_extent_binary will write the extrapolated nodal stresses to eloutdet. See also *database_history_solid and *database_elout. Here is the procedure used to obtain nodal stresses for eloutdet [as it pertains to solids]: 1. use shape function, sign=(1+xsi*xsii)*(1+eta*etai)sigi, to extrapolate the nodal stress/strain 2. use the element area as weighting factor to calculate the nodal stress contribution from each connected element: sig-node=(signode + sig-node from element i)*(area of element)/(total area of connected elements) (ub, 3/7/13) See also "SOLSIG" below for output of nodal stresses to d3plot. The latest User's Manuals may be downloaded from www.lstc.com/download/manuals . NODOUT in *database_extent_binary has no bearing on d3plot and therefore no bearing on the fringe plots. NODOUT only affects data written to eloutdet. When you fringe stress or strain, nodal averaging is the default so as to produce smooth color transitions in the fringe plot. In other words, the nearest element values stored in d3plot are used by LS-PrePost to calculate the "nodal-averaged" stress or strain value for each node. There is NO EXTRAPOLATION (see exception below) of element values to get nodal-averaged values for fringe plotting. The fringe plot is then created using these nodal-averaged values. You can turn off nodal averaging for fringe plots by selecting Post > FriRang > Avg: None (Note: The default is Avg: Nodal.) "FriRang > Avg: MinMax" means the average of max and min value surrounding the node, e.g. node 99 is attaching four shell elements, the scalar value for 1st,2nd,3rd and 4th shell element is 0.1,0.2,0.3,0.4, respectively, thus the scalar value for 99 is equal to 0.5*(0.1(min)+0.4(max)) = 0.25. (wangkai 12/28/13) For a solid element formulation that has more than one integration point, the element integration point values are normally averaged by LS-DYNA over all the element's integration points before outputting a single centroidal value for each stress and strain component to d3plot. You can override this default behavior and make LS-DYNA write stress and strain data for all the solid integration points to d3plot by setting NINTSLD=8 in *database_extent_binary. This will affect the fringe plots for parts that use solid formulations that have more than a single integration point. (LS-PrePost applies the stress values to the nodes from the closest integration point and after that, the average value from the contributions are computed and presented in the stress fringe plot.) ___________________________________________________________________________ RE: Extrapolated nodal stresses for multi-IP solids in d3plot (A) Via LS-PrePost. A summary of extrapolation for multi-integration point tet elements is provided here... http://www.dynamore.se/en/news/news-en/2013/extrapolate-stresses-in-solid-elements-in-ls-prepost-v3.2 . Furthermore, the "extrapolate x" command with any positive number x will work for hex elements that have 8 integration points. Of course, the variable NINTSLD in *database_extent_binary must be set so that data for each integration point is written to d3plot. (paraphrased email from wangkai 12/28/13) Following is the GUI equivalent of the "extrapolate" command and the default treatment is "extrapolate 4". Anders Jernberg wrote: I have now added a toggle (in v4.1) invoked by clicking Post > Setting > Extrapolate for linear extrapolation of integration point stresses to nodes. When toggled it will read the value of NIPTET if the keyword file is also loaded, otherwise it will assume default value, 4. This post-processing option should however be used with care. It is only appropriate to do this extrapolation if the material is behaving linear elastic. That is, this option should NOT be used when the material undergo plastic deformation. -----Update on 1/31/15-------------------------------------- Release notes for R8.0.0: Add option SOLSIG to *CONTROL_OUTPUT which will permit stresses and other history variables for multi-integration point solids to be extrapolated to nodes. These extrapolated nodal values replace the integration point values normally stored in d3plot. NINTSLD must be set to 8 in *DATABASE_EXTENT_BINARY when a nonzero SOLSIG is specified. Supported solid formulations are solid elements are: -1, -2, 2, 3, 4, 18, 16, 17, 23. Warning: Do not use "Setting - Extrapolate" in LS-PrePost when SOLSIG is nonzero. (implemented by db) Whereas LSPP's Setting-Extrapolate affects the fringe plots only, SOLSIG affects BOTH fringe plots AND History-IntPt plots since the extrapolated nodal values are actually written to d3plot. Fringe plots using either method will be the same. For the tets, there is a check on the value of NIPTETS, and the extrapolation is done accordingly. For NIPTETS=5, the value at the center of the element is just overwritten as the element average. NINTSLD should equal the maximum number of integration points used in the solids. If the element has fewer points, then they're not written out. NINTSLD is a cap on the number of points. db, 1/31/15 [Bug 10657] 5th integration point missing in d3plot NIPTETS=5 *SECTION_SOLID https://bugzilla.lstc.com/show_bug.cgi?id=10657 Wang Kai changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED --- Comment #6 from Wang Kai 2015-02-05 19:04:46 PST --- Fixed in 4.2 version, no info in d3plot to tell LSPP whether NIPTETS=5 or not, and so you have to load the input deck with d3plot file to invoke the 5 inpts. wangkai ------------------------------------------------------------- RE: Manner of extrapolation of stress (strain) to nodes Q: When SOLSIG is invoked in *control_output, is the extrapolation of solid stress to nodal values done linearly or does the element shape function enter into it? Similarly, when NODOUT in *database_extent_binary is used to include nodal stress and/or nodal strain in eloutdet, is the extrapolation linear? A: In both cases, the element shape functions are used such that using them to interpolate the stresses and strains from the nodes to the integration points gives the values at the integration points. db 3/27/15 --------------------------------------------------------------- From lpb, bug 10082, 10/21/14: For eloutdet output, we extrapolate from the 8 gauss points to the nodes correctly in the sense that if you use the nodal points values along with the trilinear shape function values, you obtain the correct Gauss point stress values. If you want to verify this, you write your own code or use mine. gw1=0.4905626 gw2=0.1314459 gw3=0.0352208 gw4=0.0094379 sig1=gw1*signd1+gw4*signd7 . +gw2*(signd2+signd4+signd5) . +gw3*(signd3+signd6+signd8) sig2=gw1*signd2+gw4*signd8 . +gw2*(signd1+signd3+signd6) . +gw3*(signd4+signd5+signd7) sig3=gw1*signd3+gw4*signd5 . +gw2*(signd2+signd4+signd7) . +gw3*(signd1+signd6+signd8) sig4=gw1*signd4+gw4*signd6 . +gw2*(signd1+signd3+signd8) . +gw3*(signd2+signd5+signd7) sig5=gw1*signd5+gw4*signd3 . +gw2*(signd1+signd6+signd8) . +gw3*(signd2+signd4+signd7) sig6=gw1*signd6+gw4*signd4 . gw2*(signd2+signd5+signd7) . +gw3*(signd1+signd3+signd8) sig7=gw1*signd7+gw4*signd1 . +gw2*(signd3+signd6+signd8) . +gw3*(signd2+signd4+signd5) sig8=gw1*signd8+gw4*signd2 . +gw2*(signd4+signd5+signd7) . +gw3*(signd1+signd3+signd6) The values produced match the Gauss values exactly, so there is no error in the extrapolted values. So why is LS-Prepost different? Prepost calculates nodal values by averaging, not by extrapolating. Stresses from surrounding elements are gathered at the nodes and an average is calculated so that there is a single value at each node. This enables fringe plotting. In this instance, it also produces a more intuitive result. There is an easier way to verify the eloutdet data. LS-Prepost has an extrapolation option. In prepost version 4.0, you must enter a command "extrapolate 1" and the fringe plot is calculated by extrapolating before averaging. In version 4.2, I am told the option is under the Settings/Post_Settings menu. In this test problem, nodes 1 through 8 are used by only one element, so there is no averaging done there. If you compare the extrapolated stress values at these nodes, they match the eloutdet data exactly. ____________________________________________________________________ Q2: Is there any way to plot LS-DYNA nodal stresses and strains instead of having them at the centre of the element?? A: To get stresses on the outside surface of a part modeled with type 1 solids, you would need to add a 'coating' of very thin shell elements (same material as solid) on the outside surface with the shells sharing nodes with the solids. The shell stress would then represent the outside surface stress. Using LS-PrePost, you can "coat" the solid surfaces with shells by reading in the keyword input file and then selecting 2 > ElGen > Shell > Shell By: Solid_face From the 'selection' menu at the bottom of the window, check the "Prop"(agate) box and then click on the surface to highlight the surface. You may have to adjust the "Ang" to get all the desired segments highlighted. When you're happy with the selection, click Create and then Accept. From the top menu bar, select File > Save Keyword. For type 2 solids, no shell coating is necessary if extrapolation from the 8 element integration points to the nodes is considered sufficiently accurate. See answer to Q1 above. Example: See http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/shl.coated.sols.k ------------------------------------- Do you know about any possibility to post-process the individual results of all 4 integration points when tet type 16 is used? Ans: There are two ways. 1. Set NINTSLD=8 in *database_extent_binary. Then you can use History > Int Pt in LS-PrePost. I notice this method works OK when NIPTETS=0 or 4 in *control_solid but is missing one integration point when NIPTETS=5. (jd submitted bug on 10/4/18) 2. Set INTOUT="STRESS" or "ALL" in *database_extent_binary and include *database_elout and *database_history_solid. The stresses for all 4 (or 5) integration points will be written to eloutdet. Example: http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/tet17.vs.hex.impl.k Jim 10/22/12 ----------------------------------------------- Q: Can I get stresses/strains in the local element system using the d3plot data? How do I display the local element coordinate system? A: For any elements, you can toggle from "Glob" (global coordinate system) to "Local" (local element coordinate system) in LS-PrePost in order to display stresses or strains in the local element system. This can be done either from the Fcomp (a.k.a., FrinComp) menu or from the History menu. In invoking the "Local" output feature, LSPP assumes stress and strain are written to d3plot in the global coordinate system (default, CMPFLG=0) and it converts the data to the local element system. For shells, the local element system is: x=N1 to N2, y is in-plane and orthogonal to x, z is normal to shell. The local element coordinate system in solids is the same as for shells where "in-plane" taken as the mid plane between nodes 1,2,3,4 and 5,6,7,8. When you view the solids in Wire or Feature mode (default is Shad mode), you should be able to see 2 vectors in the element. To view the local element coordinate system: 1) switch to Wireframe or Feature mode 2) EleTol > Ident > Element > Solid 3) check Elem Dir box 4) Click on or otherwise select the elements for which you want the local system displayed. A long vector and a short vector will be displayed for each selected element. The long vector is the local-x; the short vector is the local-y. If you read in the keyword file, element axes can also be viewed using ElEdit. _____________ Information below may restate some of what appears in the Q/A above. _________________ Regarding nodal stress and ASCII output of all integration point stresses, we can write such data to an "eloutdet" file using LS-DYNA version 971 R4 beta (not available in 971 R3 releases). See the parameters INTOUT and NODOUT, and Remarks 4 through 10 under *database_extent_binary in the 971 R5 draft of the Users Manual (contact support@lstc.com for link). In version 970, it is possible to output data from all 8 integration points of a type 2 solid to the d3plot file. This is done by setting NINTSLD to 8 in field 1 of card 3 of *database_extent_binary. LS-PrePost accesses this additional data when producing fringe/contour plots soas to produce more accurate fringe plots. History > Element plots still uses an average value of the 8 integration points. History > Int.pt plots the selected component at all 8 integration points. When NINTSLD=8, all 8 integration points are output to dynain (assuming *interface_springback_lsdyna is in the input deck, of course). NEIPH in *database_extent_binary controls the number of extra history variables written to elout and d3plot. The number of extra history variables written to dynain is 1+NSHV (NSHV defined in *interface_springback_lsdyna) where the last history variable appears to be initial volume. (http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/mat2_22_59.k) STRFLG set to 1 will invoke output of the strain tensor. If NINTSLD is set to 8, it appears that only the average of the 8 IP is output for each strain measure (excluding effective plastic strain which is not associated with STRFLG=1). In other words, NINTSLD=8 will output stresses but not strains at all 8 integration points of an ELFORM 2 solid. With INTOUT set to "ALL" in the attached example, stress and strain data for all 8 integration points are written to eloutdet. See: http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/typ2sol.k The elout file contains only the values at the element centroid (average of 8 IP). Only 1 IP must fail to delete the type 2 solid element. In http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/typ2sol.cubes.mat19fail.k, the failure criterion is max principal stress = 20. For the location of the 8 integration points in a type 2 solid, see *initial_stress_solid in the Users Manual.