FEAP User Forum
FEAP => Parallel FEAP => Topic started by: Mari on June 26, 2019, 07:25:36 AM
-
Hello!
I would like to use parfeap with a user element with 15 degrees of freedom (per node) and encounter problems. I guess it's because of the input files, which are generated with parfeap/metis.
Note: With the serial version of Feap the simulation runs.
Below you will find some examples.
The Input-File Iexample with:
MATErial,45
USER,10, 45,1,2,3,4,5,6,7,8,9,10,11,12 ! Continued in next line
13,14,15
[... some constants...]
[...]
batch
OPTI
INITial,disp
end
[...]
XXX 0 0.0 0.0 300 0.6 0 0 0 0 0 0 0 0 0 0 ! Continued in next line
0
[...]
gives the Input-File Iexample_0001 with:
13,14,15
MATErial 45
user 10 13 14 15 0 0 0 0 0 0 0 0 0 0 0
0 0
[... some constants...]
[...]
BATCh ! Initial conditions
INITial DISPlacement
END BATCH ! Initial conditions
[...]
XXX 0 0.00000000E+00 0.00000000E+00 3.00000000E+02 6.00000000E-01 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00
0 0 0.00000000E+00 0.00000000E+00 0.00000000E+00
[...]
If I manually change the commands into the form of Iexample the parallel simulation works fine.
Is it correct that for a proper parallel simulation the number of degrees of freedom per node is limited?
-
This is something that we did not imagine when writing parfeap. If you want to do problems with this many dofs then you will have to edit the routine that generates the parallel input files. You will find it in parfeap/pmacr7.F. The subroutine is called uoutdom. Look for each write statement that has an implicit loop over ndf. Each one of these will need to be changed so that they do not write too many (16 total) items per output line; if they will do so, then you will need to wrap the output line.
-
I had a look at uoutdom( ), it seems to be programmed correctly already for most of the outputs. It looks like just a few of them are incorrect. Let me see if I can fix them.
-
Look for subroutine uinitld( ) in parfeap/pmacr7.F and change format statement 2001 to
2001 format( i9,i2,1p,14e16.8/(1p,16e16.8))
Look for subroutine uoutdom( ) in parfeap/pmacr7.F and change the format statements 2001 and 2008 to
2001 format( i9,i2,1p,14e16.8/(1p,16e16.8))
2008 format( a:,1p,15e14.6/(1p,16e14.6))
These changes should fix some of the problems. I still have to track down the USER one.
-
The remaining changes are in parfeap/uldout.f change format 2002 to
2002 format(i9,i2,1p,14e14.6/(1p,16e14.6))
But this does not explain your problem with the USER material cards. Can you post the format statements that you find at the end of your program/pmatin.f file?
-
Also what version of FEAP are you using?
-
Attached is patched version of program/pmatin.f that you can use with version 8.5 to fix the problem with the material cards.
I did the corrections on our development version of 8.6 and tested it there. I then back ported it to version 8.5 but have not tested
it with 8.5. So please do that carefully.
Also for the 4 earlier corrections to the format statements in parfeap/pmacr7.F and parfeap/uldout.f, before the / in the format statements, please insert a :. So for example use
2002 format(i9,i2,1p,14e14.6:/(1p,16e14.6))
instead of
2002 format(i9,i2,1p,14e14.6/(1p,16e14.6))
-
Dear Professor,
please excuse my late reply.
I have incorporated the changes and they work very well. Thank you very much!
Only the material card doesn't seem to work yet.
The following input of a material works well.
MATErial,25
USER,16, 25,1,2,3,4,5,6,7,8,9,10,11,12
13,14,15
[some Parameters]
With the new patch I get:
MATErial 25
user 16 25 1 2 3 4 5 6 7 8 9 10 11 12 13
14 15
[some Parameters]
I think the new line should start after "12".
-
It appears there are a couple of errors in pmatin.f (in ./program)
1. The first read gets 14 values: the first is the element set so is not used unless you are assigning more than one material to an element set. The next 13 are for the dof use of 1 to 13 so you need to change the 12 to 13 in
! Set idl for first group of dof's
do j = 1,min(ndf,12)
idl(j) = nint(td(j+1))
end do ! j
2. Similarly change the 12 to 13 in
! For large number of dof's input additional records and set idl
if(ndf.gt.12) then
il = 12
Hopefully this will fix the read of material sets.
-
Thank you very much for the quick reply!
Unfortunately it did not work with replacing the 12 to 13.
Based on the patched pmatin.f by Prof. Govindjee I found a (seemingly) working version. You will find the corresponding file attached.
An important change was:
2008 format(2x,a15,1x,14i4:/(16i4))
Unfortunately, the actual problem has not yet become clear to me.
-
Can you test with the attached file please.
-
Ignore the previous mail. It is not a correct solution. Sorry.
-
Try this file.
-
Thank you very much for your continued answers!
The attached file led to success. It combines the patch of Prof. Govindjee and yours.
If you don't mind, we can close the topic now.