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

You are not logged in.

#1 2018-01-12 18:09:53

MateoMartinez123
Member
Registered: 2018-01-12
Posts: 3

Thermo-Hydratation model of roller compacted concrete

Hi!, I'm newbie using Code_Aster, I'm developing a thermo-hydratation model for consecutive layers of RCC, so for that I need to calculate the degree of hydratation and thermal interactions of every layer, and when I put a new layer I need to start the thermo-hydratation process for that layer taking into account the thermo-hidratation process of the adjacents layers. For that I am extracting the temperatures champ from the previous layers and assembling it with an initial temperature for the new layer (using the crea_champ ASSE command), so on no problem (and the model runs until there), but I need to take into account the hydratation process of the previous layers because when I do the calculation for the new layer the dregee of hydratation resets for all the other layers, so one layer that was almost hydratated and was cooling down now is starting again the hydratation process (so the layer is generating heat again and raising temperature). I tried to project the champ of the previous layers using PROJ_CHAMP, also tried to extract the hydratation champ and assemble it with the other champs (temperatures of the layers) but I do not think they are compatible.

Here is the code for only two concrete layers:

For the first step i run this code:

# Definición de la función de afinidad del grado de hidratación
Ar = 4000

TZ0 = 273.15

#
# Loading
# ----------
TEMPEXT = 20.0

TEMPINI = 20.9

# Coeficiente intercambio de calor en las caras expuestas
COEFH = 22.7

MAILTH = LIRE_MAILLAGE(FORMAT='MED', UNITE=2)

MAILME = CREA_MAILLAGE(LINE_QUAD=_F(TOUT='OUI'), MAILLAGE=MAILTH)

MODTHER = AFFE_MODELE(
    AFFE=_F(
        GROUP_MA=('Layer1', 'EC3', 'EC2', 'EC1'),
        MODELISATION=('AXIS', ),
        PHENOMENE='THERMIQUE'
    ),
    MAILLAGE=MAILTH
)

AA = FORMULE(
    NOM_PARA=('HYDR', 'TEMP'),
    VALE='exp(-Ar/(TZ0+TEMP))*(654005*HYDR*HYDR*HYDR*HYDR*HYDR*HYDR-3560377*HYDR*HYDR*HYDR*HYDR*HYDR+6742840*HYDR*HYDR*HYDR*HYDR-5803689*HYDR*HYDR*HYDR+2474133*HYDR*HYDR-682296*HYDR+176167)'
)

LL = DEFI_LIST_REEL(DEBUT=0.0, INTERVALLE=_F(JUSQU_A=1.0, PAS=0.002))

LT = DEFI_LIST_REEL(DEBUT=0.0, INTERVALLE=_F(JUSQU_A=100.0, PAS=0.1))

AFF = CALC_FONC_INTERP(
    FONCTION=AA,
    LIST_PARA=LL,
    LIST_PARA_FONC=LT,
    NOM_PARA='HYDR',
    NOM_PARA_FONC='TEMP',
    NOM_RESU='AFF',
    PROL_DROITE='CONSTANT',
    PROL_DROITE_FONC='LINEAIRE',
    PROL_GAUCHE='EXCLU',
    PROL_GAUCHE_FONC='LINEAIRE'
)

COND = DEFI_FONCTION(
    NOM_PARA='TEMP',
    PROL_DROITE='LINEAIRE',
    PROL_GAUCHE='LINEAIRE',
    VALE=(0.0, 12.0, 300.0, 12.0)
)

ENTH = DEFI_FONCTION(
    NOM_PARA='TEMP',
    PROL_DROITE='LINEAIRE',
    PROL_GAUCHE='LINEAIRE',
    VALE=(0.0, 589618.7, 10.0, 611204.6)
)

MATHYDR = DEFI_MATERIAU(
    THER_HYDR=_F(AFFINITE=AFF, BETA=ENTH, CHALHYDR=41876.0, LAMBDA=COND)
)

CHMATNL = AFFE_MATERIAU(AFFE=_F(MATER=MATHYDR, TOUT='OUI'), MAILLAGE=MAILTH)

LINST = DEFI_LIST_REEL(
    DEBUT=0.0,
    INTERVALLE=(
        _F(JUSQU_A=5.0, NOMBRE=40), _F(JUSQU_A=15.0, NOMBRE=80),
        _F(JUSQU_A=20.0, NOMBRE=40), _F(JUSQU_A=60.0, NOMBRE=40)
    )
)

CHATHER = AFFE_CHAR_THER(
    ECHANGE=_F(COEF_H=COEFH, GROUP_MA=('EC3', 'EC2', 'EC1'), TEMP_EXT=TEMPEXT),
    MODELE=MODTHER
)

TEMPINIT = CREA_CHAMP(
    AFFE=_F(GROUP_MA=('Layer1', ), NOM_CMP=('TEMP', ), VALE=(TEMPINI, )),
    MODELE=MODTHER,
    OPERATION='AFFE',
    TYPE_CHAM='NOEU_TEMP_R'
)

RESUTHYD = THER_NON_LINE(
    CHAM_MATER=CHMATNL,
    COMPORTEMENT=_F(RELATION='THER_HYDR'),
    CONVERGENCE=_F(RESI_GLOB_MAXI=1e-05),
    ETAT_INIT=_F(CHAM_NO=TEMPINIT),
    EXCIT=_F(CHARGE=CHATHER),
    INCREMENT=_F(LIST_INST=LINST),
    MODELE=MODTHER,
    PARM_THETA=0.57
)


IMPR_RESU(FORMAT='MED', RESU=_F(RESULTAT=RESUTHYD), UNITE=3)

FIN()


For the second step (second layer) I run this code:


MODTHER2 = AFFE_MODELE(
    AFFE=_F(
        GROUP_MA=('Layer2', 'Layer1'),
        MODELISATION=('AXIS', ),
        PHENOMENE='THERMIQUE'
    ),
    MAILLAGE=MAILTH
)

CHATER2 = AFFE_CHAR_THER(
    ECHANGE=_F(
        COEF_H=COEFH,
        GROUP_MA=('EC6', 'EC5', 'EC4', 'EC2', 'EC1'),
        TEMP_EXT=TEMPEXT
    ),
    MODELE=MODTHER2
)

hydrcham = PROJ_CHAMP(
    CHAM_GD=Hydrlay1, MODELE_1=MODTHER, MODELE_2=MODTHER2, PROJECTION='OUI'
)

TempLay1 = CREA_CHAMP(
    INST=60.0,
    NOM_CHAM='TEMP',
    OPERATION='EXTR',
    RESULTAT=RESUTHYD,
    TYPE_CHAM='NOEU_TEMP_R'
)

Tempini2 = CREA_CHAMP(
    AFFE=_F(GROUP_MA=('Layer2', ), NOM_CMP=('TEMP', ), VALE=(TEMPINI, )),
    MODELE=MODTHER2,
    OPERATION='AFFE',
    TYPE_CHAM='NOEU_TEMP_R'
)

CHAMASSE = CREA_CHAMP(
    ASSE=(
        _F(CHAM_GD=Tempini2, GROUP_MA=('Layer2', ), NOM_CMP=('TEMP', )),
        _F(CHAM_GD=TempLay1, GROUP_MA=('Layer1', ), NOM_CMP=('TEMP', ))
    ),
    MODELE=MODTHER2,
    OPERATION='ASSE',
    TYPE_CHAM='NOEU_TEMP_R'
)

RESTHER2 = THER_NON_LINE(
    CHAM_MATER=CHMATNL,
    COMPORTEMENT=_F(RELATION='THER_HYDR'),
    CONVERGENCE=_F(RESI_GLOB_MAXI=1e-05),
    ETAT_INIT=_F(CHAM_NO=CHAMASSE),
    EXCIT=_F(CHARGE=CHATER2),
    INCREMENT=_F(LIST_INST=LINST),
    MODELE=MODTHER2,
    PARM_THETA=0.57
)

IMPR_RESU(FORMAT='MED', RESU=_F(RESULTAT=RESTHER2), UNITE=80)

FIN()



The above code does run, but without taking into account the hydratation champ of the first layer, so it resets the hydratation process but considering as initial temperature the temperature at the final step of the first model.

Sorry for my english, I'am still learning.

Thank you so much!

Offline

#2 2018-01-17 20:36:45

MateoMartinez123
Member
Registered: 2018-01-12
Posts: 3

Re: Thermo-Hydratation model of roller compacted concrete

Hi!

I was able to project the hydratation and temperature champ to the same layer for different models using the evol_ther option in the ther_non_lin/etat_init comman, now I have a new problem, I cant define the initial temperature for the new layer, so the software assumes that the initial temperature is 0 (indeed I initialize that temperature using the prol_zero option in the command proj_champ), is there any possibility to initialize in another value (different to zero)?

Another option is to define all the layers and the initial temperature for all of them in the first model,  using a 'zero' material for the layers still not constructed and then, when the new layer is constructed assigning the real material. Doing that, for the 'zero' material the hydratation is zero (wich is actually OK) but the the layers affected by that material are exchanging heat with the previous layers, even with zero conductivity. The ideal would be  the layers with the real material heat up and begin the hydratation process, and the layers with the 'zero' material stay in the same temperature (initial temperature) not interacting between them. 

I am defining the materials and initializing all using the elements, there should not be any problem with the sharing nodes of the layers?

thank you so much!

Last edited by MateoMartinez123 (2018-01-17 21:31:57)

Offline

Board footer