Welcome to the forums. Please post in English or French.

You are not logged in.

## #1 2023-09-14 13:54:17

Mdlw
Member
Registered: 2023-09-12
Posts: 2

### DYNA_VIBRA- Space-time load applied node by node

Hello everyone

I aim at doing a transient vibroacoustic analysis and as an input, I aim at imposing a space-time dependent pressure on a surface. This space-time dependent load is a list of N values I want to impose on the N nodes of my surface. And these N values change at each time step. The pressure values to be imposed on the surface nodes are stored in a .txt file; For the moment I use DYNA_VIBRA.

-I found in another discussion on the forum ("[SOLVED] Applying nodal forces node by node" from 2010, thanks to the authors !) a way to impose values node by node on the surface. I did something similar using python to build a load vector Vect_F. But in this case, the load vector does not vary with the time, it only works for a static case. I do not see any way to use a similar solution with a dynamical analysis with forces changing at each time step.
-I can alternatively initialise my Vect_F with ones on the surface nodes and use  FONC_MULT in EXCIT to multiply the initial Vect_F by a scalar changing at each time step. But in this case the time variation applies in the same way to the entire loading vector Vect_F. And I need the loading values to vary independently of each other.

Here is an example of my actual .comm file with these two options (space dependent load imposed node by node or time dependent load uniform on the surface).

1) using DYNA_VIBRA, is it possible to make the vector imposed in VECT_ASSE vary at each time step using something other than FONC_MULT?

2) If not, is it possible for the function given by FONC_MULT to return a vector instead of a scalar (i.e. a matrix-vector product would have to be performed at each time step to obtain the new load vector)?

3) Is there an alternative way of imposing a node-by-node load whose nodal values change at each time step?

Attachments:

Offline

## #2 2023-09-14 15:27:35

jeanpierreaubry
Guru
From: nantes (france)
Registered: 2009-03-12
Posts: 3,988

### Re: DYNA_VIBRA- Space-time load applied node by node

hello

how many loaded  nodes do you have ?
is the time function completely different for each node position ?

jean pierre aubry

Last edited by jeanpierreaubry (2023-09-14 15:29:25)

freely available here https://framabook.org/beginning-with-code_aster/

Offline

## #3 2023-09-14 15:39:27

Mdlw
Member
Registered: 2023-09-12
Posts: 2

### Re: DYNA_VIBRA- Space-time load applied node by node

As I work on an industrial problem, i have a lot of loaded nodes (3.10^4 here).

And yes, the time function completely different for each node position. The loading values  for each node come from a previous transient computation done with another software, so it can't be described by a funtion.
For the moment, in Code Aster documentation I've only seen problems with constant or periodic loads, or loads defined by functions.

Offline

## #4 2023-09-15 13:46:19

AsterO'dactyle
Registered: 2007-11-29
Posts: 456

### Re: DYNA_VIBRA- Space-time load applied node by node

Hello,

Solution (in you mail box Using EVOL_CHAR in DYNA_VIBRA:

EVOL_CH=AFFE_CHAR_MECA(MODELE=MODEL,
EVOL_CHAR=resuChar,)

dynaResu=DYNA_VIBRA(BASE_CALCUL='PHYS',
TYPE_CALCUL='TRAN',
...
EXCIT=(_F(CHARGE=EVOL_CH,),
),
)

Problem: create resuChar !

The most versatil way:

resuChar=CREA_RESU(OPERATION='AFFE',
TYPE_RESU='EVOL_CHAR',
NOM_CHAM='PRES',
AFFE=(
_F(CHAM_GD=presOne, INST=0.0, ),
_F(CHAM_GD=presTwo, INST=1.0, ),
_F(CHAM_GD=presThree, INST=2.0, ),
) )

You have to create fields presOne, presTwo, etc...
Wz can use LIRE_TABLE + CREA_CHAMP

# Rank of table in file
instOne = 1
tablePresOne=LIRE_TABLE(UNITE=39,
FORMAT='ASTER',
NUME_TABLE=instOne,
SEPARATEUR=' ');

presOne = CREA_CHAMP(OPERATION='EXTR',
TYPE_CHAM='NOEU_PRES_R',
TABLE=tablePresOne,
MAILLAGE=MA)

# Rank of table in file
instTwo = 2
tablePresTwo=LIRE_TABLE(UNITE=39,
FORMAT='ASTER',
NUME_TABLE=instTwo,
SEPARATEUR=' ');

presTwo = CREA_CHAMP(OPERATION='EXTR',
TYPE_CHAM='NOEU_PRES_R',
TABLE=tablePresTwo,
MAILLAGE=MA)

Table file form:
#
#--------------------------------------------------------------------------------
#
#DEBUT_TABLE
#TITRE PRES - INST 1.0
NOEUD    PRES
K8       R
A3       -100
A2       -200
A4       -300
A1       -400
#FIN_TABLE
#
#--------------------------------------------------------------------------------
#
#DEBUT_TABLE
#TITRE PRES - INST 2.0
NOEUD    PRES
K8       R
A3       -10
A2       -20
A4       -30
A1       -40
#FIN_TABLE
#
#--------------------------------------------------------------------------------

Code_Asterの開発者

Offline