Topic: Linear surface load

Hi all,
I'm trying to understand how to write a consistent class for (bi)linear surface loading.
I had a look at constant surface load and linear edge load as well, but I'm a little bit confused about how to treat the computeNArray.

Can you help on that? IMHO this would be good to have this class in the official repo too - maybe one of you can write it in less time than answering to me...

thanks in advance

Re: Linear surface load

Maybe I asked too much.
I can do it by myself, please give some hints on how to treat the computeNArray.

Re: Linear surface load

Hi,

It seems to me that computeNArray provides approximation matrix, i.e., N matrix for the given load. Implementation should be straightforward. However, I am not sure what is the best way to set up the load in the input file.

Re: Linear surface load

Sorry, not clear for me... I'm just asking what it should be done. I.e. for constantSurfaceLoad I read:

virtual void computeNArray(FloatArray &answer, const FloatArray &coords) const { answer.clear(); }

I understand this is the only function needed for a LinearSurfaceLoad class. What should I place in this?

Re: Linear surface load

Maybe to understand it better, check function computeValueAt in boundaryload.C where function computeNArray is called. Or check linearedgeload which returns

 answer.at(1) = (1 - ksi.) * 0.5;
 answer.at(2) = (1 + ksi.) * 0.5;

It is implemented as

virtual void computeNArray(FloatArray &answer, const FloatArray &coords) const { answer.clear(); }

in constantSurfaceLoad class because function computeValueAt is overloaded since the value of the load depends just on the load magnitude; thus, no need for NArray. However, it needs to be still implemented as it is defined as purely virtual.

6 (edited by johnnyontheweb 13-10-2020 18:27:07)

Re: Linear surface load

Thanks, now it's clear.
It seems only computeValueAt function is needed for forces (see StructuralElement :: computeBoundarySurfaceLoadVector).

I solved for set up of loading in the input file. This can be used:

LinearSurfaceLoad 1 loadType 3 loadTimeFunction 2 Components 6 0e0 0e0 1e0 0e0 0e0 0e0 normValues 4 0 0 1 1

The normValues specifies the normalized factors for loading, referred to nodes. If number of values are less than nodes, 1 is assumed.
Each component will be multiplied by the coefficient given by spatial plane formed by these factors (if factors are not lying in the same plane, the nearest plane is used, since I'll implement this with least squares). This load distribution is applied to all components. Hence, interpolation order is 1 (bilinear in 2D).

Comments on that? Is in the code any tool already present to find out the plane?
Can the element node order and number can be reconstructed in this class?
thanks