#
import os
os.system("pwd")
os.system("ls -l")
from Contrib.init_compo import INIT_COMPO
from Contrib.calc_ifs_dnl import CALC_IFS_DNL
#
DEBUT(PAR_LOT="NON",IMPR_MACRO="OUI");
#
INIT_COMPO(COMPO=component)

MA0=LIRE_MAILLAGE(FORMAT='MED',);
MA=CREA_MAILLAGE(MAILLAGE=MA0,
                 CREA_POI1=_F(GROUP_NO='ORI',
                              NOM_GROUP_MA='ORI')
                 )
IMPR_RESU(UNITE=21,RESU=_F(MAILLAGE=MA))
#

#
MO=AFFE_MODELE(MAILLAGE=MA,
               AFFE=(_F(TOUT='OUI',
                        PHENOMENE='MECANIQUE',
                        MODELISATION='3D',),
                     _F(GROUP_MA=('ORI',),
                        PHENOMENE='MECANIQUE',
                        MODELISATION='DIS_T',),
                     ),);

R1=0.01
Lz=0.001
PI=3.14159
Vs=PI*R1*R1*Lz

Ms=0.02
Ks=3.16
Cs=0.005

Rho_s=Ms/Vs
E_s = 2.04e+12;
Nu_s = 0.3;




#CARACTERISTIQUES ELEMENTAIRES
CAEL=AFFE_CARA_ELEM(MODELE=MO,
                    DISCRET=(_F(GROUP_MA='ORI',
                                CARA='K_T_D_N',VALE=(Ks,Ks,Ks),),
                             #_F(GROUP_MA='ORI',
                             #   CARA='K_T_D_N',VALE=(Ms,Ms,Ms),),
                             _F(GROUP_MA='ORI',
                                CARA='A_T_D_N',VALE=(Cs,Cs,Cs),),),);

ACIER=DEFI_MATERIAU(ELAS=_F(E=E_s,
                            NU=Nu_s,
                            RHO=Rho_s,),);
#
#
#
MAT=AFFE_MATERIAU(MAILLAGE=MA,
                  AFFE=_F(TOUT='OUI',
                          MATER=ACIER,),);
#
CON_LIM=AFFE_CHAR_MECA(MODELE=MO,
                       DDL_IMPO=_F(GROUP_MA='SBASE',
				 DX=0.0, DZ=0.0,),);
#
# Pas de temps , Temps final et temps initial		      
dt = 0.01;
Tmin = 0.0;
Tmax = 1.0;
#
#DEPLACEMENTS INITAUX  
Depli_dx = 0.0;
Depli_dy = 0.0;
Depli_dz = 0.0;
#
#VITESSES INITIALES  
Vite_dx = 0.0;
Vite_dy = 0.1;
Vite_dz = 0.0;

#Creation du champs de deplacement initiaux aux noeuds
#Il faut le faire imperativement apres MACRO_MATR_ASSE
# pour renseigner le champs NUME_DDL (defini auparavant avec 
#le nom ndll dans MACRO_MATR_ASSE )
#

K_ELEM=CALC_MATR_ELEM(OPTION='RIGI_MECA',
                      MODELE=MO,
                      CHAM_MATER=MAT,
                      CARA_ELEM=CAEL,
                      CHARGE=CON_LIM,);
M_ELEM=CALC_MATR_ELEM(OPTION='MASS_MECA',
                      MODELE=MO,
                      CHAM_MATER=MAT,
                      CARA_ELEM=CAEL,
                      CHARGE=CON_LIM,);

ASSEMBLAGE(MODELE=MO,
                INFO =2,
                CHAM_MATER=MAT,
		CARA_ELEM=CAEL,
                CHARGE=CON_LIM,
                NUME_DDL=CO('ndll'),
                MATR_ASSE=(_F(MATRICE=CO('matm'),
                              OPTION='MASS_MECA',),
                           _F(MATRICE=CO('matr'),
                              OPTION='RIGI_MECA',),
                           _F(MATRICE=CO('mata'),
                              OPTION='AMOR_MECA',),),);

DEPL2=CREA_CHAMP(TYPE_CHAM='NOEU_DEPL_R',
                 NUME_DDL=ndll,
                 OPERATION='AFFE',
                 MAILLAGE=MA, 
                 AFFE=_F(TOUT='OUI',
                         NOM_CMP=('DX','DY','DZ',),
                         VALE=(Depli_dx,Depli_dy,Depli_dz,),),);

VITE2=CREA_CHAMP(TYPE_CHAM='NOEU_DEPL_R',
                 NUME_DDL=ndll,
                 OPERATION='AFFE',
                 MAILLAGE=MA, 
                 AFFE=_F(TOUT='OUI',
                         NOM_CMP=('DX','DY','DZ',),
                         VALE=(Vite_dx,Vite_dy,Vite_dz,),),);
ACCE2=CREA_CHAMP(TYPE_CHAM='NOEU_DEPL_R',
                 NUME_DDL=ndll,
                 OPERATION='AFFE',
                 MAILLAGE=MA,
                 AFFE=_F(TOUT='OUI',
                         NOM_CMP=('DX','DY','DZ',),
                         VALE=(0.,0.,0.,),),);


F=AFFE_CHAR_MECA(MODELE=MO,
                 FORCE_NODALE=_F(GROUP_NO='ORI',FY=0.01))


L_INST=DEFI_LIST_REEL(DEBUT=Tmin,
                      INTERVALLE=_F(JUSQU_A=Tmax,
                                    PAS=dt,),);
#		       
#CALCUL DYNAMIQUE
#ETAT_INIT designe les conditions initiales (ici deplacements initiaux)
#EXCIT     designe la force exterieur exercee sur le systeme
#
#
TRAN=CALC_IFS_DNL( 
                     MODELE=MO,
                     CHAM_MATER=MAT,
                     CARA_ELEM=CAEL,
                     ETAT_INIT=_F(
                                 DEPL=DEPL2,
                                 VITE=VITE2,
                                 ACCE=ACCE2 ,
                                  ),
                     EXCIT=(_F(CHARGE=CON_LIM,),
 #                           _F(CHARGE=F),
                            ),
                     COMPORTEMENT=_F(RELATION='ELAS',
                                           ),
                     SCHEMA_TEMPS=_F(SCHEMA='NEWMARK',
                                     FORMULATION='DEPLACEMENT'),
                     CONVERGENCE=_F(
		                    RESI_GLOB_MAXI=1.,
                                    ITER_GLOB_MAXI=40,),
#                     INCREMENT=_F(LIST_INST=L_INST),

# Mots cles IFS
                     GROUP_MA_IFS = ('SFLUIDE',),
                     NOM_CMP_IFS = ('FX', 'FY' , 'FZ' ),
                     PAS_INIT = 0.01,
                                    );



# DEPLACEMENT
DEPY = RECU_FONCTION(   RESULTAT=TRAN,NOM_CHAM='DEPL',
                        NOM_CMP = 'DY',
			GROUP_NO='ORI',
                        )

DEFI_FICHIER(UNITE=59,);
IMPR_FONCTION(FORMAT='XMGRACE', UNITE=59,
              COURBE=_F( FONCTION = DEPY),)



FIN();
