FEAP User Forum
FEAP => Programming => Topic started by: Yaakov on April 13, 2017, 02:43:47 PM
-
Dear FEAP Team & Users,
I would ask, now I get an error report from Paraview/FEAP.
in FE-Model (own user element), if I use 1000 Elements (3D Brick Element, 8 Nodes), I can save all Paraview data.
but If I use much more Elements, e.g. 8000 Elements (3D Brick Element, 8 Nodes), I will receive the following information in terminal:
Saving PARAVIEW data to PT3D00001.vtu
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
Backtrace for this error:
#0 0x7FF02A094E08
#1 0x7FF02A093F90
#2 0x7FF028DF04AF
#3 0x7FF02A16C63F
#4 0x7FF02A1657BC
#5 0x4783BB in uparaview_
#6 0x4767B7 in uplot9_
#7 0x6219B8 in pplotf_
#8 0x546452 in pmacr3_
#9 0x4BDC2E in pmacr_
#10 0x43A783 in pcontr_
Segmentation fault (core dumped)
Thank you for doing that and for your support!
Kind Regards,
Yaakov
-
Try running the code in the debugger so that you can figure out what line of code is causing the SEG fault.
Someplace you have and out of bounds memory access.
-
Dear Prof. Govindjee,
Thanks very much for your answer! for 3D- Case, If I use feap command plot jpeg, I can save figure data. but It is not useful for paraview.
I will continue to check my user element.
Kind Regards, Yaakov
-
Dear Prof. S. Govindjee,
now I find out, when I use command PLOT, CONT, 3 Plot Pvie, the programm breaks in lines 196 in sub uparaview.f .I have checked,, if ISTV <=9, I can save paraview output data.
when I use command PLOT, STRE, 3 Plot Pvie, the programm will run without any problem (here ISTV = 15)
Kind Regards, Yaakov
-
I'm not sure I understand this. Line 196 is
if(istv.gt.0) then
Do you mean that you are getting an error when it is writing sig(i,ii) or psig(i,ii)? Also you should make sure that you have projected the stresses to the nodes before you issue the pview command. So either you have previously issued a plot command for the stresses or you have issued the macro command stress,node .
-
Dear Prof. Govindjee,
thanks very much for your answer!
in this case, I am getting an error when it is writing sig(i,ii) or psig(i,ii). I will check again where the error is.
-
Have you made sure to have first forced a projection of the stresses before calling pview?
-
Dear Prof. Govindjee,
thanks very much for your answer, you mean: before command PLOT PVIE, I have to use command PLOT STRE?
It is my first time to use paraview to save 3D results, in 2 D case I use only FEAP command PLOT JPEG.
-
The paraview routine write out the node data without changing the array size so far.
Thus, you can either call STREss NODEs to project the results from Gaussian points to the element nodes or you can modify uparaview.f
to check for the array sizes (e.g. if (size(sig,1).ge.numnp .and. np(58).ne.0) then).
The first option may fail in case of user elements which haven't implemented the data projection.
-
Dear JStorm;
thanks very much for your reply!
I have checked, stres node + plot pvie works well for my own user!
I'd like to ask, now I have two types of command combinations:
type a : PLOT CONT 1 + PLOT PVIE
type b : PLOT STRE 1 + PLOT PVIE
for 1000 elements, both type can get paraview data
for 8000 elements, only type b works.
I don't develop any postprocess code in FEAP before, I can't understand what happen that I am getting bugs which I described in the first Block Chat.
to note that, type a paraview output data size is smaller, If we only need displacement field output.
Kind Regards, Yaakov
-
Unless you project the stresses, they will not be in the paraview output file. so "b" is correct (or you can use the command STRE NODE) before output of paraview
-
Dear Prof. Taylor,
Thanks very much for your answer & support!
I can't understand, the type "a" (PLOT CONT 1 + PLOT PVIE) can work well in the case of 1000 elements that I can save Paraview Output File.
Kind Regards, Yaakov
-
Your case 'a' is only working by luck (i.e. the array access while out of bounds is not going outside of the user space allocated to the process). Only use 'b'.
In future releases of the code, we plan to internally force the projection if it has not been done yet.
-
Dear Prof. S. Govindjee,
Thanks very much for your answer, now I understand that only type "b" works.
Kind Regards, Yaakov
-
Can you try the attached files for paraview. They are supposed to output all the stress values even if you have not projected them yet. A projection is forced if an iteration has been performed and no stresses plotted or nodal stresses computed.
-
Dear Prof. Taylor & FEAP TEAM,
Thanks very much for your warm help!
I will give my feed back as soon as possible!
Kind Regards, Yaakov
-
Dear Prof. Taylor, Dear Prof. Govindjee & Dear FEAP TEAM,
I put the three new files (Reply #14) into feap user order ( make clean & install).
Now It works as well as I expect that PLOT PVIE can stay after PLOT CONT without bugs(e.g. for 8000 elements, or more elements) !
Kind Regards & Nice weekend, Yaakov
-
Can you try the attached files for paraview. They are supposed to output all the stress values even if you have not projected them yet. A projection is forced if an iteration has been performed and no stresses plotted or nodal stresses computed.
I have a problem with my non-mechanical user element using PVIE with the new FEAP8.5. Whenever I try to make a paraview output, the program exits.
My problem is a phase-field problem and essentially I just need to output the DOF fields and there is no need to project anything. I thought maybe it is because I did not define isw.eq.8 in my element, and added that and also set the ISTE value, then I got another error that the assigned size to NDER and NDNP are zero...
I believe the problem comes from the if condition for FL(11) in program/pmacr6.f (feap 8.5). It forces the program to project stresses, while there isn't any, thus the error.
I wrote a small user-macro where I temporarily switch the value of FL(11) to TRUE before calling PVIE and switch it back after the call. This way, the routine works just fine.
Is there any better work-around for this?
RM
-
One other option is to change the coding in pmacr6.f to
! [pvie,<time,file> : Paraview interface
elseif(j.eq.12) then
! No stress projection case
istvsv = istv
if(ct(1).ne.0.0d0) then
istv = 0
! Compute and project stresses
elseif(.not.fl(11)) then
call pjstrs(.false.)
endif
call pparaview(lct)
istv = istvsv
be sure to add dimension for 'istvsv'
Then if you use: PVIEw ,, 1
you get no stress output.
-
thank you very much, everything works fine now.