RESTART does not write resutls with ccx_i8

Hello everyone,
I am using ccx.i8 and I am using RESTART.
Everything works well, but when the restart simulation(*RESTART,READ) finishes the frd file has got 1kb. Inside there is not results.
What could be the issue?
I am using these cards to lauch my files for i8
set CCX_NPROC_RESULTS=20
set CCX_NPROC_STIFFNESS=20
set OMP_NUM_THREADS=20
set MKL_NUM_THREADS=20
set MKL_INTERFACE_LAYER=ILP64
set CCX_PATH=C:\Users\housing
cmd /k %CCX_PATH%\ccx_i8.exe MODELLO_PRET_CCX

Anyone can help me,please?

Can you post your input file?

https://calculix.discourse.group/t/restart-does-not-write-resutls-with-ccx-i8/2572/3?u=iacobellis88

I copied both files .Thank you

did you check my inpu?

Did you check if any of the restart test cases work for you?
E.g. beamwrite / beamread?

That link doesn’t seem to work for me unfortunately. I would also suggest trying the test cases Durbul mentioned.

As I told before, restart with dynamic.exe works perfectly. The problem is about i8.ccx. When I use it, everything works but at the end I dont get results from restart step. A file of 1kb is created. To run i8 analysis , I used the string above.

try now please.

@Iacobellis88
I don’t know why you are using the extended version og ccx (ccx_i8), I didn’t have problems with the standard version.
I reduce the simulation time from 1 sec to 0.2 sec. but this was only because I’m not very patient.
My approach was to run the job from a command shell. I can be windows, linux or mac-os, I don’t which one you are using.
In the command shell you should as example execute the following commands:
1:
ccx_2.22 -i MODELLO_PRET_CCX_1
2: windows
copy MODELLO_PRET_CCX_1.rout MODELLO_PRET_CCX.rin
2: linux, mac-os
cp MODELLO_PRET_CCX_1.rout MODELLO_PRET_CCX.rin
3:
ccx_2.22 -i MODELLO_PRET_CCX

this will give you 2 output files
MODELLO_PRET_CCX_1.frd
MODELLO_PRET_CCX.frd

with app following contents and it seems you have some boundary errors in the restart


I forget to append, that the offical ccx_2.22 source isn’t prepared for running Pardiso with 64 bit integers.
In order to do this one will need to implement following in the pardiso.c at the corrosponding lines

line 353
#ifdef INTSIZE64
  FORTRAN(pardiso_64,(pt,&maxfct,&mnum,&mtype,&phase,neq,aupardiso,
		   pointers,icolpardiso,perm,&nrhs,iparm,&msglvl,
                   b,x,&error));
#else
  FORTRAN(pardiso,(pt,&maxfct,&mnum,&mtype,&phase,neq,aupardiso,
		   pointers,icolpardiso,perm,&nrhs,iparm,&msglvl,
                   b,x,&error));
#endif

line 395
#ifdef INTSIZE64
  FORTRAN(pardiso_64,(pt,&maxfct,&mnum,&mtype,&phase,neq,aupardiso,
		   pointers,icolpardiso,perm,nrhs,iparm,&msglvl,
                   b,x,&error));
#else
  FORTRAN(pardiso,(pt,&maxfct,&mnum,&mtype,&phase,neq,aupardiso,
		   pointers,icolpardiso,perm,nrhs,iparm,&msglvl,
                   b,x,&error));
#endif

lline 420
#ifdef INTSIZE64
  FORTRAN(pardiso_64,(pt,&maxfct,&mnum,&mtype,&phase,neq,aupardiso,
		   pointers,icolpardiso,perm,&nrhs,iparm,&msglvl,
                   b,x,&error));
#else
  FORTRAN(pardiso,(pt,&maxfct,&mnum,&mtype,&phase,neq,aupardiso,
		   pointers,icolpardiso,perm,&nrhs,iparm,&msglvl,
                   b,x,&error));
#endif

I am using i8 because the model that I am running it is very big. 2.5 milion of nodes. This was just an example.

So if I wanna use i8, should I use the same procedure?

@Iacobellis88 , if you want to use the Pardiso solver with 64 bit integers, then you will need to modify the source code in pardiso.c
If you follow me suggest then you will have a general solution controlled by the option in the makefile.
If you should be unfamiliarly with modifying source code you can get the file from the link below
pardiso.c - Google Drive
Don’t be so suspicious, just try it. If it works, be happy, if it doesn’t you have other problems

1 Like

Sorry, Could you compile me it in order to provide me .exe, please? I am not expert to do this.

@Iacobellis88 , You can get my version here. You only need to extract the files
ccx_2.22_i8.zip
note – the pardiso solver isn’t static linked, so you should keep the dll file in the same folder as the ccx_2.22_i8.ece

Do you know how overcome a segmentation fault (core dumped) on linux? I think that is the same error in windows of ucalloc memory

@Iacobellis88 , the easy answer is no.
A segmentation failure will always be wrong program code, so first you will need to identify the locating in the program code where the segmentation is initiated and afterward the reason.
If you have compiled ccx with option O3, then try to omit this compiler option. Compiler optimization can randomly be a little unreliable special O3
I don’t have it present, but maybe if you use the compiler option -g3 instead of, then you maybe could get little more info of the location. The -g3 option add maximum debug information into the program.
I don’t either have present if the Spooles solver default can be compiled to 64 bit integer but in that case, you could try if the fault could rely on the specific solver.
You will have my best wishes in seeking what initiate the segmentation fault

I just recognized you have nearly similary thread where you mention you use ccx-mt. I never use the -DUSE_MT=1 option. Very weekly I remember randomly have had some problem by using that specify option, so try to omit that when you compile. You don’t need it if you are using the Pardiso solver

1 Like