Hello,
I would like to increase the limit for the highest degree possible for a NURBS surface to calculate the tangent matrix.
Currently, it seems like p=7 is the limit (according to shp2d_nurb.f).
As feap is able to calculate the quadrature points for any arbitrary degree, I think one only needs to modify the above routine and qudshp.h to get it working.
I did so by applying the following changes (for p<=10):
Nshp and Mshp dimensions are large enough, so I only changed the if condition:
if(nel.gt.121) then ! maximum: p=10
write(iow,*) ' Number of nodes on element too large'
write(ilg,*) ' Number of nodes on element too large'
if(rank.eq.0) then
write(*,*) ' Number of nodes on element too large'
endif
call plstop(.true.)
endif
and as for qudshp.h,
real (kind=8) :: sg2 , el2 , shp2
common /qudshp2/ sg2(3,121), el2(4,121), shp2(3,121,121)
these should suffice for user written elements. But, as I wanted to use the standard Solid 2D - Plane Stress element, I also modified sld2d1.f to increase the dimension of stress arrays.
Unfortunately, when I issue FORM or TANG commands, I get errors (segmentation fault) for p>7. (FORM works up to p=7, TANGent up to p=9)
So, the question is: are the above the only changes needed in order to get the correct tangent matrix? Or I have missed something. (I know that more changes are necessary for plotting stresses/strains, etc., but here my goal is only to have the correct tangent for external uses).
Any help in this regard would be greatly appreciated.
Attached is the input file for p=10 case.
Many thanks and kind regards,
RM