Full precision output at nodes and integration points

Is it possible to output the full precision (i.e. same values used inside CalculiX solver) displacement at nodes, stress at integration points and stress extrapolated to nodes, preferably in an easy to read format such as CSV? I would like to read this data into another program for postprocessing and verification against analytical solutions.

Hi Benzwick
Did you figure it out? I am using *Node Print, NSET=all to print out displacements. I need to write out displacement values with more significant digits and it seems that *Node Print does not have any format assignment.
Let me know if you have a solution.
Thanks,
Adrian

Hi Adrian,
No, I didn’t find a way to do this yet.

You could try to find the subroutine that writes the *.dat *.cvg files and specify the precision and formats you want. You will need to write the part for the CSV- not sure if you could link an external library like

Hello,
Output file *.frd is simple for understood, but have not enough precision of values and point deformation have not data about rotations.
So I agree with you now we have not access to precision data.
If you want - function frd in source code need change.

Hi,

look at subroutine printout.f and its subroutines for the .dat output. Format right now is e13.6. Change this format and recompile.

Remember: in the .dat file the stresses/strains… are at the integration points, in the .frd file at the nodes. Creating binary frd files (*NODE OUTPUT instead of *NODE FILE etc.) increases the accuracy compared to the ASCII frd files.

Guido

3 Likes

Thanks for the reply Guido. Just to make it clear, in my case, I am using:

*NODE OUTPUT
U

I checked the content of printout.f. I believe the file that I have to modify for writing nodal displacements in a different format is printoutnode.f and not printout.f. Please confirm.
Thank you,
Adrian

yes. This is correct.

Guido

Thanks Guido.
One of my colleagues helped me to create a new CalculiX build that writes out displacement values with more significant digits. I am all set.
Adrian

Hi Guido. I am trying to compile and link CalculiX 2.23 with PaStiX and I have difficulties.

What I need is more significant displacement digits in the output and access to PaStiX for runtime reasons.

Currently I can compile and link CalculiX 2.23 locally with the file change that allows me to write displacements with more significant digits however, I have access only to spooles which is quite slow.

Here is my question: is it possible for you to make available a calculiX 2.23 exe with access to PastiX and write out displacements in a 20.12 format? There is a large accuracy improvement for my solutions if the output format is 20.12.

Thank you

Let’s clarify a little what kind of outputs are available in CalculiX and which precision they use:

  • .frd ASCII output (e.g. via *NODE FILE): uses numerical format 12.5E (5 decimals, 12 characters in total)
  • .frd BINARY output (e.g. via *NODE OUTPUT): uses single precision floats based on the double precision values CalculiX uses internally
  • .frd BINARY double precision output (e.g. via *NODE OUTPUT, DOUBLE): uses the true double precision values CalculiX uses internally
  • .dat file output (e.g. via *NODE PRINT): uses numerical format 13.6E for nodal values and 14.7E for element quantities

If you want maximum accuray, you are advised to use the double precision binary .frd output for the displacements, which comes without any precision loss.

4 Likes

Thank you for the reply. I am using “*Node, Print” to write out displacements for a set of nodes. The issue is writing the values using a format with more significant digits. Currently, independent of the single or double precision data in the .frd file, *NODE PRINT will write in a 13.6E the nodal values unless I modify printoutnode.f and make another calculiX build.

You could use *NODE OUTPUT with the parameters NSET= and DOUBLE to produce a double precision output of your displacements in the set. Note that the output will be in binary, but there are parsers for that, e.g. CalculiX GraphiX (cgx) or FrdReader (haven’t tested it though).

2 Likes

Very appreciate your feedback.

A simple modification in the printoutnode.f is simpler than handling binary and other codes. I need the double format programmatically not by using a GUI like cgx.