FEAP User Forum
FEAP => Input File Issues => Topic started by: Bruce Wayne on April 27, 2021, 05:55:06 AM
-
Hello FEAP Users,
I am trying to get a structure of alternating layers in x-direction of two materials using LAYEr option in BLOCk command(as given in p37 in user manual) but this error is being thrown.
*WARNING* Length allocation for:TEMP1 Length = 0
* ERROR * Partition 1 NEQ = 0
I tried using r/x1/1 for dir_b but none seem to work. Can you help me out?
I am attaching the Inputfile.(I am trying a Hill-Mandel Homogenization on an RVE containing alternate layers of materials 1 and 2.)
Thanks in advance.
-
Please always state which version of the code you are using.
-
I checked in version 8.6. The code looks to be a bit buggy.
I was able to make your input file work by switching to bilinear elements, manually computing the number of elements/nodes, and fixing an error you had in the input file.
feap **Hill for RVE of alternate layers of 2 Materials **
81 64 2 2 2 4
and
block
cart d d
layer 1 ! layer of material 1 and 2 along direction r (x1 or x)
1 2 1 2 1 2 1 2
quad 4
1 0 0
2 L 0
3 L L
4 0 L
The relevant code is program/blkgen.f and this helps to understand what FEAP is trying to do. Note that nr, ns, nt are then number of nodal divisions that you specified with the CART d d line in your block; so in your case nr = 8 and ns = 8 too.
110 errck = tinput(layer,1,td,5)
if(errck) go to 110
! Layer data
if(pcomp(layer(1),'laye',4)) then
dlayer = nint(td(1))
if(dlayer.eq.1) then
nlay = nr
elseif(dlayer.eq.2) then
nlay = ns
elseif(dlayer.eq.3) then
nlay = nt
endif
errck = palloc(111,'TEMP1',nlay,1)
j = 1
do while(j.le.nlay)
120 errck = tinput(layer,0,td,16)
if(errck) go to 120
do i = j,min(j+15,nlay)
mr(np(111)+i-1) = nint(td(i-j+1))
end do ! i
j = j + 16
end do ! while
go to 110
Note that the direction for LAYEr needs to be {1,2, or 3}. Then the code performs an polling input until you have input data for the number of nodal divisions in the chosen direction, 8 in your case.
The reading happens 16 divisions at a time.
We'll have a look to see what can be done. If you want to accelerate the process, have a look at program/blkgen.f and then program/sblke.f where the material numbers are set using the data that you have entered in the block command. Note that in sblke.f the direction of the layers in in dlayer and the data is in the array ilr. Most likely the error is in the indexing into ilr.
-
Here is a not so ideal patch to make the quadratic case work.
In the definition of the block use
layer 1
1 1 2 2 1 1 2 2
Thus you are entering two numbers for each element (really one per nodal division). Then in program/sblke.f near lines 177 and 187 make the following changes
!177
ma = ilr(j) ! ilr(inc*j-inc+1)
!187
ma = ilr(i) ! ilr(inc*i-inc+1)
These are quick hacks to get the code to function but are not fully robust. In particular, the automatic counting feature will still not work so for the quadratic case you will need to state
feap **Hill for RVE of alternate layers of 2 Materials **
81 16 2 2 2 9
-
Thanks Professor , It is working now