$$$$ DECONV3D * DECONV3D PROCEDUR WANG 16/01/25 21:15:00 8800 'DEBPROC' DECONV3D COUCHE*'TABLE' PC*'POINT' FOND_SOL*'MAILLAGE' MOD_SOL*MMODEL MAT_SOL*MCHAML DIR*'MOT' GAMMAO*'EVOLUTIO' F1*'FLOTTANT'F2*'FLOTTANT' FC/'FLOTTANT' P_GAMMA/'TABLE' ; ************************************************************************ * * D E C O N V 3 D * ----------------- * * FONCTION: * --------- * * Cette procedure permet d'effectuer des calculs sismiques * d'interaction sol-structure (ISS) en 3D par la methode des * elements finis. * * PHRASE D'APPEL (EN GIBIANE): * ---------------------------- * * TABRESU = DECONV3D COUCHE PC FOND_SOL MOD_SOL MAT_SOL DIR * GAMMAO F1 F2 (FC) (P_GAMMA) * * OPERANDES: * ---------- * * COUCHE 'TABLE' : table de donnees * COUCHE.'BLK' : Si existe, deconvolution pour la methode de Bielak * COUCHE.'BLK'.'EP_H' : epaisseur horizontale de la zone intermediare * verticale * COUCHE.'BLK'.'EP_V' : epaisseur veriticle de la zone intermediare * horizontale * COUCHE.I.'indice' : donnees pour la ieme couche du sol * * indice 'FRONTIERE' 'MAILLAGE' : frontiere verticale * indice 'MASSE_VOLUMIQUE' 'FLOTTANT' : masse volumique * indice 'POISSON' 'FLOTTANT' : coefficient de Poisson * indice 'YOUNG' 'FLOTTANT' : module d'Young * indice 'AMORTISSEMENT 'FLOTTANT' : amortissement reduit * * PC 'MAILLAGE' : point de reference situe au milieu du millage * de solou sur l'axe de symetrie si calcul sur * la moitie et le quart du systeme * FOND_SOL 'MAILLAGE' : frontiere horizontale inferieure du sol * MOD_SOL 'MMODEL' : modele du sol * MAT_SOL 'MCHAML' : materiau du sol * DIR 'MOT' : direction de l'acceleration sismique GAMMAO * 'UX' pour la direction horizontale X * 'UY' pour la direction horizontale Y * 'UZ' pour la direction verticale Z * GAMMAO 'EVOLUTIO' : Signal sismique (accelerogramme) d'entree pour * la deconvolution, defini par defaut a la surface * libre du sol, sinon, renseigner la table P_GAMMA * F1, F2 'FLOTTANT' : frequences sur lesquelles l'amortissement * : reduit est ajuste suivant le modele de * RAYLEIGH * FC 'FLOTTANT' : frequence de coupure pour la deconvolution, * par defaut FC = 50 Hz * P_GAMMA 'TABLE' : Description des accelerogrammes d'entree et de sorti * pour la deconvolution (facultatif) * indice 'ENTREE' :'TABLE' : description de la nature de l'accelerogramme * GAMMAO autre que sur la surface libre ou description * de l'onde incidente inclinée SH dans le cas d'un sol * demi-espace homogène. * (facultatif) * sous-indice 'NATURE' : nature du point de controle : * 'MOT' INSIDE : dans le sol * 'MOT' OUTCROP : outcrop du bedrock * 'MOT' SH : Onde incidente SH inclinée dans le cas * de la methode Bielak * DIR = UX implique onde SH dans le plan YZ, * DIR = UY implique onde SH dans le plan XZ, * * sous-indice 'ANGLE' : Angle d'incidence de l'onde SH si 'NATURE' = SH * * sous-indice 'CONTROLE' :'MAILLAGE': * si 'NATURE' = INSIDE, point de controle sur la * frontiere verticale * si 'NATURE' = 'SH', point de controle à la * surface du sol pour lequel on impose * l'accélérogramme du champ libre GAMMAO * * indice 'I' :'MAILLAGE': Ieme (i = 1, 2, 3,...) points sur la * frontiere verticale pour lesquels on desire sortir * l'accelerogramme en champ libre (resultats de * deconvolution) * RESULTATS: * ---------- * TABRESU 'TABLE' : table qui contient les resultats du calcul * * indice 'CHAR' 'CHARGEMENT' : excitation sur la frontiere du sol * indice 'AMOR' 'RIGIDITE' : frontiere absorbante * indice 'DEFO' 'EVOLUTIO' : deformation maximale en fonction * de la profondeur * indice 'ACCE' 'TABLE' : table qui contient les accelerations * obtenues par la deconvolution * sous-indice I acceleration du point I defini dans la * table P_GAMMA * sous-indice 'OUTCROP' acceleration du outcrop de bedrock * * indice 'PAS' 'FLOTTANT' * indice 'FCDYN' 'FLOTTANT' : pas de temps et frequence de coupure * a utiliser pour le calcul de * l'interaction sol-structure * a l'aide de la procedure DYNAMIC * * AUTEUR, DATE DE CREATION ET DE MODIFICATION: * -------------------------------------------- * * F. WANG 20/05/2009 : Creation. * F. WANG 07/10/2010 : Mise a zero des vitesses initiales * au sens moyen sur les 70 premiers pas * eliminant ainsi la rotation du bloc de sol, * Changement de format du chargement reduisant * largement le temps de calcul dynamique. * F. WANG 01/02/2012 : Correction d'un bug MAT_S -> MAT_SOL, * Elimination des accents dans les * commentaires pour eviter des problemes * F. WANG 20/02/2013 : Ajout des options concernant le signal * d'entree : INSIDE et OUTCROP * Ajout du signal de sortie outcrop de bedrock * F. WANG 01/02/2014 : Implantation de la methode de Bielak * permettant d'alleger le calcul * A. FRAU 01/07/2015 : Correction Bug * * F. WANG 01/10/2015 : Implantation d'une nouvelle option: Onde SH * inclinée dans l'option Bielak * ************************************************************************ 'SAUT' 1 'LIGNE' ; SOL = 'EXTR' MOD_SOL 'MAILLAGE'; 'SI' (EXIS COUCHE BLK) ; BIELAK = VRAI ; NB_COU = ('DIME' COUCHE) - 1 ; 'MESS' 'DECONVOLUTION POUR LA METHODE DE BIELAK' ; 'SINON' ; BIELAK = FAUX ; NB_COU = 'DIME' COUCHE ; 'FINSI' ; *-----------DEBUT DE MODIFICATION 01/10/2015. WANG)-------------------- SH = FAUX ; 'SI' (EXIS P_GAMMA) ; 'SI' (EXIS P_GAMMA ENTREE) ; 'SI' (EGA P_GAMMA.ENTREE.NATURE 'SH') ; ANGLE = P_GAMMA.ENTREE.ANGLE ; SH = VRAI ; SI (EGA DIR 'UX') ; 'MESS' 'ONDE SH SE PROPAGEANT DANS LE PLAN YZ' ; 'MESS' 'ANGLE D"INCIDENCE = ' ANGLE 'DEGREES' ; FINSI ; SI (EGA DIR 'UY') ; 'MESS' 'ONDE SH SE PROPAGEANT DANS LE PLAN XZ' ; 'MESS' 'ANGLE D"INCIDENCE =' ANGLE 'DEGREES'; FINSI ; SI (NB_COU > 1); 'SAUT' 1 'LIGNE' ; 'MESS' '***** OPTION NON PREVUE POUR UN SOL MULTICOUCHE *****'; 'MESS' '***** ARRET DE LA PROCEDURE DECONV3D *****' ; 'SAUT' 1 'LIGNE' ; QUIT DECONV3D ; FINSI ; SI (NON BIELAK) ; 'SAUT' 1 'LIGNE' ; 'MESS' '***** OPTION PREVUE SEULEMENT DANS OPTION BIELAK *****'; 'MESS' '***** ARRET DE LA PROCEDURE DECONV3D *****' ; 'SAUT' 1 'LIGNE' ; QUIT DECONV3D ; FINSI ; 'FINSI' ; 'FINSI' ; 'FINSI' ; *-----------FIN DE MODIFICATION 01/10/2015 F. WANG)-------------------- * Verification du maillage de la frontiere du sol : * Types d'elements de frontiere : QUA4 + TRI3 ou QUA8 + TRI6 FRSOL = FOND_SOL; I = 1; 'REPE' BCL0 NB_COU; FRSOL = FRSOL 'ET' COUCHE.I.'FRONTIERE'; I = I + 1; 'FIN' BCL0; LTYPF = 'ELEM' FRSOL 'TYPE'; 'SI' ((DIME LTYPF) > 2); 'SAUT' 2 'LIGNE' ; 'MESS' '***** ARRET DE LA PROCEDURE DECONV3D *****'; 'MESS' '***** FRONTIERE : MAILLAGE INCORRECT *****'; 'SAUT' 2 'LIGNE' ; 'QUIT' DECONV3D; 'FINSI'; 'SI' ((DIME LTYPF) 'EGA' 2); TYPF1 = 'EXTR' LTYPF 1; TYPF2 = 'EXTR' LTYPF 2; 'SI' ((('EGA' TYPF1 'QUA4') ET ('EGA' TYPF2 'TRI3')) OU (('EGA' TYPF1 'TRI3') ET ('EGA' TYPF2 'QUA4'))); TY1 = 'CUB8'; TY2 = 'PRI6'; 'SINON'; 'SI' ((('EGA' TYPF1 'QUA8') ET ('EGA' TYPF2 'TRI6')) OU (('EGA' TYPF1 'TRI6') ET ('EGA' TYPF2 'QUA8'))); TY1 = 'CU20'; TY2 = 'PR15'; 'SINON'; 'SAUT' 2 'LIGNE' ; 'MESS' '***** ARRET DE LA PROCEDURE DECONV3D *****'; 'MESS' '***** FRONTIERE : ELEMENTS INCOMPATIBLES *****'; 'SAUT' 2 'LIGNE' ; 'QUIT' DECONV3D; 'FINSI'; 'FINSI'; 'FINSI'; 'SI' ((DIME LTYPF) 'EGA' 1); TYPF1 = 'EXTR' LTYPF 1; 'SI' (('EGA' TYPF1 'QUA4') OU ('EGA' TYPF1 'TRI3')); TY1 = 'CUB8'; TY2 = 'PRI6'; 'SINON'; 'SI' (('EGA' TYPF1 'QUA8') OU ('EGA' TYPF1 'TRI6')); TY1 = 'CU20'; TY2 = 'PR15'; 'SINON'; 'SAUT' 2 'LIGNE' ; 'MESS' '***** ARRET DE LA PROCEDURE DECONV3D *****'; 'MESS' '***** FRONTIERE : ELEMENTS INCOMPATIBLES *****'; 'SAUT' 2 'LIGNE' ; 'QUIT' DECONV3D; 'FINSI'; 'FINSI'; 'FINSI'; 'OPTI' 'ELEM' TY1 ; 'SAUT' 5 'LIGNE' ; 'MESS' '**********************************************************' ; 'MESS' '* *' ; 'MESS' '* CALCUL DU CHAMP SISMIQUE INCIDENT PAR LA METHODE *' ; 'MESS' '* DE LA DECONVOLUTION *' ; 'MESS' '* *' ; 'MESS' '**********************************************************' ; 'SAUT' 2 'LIGNE' ; 'MESS' 'CARACTERISTIQUES MECANIQUES DU SOL' ; I = 0 ; 'REPE' BOUCL0 NB_COU ; I = I + 1 ; E_I = COUCHE.I.'YOUNG' ; NU_I = COUCHE.I.'POISSON' ; COUCHE.I.'MODULE_G' = E_I / ( 2. * ( 1. + NU_I ) ) ; CS_I = ( COUCHE.I.'MODULE_G' / COUCHE.I.'MASSE_VOLUMIQUE' ) ** .5 ; CP_I = ((2.0 * (1.0 - NU_I))/(1.0 - (2.0 * NU_I))) ** 0.5 ; CP_I = CP_I * CS_I ; FR_I = COUCHE.I.'FRONTIERE' ; Z_I = 'COOR' 3 FR_I ; Z_MAX = 'MAXI' Z_I ; Z_MIN = 'MINI' Z_I ; COUCHE.I.'EPAISSEUR' = Z_MAX - Z_MIN ; 'SAUT' 'LIGNE' ; 'MESS' 'COUCHE NUMERO ' I ; 'SAUT' 'LIGNE' ; 'MESS' 'EPAISSEUR DE LA COUCHE H ' COUCHE.I.'EPAISSEUR' ; 'MESS' 'MODULE D"YOUNG E ' COUCHE.I.'YOUNG' ; 'MESS' 'MASSE VOLUMIQUE RHO' COUCHE.I.'MASSE_VOLUMIQUE' ; 'MESS' 'COEFFICIENT DE POISSON NU ' COUCHE.I.'POISSON' ; 'MESS' 'VITESSE DES ONDES S CS ' CS_I ; 'MESS' 'VITESSE DES ONDES P CP ' CP_I ; 'MESS' 'AMORTISSEMENT EQUIVALENT KSI' COUCHE.I.'AMORTISSEMENT' ; 'FIN' BOUCL0 ; ************* Construction d'une couche de sol enveloppe *************** * * La couche enveloppe est construite a l'exterieur de la * frontiere du sol (en utilisant le point de reference PC) * ************************************************************************ 'SAUT' 3 'LIGNE' ; 'MESS' 'CONSTRUCTION D"UNE ENVELOPPE DE SOL' ; A_I = 'MESU' FR_I 'SURF' ; NE_I = 'NBEL' FR_I ; DR = (A_I/NE_I) ** 0.5 ; 'SI' BIELAK ; 'SI' ('EXIS' COUCHE.BLK EP_H) ; DR = COUCHE.BLK.EP_H ; 'FINSI' ; 'FINSI' ; XMAX = 'MAXI' 'ABS' (('COOR' 1 FR_I) - ('COOR' 1 PC)) ; YMAX = 'MAXI' 'ABS' (('COOR' 2 FR_I) - ('COOR' 2 PC)) ; R_FR = ((XMAX**2) + (YMAX**2)) ** 0.5 ; RAPP = (R_FR + DR) / R_FR ; 'TITR' 'ENVELOPPE DE SOL POUR LA DECONVOLUTION (EN ROSE)' ; COLONN = 'TABLE' ; COLMOD = 'TABLE' ; COLMAT = 'TABLE' ; COLMAS = 'TABLE' ; COLRIG = 'TABLE' ; COLBLO = 'TABLE' ; COLAMO = 'TABLE' ; 'SI' ( 'NON' ( 'EXIS' F1 ) ) ; F1 = 1.0 ; F2 = 25.0 ; 'FINSI' ; 'MESS' 'AMORTISSEMENT DE RAYLEIGH POUR LE SOL' ; 'MESS' 'F1 = ' F1 'Hz F2 = ' F2 'Hz' ; ALPHA = PI * 4 * F1 * F2 / ( F1 + F2 ) ; BETA = 1 / ( PI * ( F1 + F2 ) ) ; I = 0 ; 'REPE' BOUCL1 NB_COU ; I = I + 1 ; KSI = COUCHE.I.'AMORTISSEMENT' ; FR_I = COUCHE.I.'FRONTIERE' ; FR_I2 = (FR_I 'HOMO' RAPP PC) 'AFFI' (1./RAPP) PC ('PLUS' PC (0 0 -1)) ; COLONN.I = FR_I 'VOLU' 1 FR_I2 ; COLMOD.I = 'MODE' ( COLONN.I ) 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE' TY1 TY2 ; COLMAT.I = 'MATE' ( COLMOD.I ) 'YOUNG' ( COUCHE.I.'YOUNG' ) 'NU' ( COUCHE.I.'POISSON' ) 'RHO' ( COUCHE.I.'MASSE_VOLUMIQUE' ) ; COLMAS.I = 'MASS' ( COLMOD.I ) ( COLMAT.I ) ; COLRIG.I = 'RIGI' ( COLMOD.I ) ( COLMAT.I ) ; 'SI' (('EGA' DIR 'UX') OU ('EGA' DIR 'UY')) ; COLBLO.I = 'BLOQ' 'UZ' COLONN.I ; 'SINON' ; 'SI' ('EGA' DIR 'UZ') ; COLBLO.I = 'BLOQ' 'UX' 'UY' COLONN.I ; 'FINSI' ; 'FINSI' ; COLAMO.I = KSI * (( ALPHA * ( COLMAS.I ) ) 'ET' ( BETA * ( COLRIG.I 'ET' COLBLO.I ))) ; 'SI' ( I 'EGA' 1 ) ; FRON = COUCHE.I.'FRONTIERE' ; COL1 = COLONN.I ; MOD1 = COLMOD.I ; MAT1 = COLMAT.I ; MAS1 = COLMAS.I ; RIG1 = COLRIG.I ; BLO1 = COLBLO.I ; AMO1 = COLAMO.I ; 'SINON' ; FRON = FRON 'ET' ( COUCHE.I.'FRONTIERE' ) ; COL1 = COL1 'ET' ( COLONN.I ) ; MOD1 = MOD1 'ET' ( COLMOD.I ) ; MAT1 = MAT1 'ET' ( COLMAT.I ) ; MAS1 = MAS1 'ET' ( COLMAS.I ) ; RIG1 = RIG1 'ET' ( COLRIG.I ) ; BLO1 = BLO1 'ET' ( COLBLO.I ) ; AMO1 = AMO1 'ET' ( COLAMO.I ) ; 'FINSI' ; 'FIN' BOUCL1 ; 'ELIM' COL1 0.01 ; COL1 = COL1 'COUL' 'ROSE' ; RIGT = RIG1 'ET' BLO1 ; 'SI' ( 'EXIS' SOL ) ; 'TRAC' ( SOL 'ET' COL1 ) 'FACE' 'NCLK' ; 'SINON' ; 'TRAC' COL1 'FACE' 'NCLK' ; 'FINSI' ; * Amortisseurs a la base de l'enveloppe 'SAUT' 'LIGNE' ; 'MESS' 'AMORTISSEURS A LA BASE DE L ENVELOPPE' ; ZBA = 'MINI' ('COOR' 3 COLONN.NB_COU) ; EBA = 'ENVE' COLONN.NB_COU ; PBA = EBA 'POIN' 'PLAN' (0 0 ZBA) (1 0 ZBA) (0 1 ZBA) 0.001 ; SBAS = EBA 'ELEM' 'APPUYE' 'STRICTEMENT' PBA ; BAS_COL = SBAS ; AMO_BAS = AMOR COLMOD.NB_COU SBAS COLMAT.NB_COU ; AMOT = AMO_BAS 'ET' AMO1 ; * Point surface libre et point base du sol ZSUR = 'MAXI' ('COOR' 3 (COUCHE. 1 . 'FRONTIERE')) ; PSUR = (COUCHE. 1 . 'FRONTIERE') 'POIN' 'PLAN' (0 0 ZSUR) (1 0 ZSUR) (0 1 ZSUR) 0.001 ; P_SUR = PSUR 'POINT' 'INITIAL' ; ; ZBAS = 'MINI' ('COOR' 3 (COUCHE.NB_COU.'FRONTIERE')) ; PBAS = (COUCHE.NB_COU.'FRONTIERE') 'POIN' 'PLAN' (0 0 ZBAS) (1 0 ZBAS) (0 1 ZBAS) 0.001 ; P_BAS = PBAS 'POINT' 'INITIAL' ; * Renumerotation des noeuds sur la frontiere : TASSER "FRON" 'TASS' FRON ; NB_NOEU = 'NBNO' FRON ; 'MESS' 'NOMBRE DE NOEUDS SUR LA FRONTIERE :' NB_NOEU ; * Acces aux noeuds sur la frontiere NUM_SUR = 'NOEU' P_SUR ; NUM_BAS = 'NOEU' P_BAS ; POI_FRO = 'TABLE' ; I = 0 ; 'REPE' BOUCL2 NB_NOEU ; I = I + 1 ; POI_FRO.I = 'NOEU' I ; 'FIN' BOUCL2 ; ******************* Reponse dynamique de L'enveloppe ***************** * * Pour eviter des problemes de precision lies a l'interpolation du * chargement produit par cette procedure, le pas de temps utilise ici * pour la deconvolution sera egalement utilise pour le calcul d'ISS. * * Le pas de temps est egale a 1/2, 1/4, 1/8, ... de celui de GAMMAO * pour eviter des erreurs d'interpolation sur le signal d'entree. Il * doit etre defini de sorte que la frequence de coupure utilisee dans * la procedure DYNAMIC est au moins 4 fois FC. * * Duree de calcul * * sol monocouche : 3 aller-retours onde S * sol multicouche : 5 aller-retours onde S (prise en compte des * reflections sur les interfaces des couches) * ************************************************************************ * Frequence de coupure FC 'SI' ( 'NON' ( 'EXIS' FC ) ) ; FC = 50.0 ; 'FINSI' ; 'SAUT' 'LIGNE' ; 'MESS' 'FREQUENCE DE COUPURE = ' FC 'Hz' ; 'SAUT' 3 'LIGNE' ; 'MESS' 'REPONSE DYNAMIQUE DE L ENVELOPPE' ; 'SAUT' 'LIGNE' ; T_GAMO = 'EXTR' GAMMAO 'ABSC' ; A_GAMO = 'EXTR' GAMMAO 'ORDO' ; NP = 'DIME' T_GAMO ; TEM1 = 'EXTR' T_GAMO 1 ; TEM2 = 'EXTR' T_GAMO 2 ; TEMNP = 'EXTR' T_GAMO NP ; PAS_TEM = TEM2 - TEM1 ; PAS_2FC = 1.0 / ( 8 * FC ) ; IDIV = 0 ; 'REPE' BB1 ; ERR = (( PAS_TEM / ( 2**IDIV )) - PAS_2FC ) / PAS_2FC ; 'SI' ( ERR < 0.01 ) ; 'QUIT' BB1 ; 'FINSI' ; IDIV = IDIV + 1 ; 'FIN' BB1 ; PAS_TEM = PAS_TEM / (2**IDIV) ; *---------------------------------------------------------------------- * Aller a la partie (Bielak et SH) (modif du 01/10/2015 par F. WANG) * SI (NON (ET BIELAK SH)) ; * *---------------------------------------------------------------------- 'SI' ( NB_COU 'EGA' 1 ) ; G = ( COUCHE. 1 . 'MODULE_G' ) ; CS = ( G / ( COUCHE. 1 . 'MASSE_VOLUMIQUE' ) ) ** 0.5 ; DUREE = 6.0 * ( COUCHE. 1 . 'EPAISSEUR' ) / CS ; 'SINON' ; DUREE = 0.0 ; I = 0 ; 'REPE' BOUCD NB_COU ; I = I + 1 ; G = ( COUCHE.I.'MODULE_G' ) ; CS = ( G / ( COUCHE.I.'MASSE_VOLUMIQUE' ) ) ** 0.5 ; DUREE = DUREE + ( 10.0 * ( COUCHE.I.'EPAISSEUR' ) / CS ) ; 'FIN' BOUCD ; 'FINSI' ; * Impulsion de force horizontale a la base de l'enveloppe * Sa transforme de Fourier doit etre non nulle dans * l'intervalle (0, FC). On a DT = 7 * PAS_TEM 'SAUT' 'LIGNE' ; 'MESS' 'FORCE APPLIQUEE A LA BASE DE L ENVELOPPE' ; 'TITRE' 'FORCE APPLIQUEE A LA BASE DE L ENVELOPPE' ; DT = 7 * PAS_TEM ; NT = 300 ; L_TIM = 'PROG' 0.0 'PAS' DT 'NPAS' NT ; L_FOR = 'PROG' 0. 1.E5 0. -1.E5 297 * 0. ; EV_FOR = 'EVOL' 'MANU' 'TEMPS(S)' L_TIM 'FORCE(N)' L_FOR ; DUREE = DUREE + ( 4. * DT ) ; 'SI' ( DUREE < ( 8. * DT ) ) ; DUREE = 8. * DT ; 'FINSI' ; NB_PAS = 'ENTI' ( DUREE / PAS_TEM ) ; DUREE = NB_PAS * PAS_TEM ; 'DESS' EV_FOR 'XBOR' 0.0 DUREE 'NCLK' ; 'SAUT' 'LIGNE' ; 'MESS' 'CALCUL DYNAMIQUE POUR LA DECONVOLUTION' ; 'MESS' 'PAS DE CALCUL = ' PAS_TEM ' DUREE = ' DUREE ; 'SI' ( 'EGA' DIR 'UX' ) ; FOR_P = 'PRES' 'MASS' COLMOD.NB_COU 1.0 SBAS ; FOR_BAS = 'EXCO' 'FZ' FOR_P 'FX' ; 'SINON' ; 'SI' ( 'EGA' DIR 'UY' ) ; FOR_P = 'PRES' 'MASS' COLMOD.NB_COU 1.0 SBAS ; FOR_BAS = 'EXCO' 'FZ' FOR_P 'FY' ; 'SINON' ; 'SI' ( 'EGA' DIR 'UZ' ) ; FOR_BAS = 'PRES' 'MASS' COLMOD.NB_COU 1.0 SBAS ; 'FINSI' ; 'FINSI' ; 'FINSI' ; CHA_BAS = 'CHAR' FOR_BAS EV_FOR ; 'LIST' FOR_BAS ; CH_DEPI = 'MANU' 'CHPO' 3 COL1 'UX' 0. 'UY' 0. 'UZ' 0. ; CH_VITI = 'MANU' 'CHPO' 3 COL1 'UX' 0. 'UY' 0. 'UZ' 0. ; LINST ='PROG' TEM1 'PAS' PAS_TEM 'NPAS' (NB_PAS - 1) ; FCDYN = 1.0 / (4 * PAS_TEM) ; TAB_DYN ='TABLE' ; TAB_DYN.'DEBU' = TEM1 ; TAB_DYN.'VITE' = CH_VITI ; TAB_DYN.'DEPL' = CH_DEPI ; TAB_DYN.'CHAR' = CHA_BAS ; TAB_DYN.'RIGI' = RIGT ; TAB_DYN.'MASS' = MAS1 ; TAB_DYN.'AMOR' = AMOT ; TAB_DYN.'INST' = LINST ; TAB_DYN.'FREQ' = FCDYN ; 'TEMP' ; RESU = DYNAMIC TAB_DYN ; 'SAUT' 'LIGNE' ; 'MESS' 'FIN DE CALCUL DYNAMIQUE SUR L ENVELOPPE' ; 'MENA' ; 'TASS' FRON ; 'TEMP' ; * Deplacements, vitesses, deformations et reactions 'SI' ( 'EGA' DIR 'UX' ) ; UMOT = 'MOT' 'UX' ; EMOT = 'MOT' 'GAXZ' ; FMOT = 'MOT' 'FZ' ; 'SINON' ; 'SI' ( 'EGA' DIR 'UY' ) ; UMOT = 'MOT' 'UY' ; EMOT = 'MOT' 'GAYZ' ; FMOT = 'MOT' 'FZ' ; 'SINON' ; 'SI' ( 'EGA' DIR 'UZ' ) ; UMOT = 'MOT' 'UZ' ; EMOT = 'MOT' 'EPZZ' ; FMOT1 = 'MOT' 'FX' ; FMOT2 = 'MOT' 'FY' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'SAUT' 3 'LIGNE' ; 'MESS' 'FONCTION DE TRANSFERT POUR LES DEPLACEMENTS, LES VITESSES,' ; 'MESS' 'LES DEFORMATIONS DE CISAILLEMENT ET LES REACTIONS ' ; U_FRON = 'TABLE' ; V_FRON = 'TABLE' ; E_FRON = 'TABLE' ; R_FRON = 'TABLE' ; R1_FRON = 'TABLE' ; R2_FRON = 'TABLE' ; J = 0 ; 'REPE' BOUCL3 NB_NOEU ; J = J + 1 ; U_FRON.J = 'PROG' 0.0 ; V_FRON.J = 'PROG' 0.0 ; E_FRON.J = 'PROG' 0.0 ; R_FRON.J = 'PROG' 0.0 ; R1_FRON.J = 'PROG' 0.0 ; R2_FRON.J = 'PROG' 0.0 ; 'FIN' BOUCL3 ; L_TEM = 'PROG' 0.0 ; I_TEM = 1 ; 'REPE' BOUCL4 ( NB_PAS - 1 ) ; I_TEM = I_TEM + 1 ; L_TEM = L_TEM 'ET' ( 'PROG' ( RESU.I_TEM.'TEMP' ) ) ; CHD_I = RESU.I_TEM.'DEPL' ; CHV_I = RESU.I_TEM.'VITE' ; CHE_I ='CHAN' 'CHPO' MOD1 ( 'EPSI' MOD1 CHD_I MAT1 ) ; CHR_I ='REAC' BLO1 CHD_I ; 'SI' (('EGA' DIR 'UX') OU ('EGA' DIR 'UY')) ; J = 0 ; 'REPE' BOUCL4_1 NB_NOEU ; J = J + 1 ; U_FRON.J = U_FRON.J 'ET' ('PROG' ('EXTR' CHD_I POI_FRO.J UMOT)) ; V_FRON.J = V_FRON.J 'ET' ('PROG' ('EXTR' CHV_I POI_FRO.J UMOT)) ; E_FRON.J = E_FRON.J 'ET' ('PROG' ('EXTR' CHE_I POI_FRO.J EMOT)) ; R_FRON.J = R_FRON.J 'ET' ('PROG' ('EXTR' CHR_I POI_FRO.J FMOT)) ; 'FIN' BOUCL4_1 ; 'SINON' ; 'SI' ('EGA' DIR 'UZ') ; J = 0 ; 'REPE' BOUCL4_2 NB_NOEU ; J = J + 1 ; U_FRON.J = U_FRON.J 'ET' ('PROG' ('EXTR' CHD_I POI_FRO.J UMOT)) ; V_FRON.J = V_FRON.J 'ET' ('PROG' ('EXTR' CHV_I POI_FRO.J UMOT)) ; E_FRON.J = E_FRON.J 'ET' ('PROG' ('EXTR' CHE_I POI_FRO.J EMOT)) ; R1_FRON.J = R1_FRON.J 'ET' ('PROG' ('EXTR' CHR_I POI_FRO.J FMOT1)) ; R2_FRON.J = R2_FRON.J 'ET' ('PROG' ('EXTR' CHR_I POI_FRO.J FMOT2)) ; 'FIN' BOUCL4_2 ; 'FINSI' ; 'FINSI' ; 'FIN' BOUCL4 ; * TFR de l'acceleration en surface GAMMAO 'TITRE' 'TRANSFORMATION DE FOURIER DE GAMMAO' ; NP = 'DIME' ( 'EXTR' GAMMAO 'ABSC' ) ; XX = ( LOG NP ) / ( LOG 2 ) ; NN = 'ENTI' XX ; 'SI' ( XX > ( 1.0 * NN ) ) ; NN = NN + 1 ; 'FINSI' ; TF_GAMO = 'TFR' NN GAMMAO 'MOPH' ; FR_GAMO = 'EXTR' TF_GAMO 'ABSC' ; MO_GAMO = 'EXTR' TF_GAMO 'ORDO' 1 ; PH_GAMO = 'EXTR' TF_GAMO 'ORDO' 2 ; NFREQ = 'DIME' FR_GAMO ; DFREQ = 'EXTR' FR_GAMO 2 ; FREQN = 'EXTR' FR_GAMO NFREQ ; MODUN = 'EXTR' MO_GAMO NFREQ ; 'SI' ( IDIV NEG 0 ) ; NN = NN + IDIV ; 'REMP' MO_GAMO NFREQ ( MODUN / 2.0 ) ; NFREQ1 = (2**(NN - 1)) + 1 ; FR_GAMO = 'PROG' 0.0 'PAS' DFREQ 'NPAS' ( NFREQ1 - 1 ) ; LIST ( DIME FR_GAMO ) ; MO_GAMO = MO_GAMO 'ET' ('PROG' (NFREQ1 - NFREQ ) * 0.0) ; LIST ( DIME MO_GAMO ) ; PH_GAMO = PH_GAMO 'ET' ('PROG' (NFREQ1 - NFREQ ) * 0.0) ; LIST ( DIME PH_GAMO ) ; TF_GAMO = 'EVOL' 'COMP' 'MOPH' 'FREQ(HZ)' FR_GAMO 'MODULE' MO_GAMO 'PHASE' PH_GAMO ; 'FINSI' ; *-------------------- Debut de modif 1 du 20/02/2013 ------------------- * TFR du deplacement de controle 'TITRE' 'TFR DU DEPLACEMENT DE CONTROLE' ; OMEGA2 = ( FR_GAMO * 2. * PI ) ** 2 ; 'REMP' OMEGA2 1 1.0 ; MOD = MO_GAMO / ( OMEGA2 * ( -1 ) ) ; 'REMP' MOD 1 0.0 ; TF_DEPLO = 'EVOL' 'COMP' 'MOPH' 'FREQ(HZ)' FR_GAMO 'MODULE' MOD 'PHASE' PH_GAMO ; * TFR du deplacement du outcrop de bedrock sous l'impulsion * Calcul de vitesse VOUT à partir de l'impulsion à la base F et * l'amortissement à la base C (VOUT = F/C, sur une unite de surface) G = ( COUCHE.NB_COU.'MODULE_G' ) ; RO = ( COUCHE.NB_COU.'MASSE_VOLUMIQUE' ) ; NU = ( COUCHE.NB_COU.'POISSON') ; CS = ( G / RO ) ** 0.5 ; CP = ((2.0 * (1.0 - NU))/(1.0 - (2.0 * NU))) ** 0.5 ; CP = CP * CS ; 'SI' (('EGA' DIR 'UX') OU ('EGA' DIR 'UY')) ; VOUT = EV_FOR / (RO * CS) ; 'SINON' ; 'SI'( 'EGA' DIR 'UZ') ; VOUT = EV_FOR / (RO * CP) ; 'FINSI' ; 'FINSI' ; 'TITR' 'VITESSE OUTCROP SOUS L IMPULSION' ; VOUT = 'EVOL' 'MANU' L_TEM ('IPOL' L_TEM VOUT) ; TF_VOUT = 'TFR' NN VOUT 'REIM' ; 'TITR' 'TFR DEPLACEMENT OUTCROP SOUS L IMPULSION' ; LF_VOUT = EXTR TF_VOUT ABSC ; IOMEGA = 2.*PI*LF_VOUT ; 'REMP' IOMEGA 1 1.0 ; EVIOMEGA = EVOL COMP 'REIM' LF_VOUT (LF_VOUT*0) IOMEGA ; TF_UOUT = TF_VOUT / EVIOMEGA ; RIMP TF_UOUT ; * Fonction de transfert H_DEPL = 'TABLE' ; H_VITE = 'TABLE' ; H_EPSI = 'TABLE' ; H_REAC = 'TABLE' ; H1_REAC = 'TABLE' ; H2_REAC = 'TABLE' ; * Point de controle en surface libre (option par defaut) 'TITRE' 'DEPLACEMENT EN SURFACE' ; UO = 'EVOL' 'MANU' 'TEMPS' L_TEM 'DEPL' U_FRON.NUM_SUR ; TF_UO = 'TFR' NN UO 'MOPH' ; * Remplacer le debut zero de TF_UOUT par celui de TF_UO UOM = EXTR (EXTR TF_UO ORDO 1) 1 ; UOP = EXTR (EXTR TF_UO ORDO 2) 1 ; LF_OUT = EXTR TF_UOUT ABSC ; LM_OUT = EXTR TF_UOUT ORDO 1 ; LP_OUT = EXTR TF_UOUT ORDO 2 ; REMP LM_OUT 1 UOM ; REMP LP_OUT 1 UOP ; TF_UOUT = 'EVOL' 'COMP' 'MOPH' 'FREQ(HZ)' LF_OUT 'MODULE' LM_OUT 'PHASE' LP_OUT ; 'SI' ('EXIS' P_GAMMA ) ; 'SI' ('EXIS' P_GAMMA 'ENTREE') ; * Option point de contole "INSIDE" 'SI' (EGA P_GAMMA.ENTREE.NATURE 'INSIDE'); NUM_CTR = 'NOEU' P_GAMMA.ENTREE.CONTROLE; UO = 'EVOL' 'MANU' 'TEMPS' L_TEM 'DEPL' U_FRON.NUM_CTR ; TF_UO = 'TFR' NN UO 'MOPH' ; 'FINSI' ; * Option point de controle "OUTCROP" de bedrock 'SI' (EGA P_GAMMA.ENTREE.NATURE 'OUTCROP') ; TF_UO = TF_UOUT ; 'FINSI' ; 'FINSI' ; 'FINSI' ; *--------------------- Fin de modif 1 du 20/02/2013 -------------------- * Elimination des zeros dans TF_UO LABS = 'PROG' 0.0 FC (FC + DFREQ) 9000.0 ; LFIL1 = 'PROG' 1.0 1.0 0.0 0.0 ; LFIL2 = 'PROG' 0.0 0.0 0.0 0.0 ; LFIL3 = 'PROG' 0.0 0.0 1.0 1.0 ; LFIL1 = 'IPOL' FR_GAMO LABS LFIL1 ; LFIL2 = 'IPOL' FR_GAMO LABS LFIL2 ; LFIL3 = 'IPOL' FR_GAMO LABS LFIL3 ; EVFIL = 'EVOL' 'COMP' 'MOPH' FR_GAMO LFIL1 LFIL2 ; EVADD = 'EVOL' 'COMP' 'MOPH' FR_GAMO LFIL3 LFIL2 ; TF_UO = TF_UO * EVFIL ; TF_UO = TF_UO + EVADD ; TF_GAMO = TF_GAMO * EVFIL ; TF_DEPLO = TF_DEPLO * EVFIL ; 'TITR' 'ACCELERATION FILTREE AU POINT DE CONTROLE' ; GAMMAO = 'TFRI' TF_GAMO ; 'TITR' 'DEPLACEMENT FILTREE AU POINT DE CONTROLE' ; DEPLO = 'TFRI' TF_DEPLO ; 'TITRE' 'DEPLACEMENT A LA BASE' ; UB = 'EVOL' 'MANU' 'TEMPS' L_TEM 'DEPL' U_FRON.NUM_BAS ; 'TITRE' 'VITESSE A LA BASE' ; VO = 'EVOL' 'MANU' 'TEMPS' L_TEM 'VITE' V_FRON.NUM_BAS ; 'TITRE' 'DEFORMATION A LA BASE' ; EO = 'EVOL' 'MANU' 'TEMPS' L_TEM 'EPSI' E_FRON.NUM_BAS ; 'TITRE' 'REACTION A LA BASE' ; 'SI' (('EGA' DIR 'UX') OU ('EGA' DIR 'UY')) ; RO = 'EVOL' 'MANU' 'TEMPS' L_TEM 'REAC' R_FRON.NUM_BAS ; 'SINON' ; 'SI' ('EGA' DIR 'UZ') ; RO1 = 'EVOL' 'MANU' 'TEMPS' L_TEM 'REAC' R1_FRON.NUM_BAS ; RO2 = 'EVOL' 'MANU' 'TEMPS' L_TEM 'REAC' R2_FRON.NUM_BAS ; 'FINSI' ; 'FINSI' ; J = 0 ; 'REPE' BOUCL5 NB_NOEU ; J = J + 1 ; 'TITRE' 'FONCTION DE TRANSFERT HU DU NOEUD ' J ; U_J = 'EVOL' 'MANU' 'TEMPS' L_TEM 'DEPL' U_FRON.J ; TF_UJ = 'TFR' NN U_J 'MOPH' ; H_DEPL.J = TF_UJ / TF_UO ; 'TITRE' 'FONCTION DE TRANSFERT HV DU NOEUD' J ; V_J = 'EVOL' 'MANU' 'TEMPS' L_TEM 'VITE' V_FRON.J ; TF_VJ = 'TFR' NN V_J 'MOPH' ; H_VITE.J = TF_VJ / TF_UO ; 'TITRE' 'FONCTION DE TRANSFERT HE DU NOEUD' J ; E_J = 'EVOL' 'MANU' 'TEMPS' L_TEM 'EPSI' E_FRON.J ; TF_EJ = 'TFR' NN E_J 'MOPH' ; H_EPSI.J = TF_EJ / TF_UO ; 'TITRE' 'FONCTION DE TRANSFERT HR DU NOEUD' J ; 'SI' (('EGA' DIR 'UX') OU ('EGA' DIR 'UY')) ; R_J = 'EVOL' 'MANU' 'TEMPS' L_TEM 'REAC' R_FRON.J ; TF_RJ = 'TFR' NN R_J 'MOPH' ; H_REAC.J = TF_RJ / TF_UO ; 'SINON' ; 'SI' ('EGA' DIR 'UZ') ; R1_J = 'EVOL' 'MANU' 'TEMPS' L_TEM 'REAC' R1_FRON.J ; R2_J = 'EVOL' 'MANU' 'TEMPS' L_TEM 'REAC' R2_FRON.J ; TF_R1J = 'TFR' NN R1_J 'MOPH' ; TF_R2J = 'TFR' NN R2_J 'MOPH' ; H1_REAC.J = TF_R1J / TF_UO ; H2_REAC.J = TF_R2J / TF_UO ; 'FINSI' ; 'FINSI' ; 'FIN' BOUCL5 ; 'MENA' ; 'TASS' FRON ; *-------------------- Debut de modif 2 du 20/02/2013 ------------------- * Acceleration apres deconvolution 'SAUT' 2 'LIGNE' ; 'MESS' 'ACCELERATION DU CHAMP LIBRE' ; 'SI' ( 'EXIS' P_GAMMA ) ; NB_GAM = 'DIME' P_GAMMA ; GAMMA = 'TABLE' ; 'SI' ( 'EXIS' P_GAMMA ENTREE ) ; NB_GAM = NB_GAM - 1 ; 'FINSI' ; K = 0 ; 'REPE' BOUCL6 NB_GAM ; K = K + 1 ; NUM_P = 'NOEU' P_GAMMA.K ; HU = H_DEPL.NUM_P ; 'TITRE' 'ACCELERATION DU POINT' K ; TF_GAM = HU * TF_GAMO ; GAMMA.K = 'TFRI' TF_GAM ; GAMMA.K = CHTITR ( GAMMA.K ) 'TEMPS' 'ACCE(M/S*S)' ; 'FIN' BOUCL6 ; HU = TF_UOUT / TF_UO ; 'TITRE' 'ACCELERATION OUTCROP DE BEDROCK' ; TF_GAM = HU * TF_GAMO ; GAMMA.OUTCROP = 'TFRI' TF_GAM ; GAMMA.OUTCROP = CHTITR GAMMA.OUTCROP 'TEMPS' 'ACCE(M/S*S)' ; 'FINSI' ; *--------------------- Fin de modif 2 du 20/02/2013 -------------------- 'SAUT' 'LIGNE' ; 'MESS' 'VITESSE, DEFORMATION ET REACTION' ; J = 0 ; 'REPE' BOUCL7 NB_NOEU ; J = J + 1 ; * Vitesse compatible avec GAMMAO 'TITRE' 'VITESSE DU NOEUD' J ; TF_VITE = ( H_VITE.J ) * TF_DEPLO ; V_FRON.J = 'TFRI' TF_VITE ; * On met la vitesse initiale (moyenne sur NV point) a zero NV = 1 ; LT = 'EXTR' ( V_FRON.J ) 'ABSC' ; LY = 'EXTR' ( V_FRON.J ) 'ORDO' ; Y1 = 0 ; IV = 1 ; 'REPE' BV NV ; Y1 = Y1 + ('EXTR' LY IV) ; IV = IV + 1 ; 'FIN' BV ; Y1 = Y1 / NV ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; V_FRON.J = 'EVOL' 'MANU' 'TEMPS' LT 'VITE(M/S)' LY ; * Deformation 'TITRE' 'DEFORMATION AU NOEUD' J ; TF_EPSI = H_EPSI.J * TF_DEPLO ; E_FRON.J = 'TFRI' TF_EPSI ; * Reactions des appuis : DIR = UX ou UY, Reaction FZ * DIR = UZ, Reaction Fx et FY 'SI' (('EGA' DIR 'UX') OU ('EGA' DIR 'UY')) ; 'TITRE' 'REACTION VERTICALE AU NOEUD' J ; TF_REAC = ( H_REAC.J ) * TF_DEPLO ; R_FRON.J = 'TFRI' TF_REAC ; * On met la reaction intiale a zero LT = 'EXTR' ( R_FRON.J ) 'ABSC' ; LY = 'EXTR' ( R_FRON.J ) 'ORDO' ; Y1 = 'EXTR' LY 1 ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; R_FRON.J = 'EVOL' 'MANU' 'TEMPS' LT 'REAC' LY ; 'SINON' ; 'SI' ('EGA' DIR 'UZ') ; 'TITRE' 'REACTIONS HORIZONTALES AU NOEUD' J ; TF1_REAC = ( H1_REAC.J ) * TF_DEPLO ; TF2_REAC = ( H2_REAC.J ) * TF_DEPLO ; R1_FRON.J = 'TFRI' TF1_REAC ; R2_FRON.J = 'TFRI' TF2_REAC ; * On met les reactions intiales a zero LT = 'EXTR' ( R1_FRON.J ) 'ABSC' ; LY = 'EXTR' ( R1_FRON.J ) 'ORDO' ; Y1 = 'EXTR' LY 1 ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; R1_FRON.J = 'EVOL' 'MANU' 'TEMPS' LT 'REAC' LY ; LT = 'EXTR' ( R2_FRON.J ) 'ABSC' ; LY = 'EXTR' ( R2_FRON.J ) 'ORDO' ; Y1 = 'EXTR' LY 1 ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; R2_FRON.J = 'EVOL' 'MANU' 'TEMPS' LT 'REAC' LY ; 'FINSI' ; 'FINSI' ; 'FIN' BOUCL7 ; ************************************************************************ * Force d'amortissement a la base 'SAUT' 'LIGNE' ; 'MESS' 'FORCE D"AMORTISSEMENT A LA BASE : LYSMER' ; 'TITR' 'CONTRAINTE D"AMORTISSEMENT A LA BASE' ; G = ( COUCHE.NB_COU.'MODULE_G' ) ; RO = ( COUCHE.NB_COU.'MASSE_VOLUMIQUE' ) ; NU = ( COUCHE.NB_COU.'POISSON') ; CS = ( G / RO ) ** 0.5 ; CP = ((2.0 * (1.0 - NU))/(1.0 - (2.0 * NU))) ** 0.5 ; CP = CP * CS ; 'SI' (('EGA' DIR 'UX') OU ('EGA' DIR 'UY')) ; SIG_AMO = RO * CS * V_FRON.NUM_BAS ; SIG_AMO = CHTITR SIG_AMO 'TEMPS(S)' 'SIGMA(PA)' ; 'SINON' ; 'SI'('EGA' DIR 'UZ') ; SIG_AMO = RO * CP * V_FRON.NUM_BAS ; SIG_AMO = CHTITR SIG_AMO 'TEMPS(S)' 'SIGMA(PA)' ; 'FINSI' ; 'FINSI' ; * Contrainte a la base 'MESS' 'CONTRAINTE A LA BASE' ; 'MESS' ; 'TITR' 'IMPULSION A LA BASE' ; EV_FOR = 'EVOL' 'MANU' L_TEM ( 'IPOL' L_TEM L_TIM L_FOR ) ; 'TITR' 'TFR DE L"IMPULSION' ; TF_FOR = 'TFR' NN EV_FOR 'MOPH' ; 'TITR' 'FONCTION DE TRANSFERT DE L"IMPULSION' ; HS = TF_FOR / TF_UO ; TF_SIG = HS * TF_DEPLO ; 'TITR' 'CONTRAINTE A LA BASE' ; SIG_H = ( 'TFRI' TF_SIG ) - SIG_AMO ; * On met la contrainte initiale a zero LT = 'EXTR' SIG_H 'ABSC' ; LY = 'EXTR' SIG_H 'ORDO' ; Y1 = 'EXTR' LY 1 ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; SIG_H = 'EVOL' 'MANU' 'TEMPS(S)' LT 'SIGMA(PA)' LY ; 'MENA' ; 'TASS' FRON ; ************************************************************************ *** FRONTIERE ABSORBANTE DU SOL PROCHE *** ************************************************************************ 'SAUT' 3 'LIGNE' ; 'MESS' 'FRONTIERE ABSORBANTE DU SOL PROCHE' ; 'SAUT' 'LIGNE' ; 'MESS' 'FRONTIERE VERTICALE DU SOL ' ; I = 0 ; 'REPE' BOUCL8 NB_COU ; I = I + 1 ; 'SI' ( I 'EGA' 1 ) ; AM_V = 'AMOR' COLMOD.I (COUCHE.I.'FRONTIERE') COLMAT.I ; 'SINON' ; AM_V = AM_V 'ET'('AMOR' COLMOD.I (COUCHE.I.'FRONTIERE') COLMAT.I) ; 'FINSI' ; 'FIN' BOUCL8 ; 'MESS' 'FRONTIERE HORIZONTALE DU SOL' ; AM_H = 'AMOR' MOD_SOL FOND_SOL MAT_SOL ; AMOF = AM_V 'ET' AM_H ; ************************************************************************ *** CHARGEMENT SISMIQUE SUR LA FRONTIERE HORIZONTALE *** ************************************************************************ 'SAUT' 3 'LIGNE' ; 'MESS' 'CHARGEMENT SISMIQUE SUR LA FRONTIERE HORIZONTALE' ; * FO : forces nodales equivalentes de la contrainte 'SI' ( 'EGA' DIR 'UX' ) ; FOR_P = 'PRES' 'MASS' MOD_SOL 1.0 FOND_SOL ; FOR_H = 'EXCO' 'FZ' FOR_P 'FX' ; 'SINON' ; 'SI' ( 'EGA' DIR 'UY' ) ; FOR_P = 'PRES' 'MASS' MOD_SOL 1.0 FOND_SOL ; FOR_H = 'EXCO' 'FZ' FOR_P 'FY' ; 'SINON' ; 'SI' ( 'EGA' DIR 'UZ' ) ; FOR_P = 'PRES' 'MASS' MOD_SOL 1.0 FOND_SOL ; FOR_H = FOR_P ; 'FINSI' ; 'FINSI' ; 'FINSI' ; CHA_HFO = 'CHAR' FOR_H SIG_H ; * Amortissement * vitesse (A*VO) 'SI' (NON BIELAK) ; 'SI' ( 'EGA' DIR 'UX' ) ; CH_V = 'MANU' 'CHPO' FOND_SOL 1 'UX' 1.0 ; 'SINON' ; 'SI' ( 'EGA' DIR 'UY' ) ; CH_V = 'MANU' 'CHPO' FOND_SOL 1 'UY' 1.0 ; 'SINON' ; 'SI' ( 'EGA' DIR 'UZ' ) ; CH_V = 'MANU' 'CHPO' FOND_SOL 1 'UZ' 1.0 ; 'FINSI' ; 'FINSI' ; 'FINSI' ; F_BAS = AM_H * CH_V ; CHA_HAX = 'CHAR' F_BAS ( V_FRON.NUM_BAS ) ; 'MENA' ; 'TASS' FRON ; 'FINSI' ; ************************************************************************ *** CHARGEMENT SISMIQUE SUR LA FRONTIERE VERTICALE *** ************************************************************************ * FO = - Reaction 'MESS' 'CHARGEMENT SISMIQUE SUR LA FRONTIERE VERTICALE' ; 'SI' (('EGA' DIR 'UX') OU ('EGA' DIR 'UY')) ; J = 0 ; 'REPE' BOUCL9_1 NB_NOEU ; J = J + 1 ; 'SI' ( J 'EGA' 1 ) ; CHA_VFO = 'CHAR' ( 'FORC' FMOT -1.0 POI_FRO.J ) ( R_FRON.J ) ; 'SINON' ; CHA_VFO = ('CHAR' ( 'FORC' FMOT -1.0 POI_FRO.J ) ( R_FRON.J )) 'ET' CHA_VFO ; 'FINSI' ; 'FIN' BOUCL9_1 ; 'SINON' ; 'SI' ('EGA' DIR 'UZ') ; J = 0 ; 'REPE' BOUCL9_2 NB_NOEU ; J = J + 1 ; 'SI' ( J 'EGA' 1 ) ; CHA_VFO = ('CHAR' ( 'FORC' FMOT1 -1.0 POI_FRO.J ) ( R1_FRON.J )) ET ('CHAR' ( 'FORC' FMOT2 -1.0 POI_FRO.J ) ( R2_FRON.J )) ; 'SINON' ; CHA_VFO = ('CHAR' ( 'FORC' FMOT1 -1.0 POI_FRO.J ) ( R1_FRON.J )) ET ('CHAR' ( 'FORC' FMOT2 -1.0 POI_FRO.J ) ( R2_FRON.J )) ET CHA_VFO ; 'FINSI' ; 'FIN' BOUCL9_2 ; 'FINSI' ; 'FINSI' ; * Amortissement * viteese : A*VO 'SI' (NON BIELAK) ; V_ABSC = 'EXTR' (V_FRON. 1) 'ABSC' ; N_PAS = 'DIME' V_ABSC ; * DIR = UZ 'SI' ( 'EGA' DIR 'UZ' ) ; VISC = 'TABLE' ; K = 0 ; 'REPE' BOUCL10 NB_NOEU ; K = K + 1 ; EV01 = V_FRON.K ; V_FRON.K = 'EXTR' EV01 'ORDO' ; VISC.K = 'PROG' N_PAS * 0.0 ; 'FIN' BOUCL10 ; J = 0 ; 'REPE' BOUCL11 NB_NOEU ; J = J + 1 ; VEC_U = 'MANU' 'CHPO' POI_FRO.J 1 'UZ' 1.0 ; VEC_F = AM_V * VEC_U ; K = 0 ; 'REPE' BOUC11B NB_NOEU ; K = K + 1 ; AM_JK = 'EXTR' VEC_F POI_FRO.K 'FZ' ; VISC.K = VISC.K + ( AM_JK * V_FRON.J ) ; 'FIN' BOUC11B ; 'FIN' BOUCL11 ; * Recombinaison FOR_H = 'FORC' 'FZ' 1.0 POI_FRO.1 ; CHA_VAX = 'CHAR' FOR_H ( 'EVOL' 'MANU' V_ABSC ( VISC. 1 ) ) ; K = 1 ; 'REPE' BOUCL12 ( NB_NOEU - 1 ) ; K = K + 1 ; FOR_H = 'FORC' 'FZ' 1.0 POI_FRO.K ; CHA_VAX =( 'CHAR' FOR_H ( 'EVOL' 'MANU' V_ABSC ( VISC.K ) ) ) 'ET' CHA_VAX ; 'FIN' BOUCL12 ; 'FINSI' ; * Dir = UX ou UY 'SI' (( 'EGA' DIR 'UX' ) OU ( 'EGA' DIR 'UY' )) ; UDIR = DIR ; VISC_X = 'TABLE' ; VISC_Y = 'TABLE' ; K = 0 ; 'REPE' BOUCL16 NB_NOEU ; K = K + 1 ; EV01 = V_FRON.K ; V_FRON.K = 'EXTR' EV01 'ORDO' ; VISC_X.K = 'PROG' N_PAS * 0.0 ; VISC_Y.K = 'PROG' N_PAS * 0.0 ; 'FIN' BOUCL16 ; J = 0 ; 'REPE' BOUCL17 NB_NOEU ; J = J + 1 ; VEC_U = 'MANU' 'CHPO' POI_FRO.J 1 UDIR 1.0 ; VEC_F = AM_V * VEC_U ; K = 0 ; 'REPE' BOUC17B NB_NOEU ; K = K + 1 ; AMX_JK = 'EXTR' VEC_F POI_FRO.K 'FX' ; AMY_JK = 'EXTR' VEC_F POI_FRO.K 'FY' ; VISC_X.K = VISC_X.K + ( AMX_JK * V_FRON.J ) ; VISC_Y.K = VISC_Y.K + ( AMY_JK * V_FRON.J ) ; 'FIN' BOUC17B ; 'FIN' BOUCL17 ; * Recombinaison FOR_X = 'FORC' 'FX' 1.0 POI_FRO.1 ; FOR_Y = 'FORC' 'FY' 1.0 POI_FRO.1 ; CHA_VAX = 'CHAR' FOR_X ( 'EVOL' 'MANU' V_ABSC ( VISC_X. 1 ) ) ; CHA_VAY = 'CHAR' FOR_Y ( 'EVOL' 'MANU' V_ABSC ( VISC_Y. 1 ) ) ; K = 1 ; 'REPE' BOUCL18 ( NB_NOEU - 1 ) ; K = K + 1 ; FOR_X = 'FORC' 'FX' 1.0 POI_FRO.K ; CHA_VAX = CHA_VAX 'ET' ( 'CHAR' FOR_X ( 'EVOL' 'MANU' V_ABSC ( VISC_X.K ) ) ) ; FOR_Y = 'FORC' 'FY' 1.0 POI_FRO.K ; CHA_VAY = CHA_VAY 'ET' ( 'CHAR' FOR_Y ( 'EVOL' 'MANU' V_ABSC ( VISC_Y.K ) ) ) ; 'FIN' BOUCL18 ; CHA_VAX = CHA_VAX 'ET' CHA_VAY ; 'FINSI' ; 'FINSI' ; 'SI' BIELAK ; CHA1 = CHA_HFO 'ET' CHA_VFO ; 'SINON' ; CHA1 = CHA_HFO 'ET' CHA_HAX 'ET' CHA_VFO 'ET' CHA_VAX ; 'FINSI' ; * Changement de format du chargement CHA1 = 'CHAN' 'TABL' CHA1 'MECA' ; ************************************************************************ *** Deformation de cisaillement maximale *** ************************************************************************ 'SAUT' 2 'LIGNE' ; 'MESS' 'DEFORMATION MAXIMALE' ; PROF = 'PROG' NB_NOEU * 0.0 ; GMAX = 'PROG' NB_NOEU * 0.0 ; J = 0 ; 'REPE' BOUCL19 NB_NOEU ; J = J + 1 ; ZJ = 'COOR' 3 ( POI_FRO.J ) ; CISA = 'EXTR' ( E_FRON.J ) 'ORDO' ; GX = 'MAXI' CISA 'ABS' ; 'REMP' PROF J ZJ ; 'REMP' GMAX J GX ; 'FIN' BOUCL19 ; GMAXMAX = 'MAXI' GMAX ; * Evolution de deformation en profondeur 'SI' (('EGA' DIR 'UX') OU ('EGA' DIR 'UY')) ; 'TITR' 'DEFORMATION DE CISAILLEMENT MAXIMALE' ; DEFZ = 'EVOL' 'MANU' 'PROFONDEUR' PROF 'GAM_MAX' GMAX ; DEFZ = 'ORDO' 'DECROISSANT' DEFZ ; ZFROF = 'EXTR' DEFZ 'ABSC' ; ZGMAX = 'EXTR' DEFZ 'ORDO' ; DEFZ = 'EVOL' 'MANU' 'GAM_MAX' ZGMAX 'PROFONDEUR' ZFROF ; 'DESS' DEFZ 'NCLK' ; 'FINSI' ; 'SI' ( 'EGA' DIR 'UZ' ) ; 'TITR' 'DEFORMATION VERTICALE MAXIMALE' ; DEFZ = 'EVOL' 'MANU' 'PROFONDEUR' PROF 'EPS_MAX' GMAX ; DEFZ = 'ORDO' 'DECROISSANT' DEFZ ; ZFROF = 'EXTR' DEFZ 'ABSC' ; ZGMAX = 'EXTR' DEFZ 'ORDO' ; DEFZ = 'EVOL' 'MANU' 'EPS_MAX' ZGMAX 'PROFONDEUR' ZFROF ; 'DESS' DEFZ 'NCLK' ; 'FINSI' ; *-------------DEBUT DE MODIFICATION 01/02/2014 (F. WANG)---------------- * *----------------------------------------------------------------------- * IMPLANTATION DE LA METHODE DE BIELAK : * GENERATION DE LA ZONE INTERMEDIAIRE ET LE CHARGEMENT CORRESPONDANT *----------------------------------------------------------------------- 'SI' BIELAK ; * Calcul de dépalcement et d'acceleration A_FRON = 'TABLE' ; J = 0 ; 'REPE' BBLK1 NB_NOEU ; J = J + 1 ; 'TITRE' 'DEPLACEMENT AU NOEUD' J ; TF_DEPL = ( H_DEPL.J ) * TF_DEPLO ; U_FRON.J = 'TFRI' TF_DEPL ; LT = 'EXTR' ( U_FRON.J ) 'ABSC' ; LY = 'EXTR' ( U_FRON.J ) 'ORDO' ; Y1 = 'EXTR' LY 1 ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; U_FRON.J = 'EVOL' 'MANU' 'TEMPS' LT 'DEPL' LY ; 'TITR' 'ACCELARATION AU NOEUD' J ; * A_FRON.J = DERIV1 V_FRON.J ; TF_ACCE = ( H_DEPL.J ) * TF_GAMO ; A_FRON.J = 'TFRI' TF_ACCE ; LT = 'EXTR' ( A_FRON.J ) 'ABSC' ; LY = 'EXTR' ( A_FRON.J ) 'ORDO' ; Y1 = 'EXTR' LY 1 ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; A_FRON.J = 'EVOL' 'MANU' 'TEMPS' LT 'ACCE' LY ; 'FIN' BBLK1 ; * RECUPERATION DE LA COLONNE DE DECONVOLUTION BLKV_MAI = COL1 ; BLKV_MOD = MOD1 ; BLKV_MAT = MAT1 ; BLKV_MAS = MAS1 ; BLKV_RIG = RIG1 ; BLKV_AMO = AMO1 ; * GENERATION DE LA ZONE HORIZONTALE VEC_V = 0 0 (-1*COUCHE.BLK.EP_V) ; BLKH_MAI = VOLU TRAN 1 (FOND_SOL ET BAS_COL) VEC_V ; BLKH_MOD = 'MODE' BLKH_MAI 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE' TY1 TY2 ; BLKH_MAT = 'MATE' BLKH_MOD 'YOUNG' (COUCHE.NB_COU.'YOUNG') 'NU' (COUCHE.NB_COU.'POISSON') 'RHO' (COUCHE.NB_COU.'MASSE_VOLUMIQUE') ; BLKH_MAS = 'MASS' BLKH_MOD BLKH_MAT ; BLKH_RIG = 'RIGI' BLKH_MOD BLKH_MAT ; BLKH_AMO = KSI * ((ALPHA * BLKH_MAS) 'ET' (BETA * BLKH_RIG)) ; * ZONE INTERMEDIAIRE COMPLETE BLK_MAI = BLKV_MAI 'ET' BLKH_MAI ; BLK_MOD = BLKV_MOD 'ET' BLKH_MOD ; BLK_MAT = BLKV_MAT 'ET' BLKH_MAT ; BLK_MAS = BLKV_MAS 'ET' BLKH_MAS ; BLK_RIG = BLKV_RIG 'ET' BLKH_RIG ; BLK_AMO = BLKV_AMO 'ET' BLKH_AMO ; * TRACE DE LA ZONE 'TITR' 'ZONE INTERNE ET INTERMEDIAIRE' ; 'ELIM' BLK_MAI 0.001 ; BLK_MAI = BLK_MAI 'COUL' 'ROUG' ; 'TRAC' (SOL 'ET' BLK_MAI) 'FACE' 'NCLK' ; *----------------------------------------------------------------------- * CALCUL DU CHARGEMENT SUR LA ZONE INTERMEDIAIRE *----------------------------------------------------------------------- 'SI' ('EGA' DIR 'UX') ; FDIR = 'MOT' 'FX' ; 'FINSI' ; 'SI' ('EGA' DIR 'UY') ; FDIR = 'MOT' 'FY' ; 'FINSI' ; 'SI' ('EGA' DIR 'UZ') ; FDIR = 'MOT' 'FZ' ; 'FINSI' ; * FRONTIERE HORIZONTALE NBFOND = 'NBNO' FOND_SOL ; F1 = 1.* NBFOND ; FOR_H = 'FORC' FDIR F1 FOND_SOL ; CHU_H = 'CHAR' FOR_H U_FRON.NUM_BAS ; CHV_H = 'CHAR' FOR_H V_FRON.NUM_BAS ; CHA_H = 'CHAR' FOR_H A_FRON.NUM_BAS ; * FRONTIERE VERTICALE (SAUF LES NOEUDS A LA BASE * DEJA COMPTES SUR LA FRONTIERE HORIZONTALE) FOR_V = 'FORC' FDIR 0.0 POI_FRO.1 ; CHU_V = 'CHAR' FOR_V U_FRON.1 ; CHV_V = 'CHAR' FOR_V V_FRON.1 ; CHA_V = 'CHAR' FOR_V A_FRON.1 ; K = 0 ; 'REPE' BBLK2 NB_NOEU ; K = K + 1 ; ZK = COOR 3 POI_FRO.K ; 'SI' ((ABS (ZK - ZBAS)) > 0.001) ; FOR_V = 'FORC' FDIR 1.0 POI_FRO.K ; CHU_V = CHU_V 'ET' ('CHAR' FOR_V U_FRON.K ) ; CHV_V = CHV_V 'ET' ('CHAR' FOR_V V_FRON.K ) ; CHA_V = CHA_V 'ET' ('CHAR' FOR_V A_FRON.K ) ; 'FINSI' ; 'FIN' BBLK2 ; * FRONTIERE HORIZONTALE + VERTICALE CHU = CHU_V 'ET' CHU_H ; CHV = CHV_V 'ET' CHV_H ; CHA = CHA_V 'ET' CHA_H ; CHU = 'CHAN' 'TABL' CHU 'MECA' ; CHV = 'CHAN' 'TABL' CHV 'MECA' ; CHA = 'CHAN' 'TABL' CHA 'MECA' ; TAB_T TAB_U = 'EXTR' CHU 'MECA' 'TABL' ; TAB_T TAB_V = 'EXTR' CHV 'MECA' 'TABL' ; TAB_T TAB_A = 'EXTR' CHA 'MECA' 'TABL' ; LM1 = 'MOTS' FDIR ; LM2 = 'MOTS' DIR ; TAB_F = 'TABLE' ; TAB_FD = 'TABLE' ; TAB_FV = 'TABLE' ; TAB_FA = 'TABLE' ; N_T = 'DIME' TAB_T ; I = 0 ; 'REPE' BBLK3 N_T ; CHU_I = 'EXCO' LM1 (TAB_U.I) LM2 ; CHV_I = 'EXCO' LM1 (TAB_V.I) LM2 ; CHA_I = 'EXCO' LM1 (TAB_A.I) LM2 ; CHU_I = CHU_I * BLK_RIG ; CHV_I = CHV_I * BLK_AMO ; CHA_I = CHA_I * BLK_MAS ; TAB_F.I = CHU_I + CHV_I + CHA_I ; TAB_FD.I = CHU_I ; TAB_FV.I = CHV_I ; TAB_FA.I = CHA_I ; I = I + 1 ; 'FIN' BBLK3 ; *----------------------------------------------------------------------- *----------------------------------------------------------------------- CHA2 = 'CHAR' 'MECA' TAB_T TAB_F ; 'FINSI' ; * Sortie des resultats TABRESU = 'TABLE' ; 'SI' BIELAK ; TABRESU.'CHAR' = CHA1 ET CHA2 ; * -- pour tester la procédure ----- TABRESU.'CHA1' = CHA1 ; TABRESU.'CHA2' = CHA2 ; *---------------------------------- TABRESU.'BLK_MAI' = BLK_MAI ; TABRESU.'BLK_MOD' = BLK_MOD ; TABRESU.'BLK_MAT' = BLK_MAT ; TABRESU.'BLK_MAS' = BLK_MAS ; TABRESU.'BLK_RIG' = BLK_RIG ; TABRESU.'BLK_AMO' = BLK_AMO ; 'SINON' ; TABRESU.'CHAR' = CHA1 ; TABRESU.'AMOR' = AMOF ; 'FINSI' ; *-----------FIN DE MODIFICATION 01/02/2014 (F. WANG)------------------- TABRESU.'DEFO' = DEFZ ; TABRESU.'ACCE' = GAMMA ; TABRESU.'PAS' = PAS_TEM ; TABRESU.'FCDYN' = FCDYN ; *---------------------------------------------------------------------- 'SINON' ; *---------------------------------------------------------------------- * BIELAK ET ONDE SH * DEBUT DE MODIFICATION 01/10/2015. WANG) *---------------------------------------------------------------------- SI SH ; MESS 'BIELAK ET ONDE SH' ; * RECUPERATION DE L ENVELOPPE DE DECONVOLUTION BLKV_MAI = COL1 ; BLKV_MOD = MOD1 ; BLKV_MAT = MAT1 ; BLKV_MAS = MAS1 ; BLKV_RIG = RIG1 ; BLKV_AMO = AMO1 ; * GENERATION DE LA ZONE HORIZONTALE VEC_V = 0 0 (-1*COUCHE.BLK.EP_V) ; BLKH_MAI = 'VOLU' 'TRAN' 1 (FOND_SOL 'ET' BAS_COL) VEC_V ; BLKH_MOD = 'MODE' BLKH_MAI 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE' TY1 TY2 ; BLKH_MAT = 'MATE' BLKH_MOD 'YOUNG' (COUCHE.NB_COU.'YOUNG') 'NU' (COUCHE.NB_COU.'POISSON') 'RHO' (COUCHE.NB_COU.'MASSE_VOLUMIQUE') ; BLKH_MAS = 'MASS' BLKH_MOD BLKH_MAT ; BLKH_RIG = 'RIGI' BLKH_MOD BLKH_MAT ; BLKH_AMO = KSI * ((ALPHA * BLKH_MAS) 'ET' (BETA * BLKH_RIG)) ; * ZONE INTERMEDIAIRE COMPLETE BLK_MAI = BLKV_MAI 'ET' BLKH_MAI ; BLK_MOD = BLKV_MOD 'ET' BLKH_MOD ; BLK_MAT = BLKV_MAT 'ET' BLKH_MAT ; BLK_MAS = BLKV_MAS 'ET' BLKH_MAS ; BLK_RIG = BLKV_RIG 'ET' BLKH_RIG ; BLK_AMO = BLKV_AMO 'ET' BLKH_AMO ; * TRACE DE LA ZONE INTERNE ET INTERMEDIAIRE 'TITR' 'ZONE INTERNE ET INTERMEDIAIRE' ; 'ELIM' BLK_MAI 0.001 ; BLK_MAI = BLK_MAI 'COUL' 'ROUG' ; 'TRAC' (SOL 'ET' BLK_MAI) 'FACE' 'NCLK' ; * SURFACE INTERIEURE 'TITR' 'SURFACE INTERIEURE' ; BLK_INT = FRON 'ET' FOND_SOL ; 'TRAC' BLK_INT CACH ; * ACCES AUX NOEUDS 'TASS' BLK_INT ; NB_INT = 'NBNO' BLK_INT ; 'MESS' 'NB. DE NOEUDS, SURFACE INTERIEURE' NB_INT ; POI_INT = 'TABLE' ; J = 0 ; 'REPE' BINT1 NB_INT ; J = J + 1 ; POI_INT.J = 'NOEU' J ; 'FIN' BINT1 ; 'TASS' BLK_MAI ; NB_ZON = 'NBNO' BLK_MAI ; 'MESS' 'NB. DE NOEUDS, ZONE INTERMEDIAIRE' NB_ZON ; POI_ZON = 'TABLE' ; J = 0 ; 'REPE' BZON1 NB_ZON ; J = J + 1 ; POI_ZON.J = 'NOEU' J ; 'FIN' BZON1 ; * TFR: ACCELERATION, VITESSE ET DEPLACEMENT DU POINT DE CONTROLE * (FC a prendre en compte ...) NP = 'DIME' ( 'EXTR' GAMMAO 'ABSC' ) ; XX = ( 'LOG' NP ) / ( 'LOG' 2 ) ; NN = 'ENTI' XX ; 'SI' ( XX > ( 1.0 * NN ) ) ; NN = NN + 1 ; 'FINSI' ; 'TITRE' 'TFR ACCELERATION' ; TF_GAMMO = 'TFR' NN GAMMAO 'MOPH' ; FR_GAMMO = 'EXTR' TF_GAMMO 'ABSC' ; MO_GAMMO = 'EXTR' TF_GAMMO 'ORDO' 1 ; PH_GAMMO = 'EXTR' TF_GAMMO 'ORDO' 2 ; NFREQ = 'DIME' FR_GAMMO ; DFREQ = 'EXTR' FR_GAMMO 2 ; FREQN = 'EXTR' FR_GAMMO NFREQ ; MODUN = 'EXTR' MO_GAMMO NFREQ ; 'SI' ( IDIV NEG 0 ) ; NN = NN + IDIV ; 'REMP' MO_GAMMO NFREQ ( MODUN / 2.0 ) ; NFREQ1 = (2**(NN - 1)) + 1 ; FR_GAMMO = 'PROG' 0.0 'PAS' DFREQ 'NPAS' ( NFREQ1 - 1 ) ; LIST ( DIME FR_GAMMO ) ; MO_GAMMO = MO_GAMMO 'ET' ('PROG' (NFREQ1 - NFREQ ) * 0.0) ; PH_GAMMO = PH_GAMMO 'ET' ('PROG' (NFREQ1 - NFREQ ) * 0.0) ; TF_GAMMO = 'EVOL' 'COMP' 'MOPH' 'FREQ(HZ)' FR_GAMMO 'MODULE' MO_GAMMO 'PHASE' PH_GAMMO ; 'FINSI' ; OMEGA = 2*PI*FR_GAMMO ; 'TITRE' 'TFR VITESSE' ; TFIOM = 'EVOL' 'COMP' 'REIM' FR_GAMMO (FR_GAMMO*0) OMEGA ; 'RIMP' TFIOM ; TF_VITEO = TF_GAMMO / TFIOM ; 'TITRE' 'TFR DEPLACEMENT' ; TF_DEPLO = TF_VITEO / TFIOM ; * ACCELERATION, VITESSE ET DEPLACEMENT TABDON = 'TABLE' ; TABDON.PDC = P_GAMMA.ENTREE.CONTROLE ; TABDON.DIR = DIR ; TABDON.ANGLE = ANGLE ; TABDON.VS = CS_I ; TABDON.KSI = KSI ; TABDON.F1 = F1 ; TABDON.F2 = F2 ; TABDON.LF = FR_GAMMO ; * SURFACE INTERIEURE A_INT = 'TABLE' ; V_INT = 'TABLE' ; D_INT = 'TABLE' ; J = 0 ; 'REPE' BINT2 NB_INT ; J = J + 1 ; 'TITR' 'FONCTION DE TRANSFERT BLK_INT, NOEUD' J ; TABDON.PDF = POI_INT.J ; H_INT = SHFDT TABDON ; 'TITR' 'ACCELARATION BLK_INT, NOEUD' J ; A_INT.J = 'TFRI' (H_INT * TF_GAMMO) ; LT = 'EXTR' A_INT.J 'ABSC' ; LY = 'EXTR' A_INT.J 'ORDO' ; Y1 = 'EXTR' LY 1 ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; A_INT.J = 'EVOL' 'MANU' 'TEMPS' LT 'DEPL' LY ; 'TITR' 'VITESSE BLK_INT, NOEUD' J ; V_INT.J = 'TFRI' (H_INT * TF_VITEO) ; LT = 'EXTR' V_INT.J 'ABSC' ; LY = 'EXTR' V_INT.J 'ORDO' ; Y1 = 'EXTR' LY 1 ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; V_INT.J = 'EVOL' 'MANU' 'TEMPS' LT 'DEPL' LY ; 'TITR' 'DEPLACEMENT BLK_INT, NOEUD' J ; D_INT.J = 'TFRI' (H_INT * TF_DEPLO) ; LT = 'EXTR' D_INT.J 'ABSC' ; LY = 'EXTR' D_INT.J 'ORDO' ; Y1 = 'EXTR' LY 1 ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; D_INT.J = 'EVOL' 'MANU' 'TEMPS' LT 'DEPL' LY ; 'DETR' H_INT ; 'FIN' BINT2 ; * ZONE INTERMEDIAIRE A_ZON = 'TABLE' ; V_ZON = 'TABLE' ; D_ZON = 'TABLE' ; J = 0 ; 'REPE' BZON2 NB_ZON ; J = J + 1 ; 'TITR' 'FONCTION DE TRANSFERT BLK_MAI, NOEUD' J ; TABDON.PDF = POI_ZON.J ; H_ZON = SHFDT TABDON ; 'TITR' 'ACCELARATION BLK_MAI, NOEUD' J ; A_ZON.J = 'TFRI' (H_ZON * TF_GAMMO) ; LT = 'EXTR' A_ZON.J 'ABSC' ; LY = 'EXTR' A_ZON.J 'ORDO' ; Y1 = 'EXTR' LY 1 ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; A_ZON.J = 'EVOL' 'MANU' 'TEMPS' LT 'DEPL' LY ; 'TITR' 'VITESSE BLK_MAI, NOEUD' J ; V_ZON.J = 'TFRI' (H_ZON * TF_VITEO) ; LT = 'EXTR' V_ZON.J 'ABSC' ; LY = 'EXTR' V_ZON.J 'ORDO' ; Y1 = 'EXTR' LY 1 ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; V_ZON.J = 'EVOL' 'MANU' 'TEMPS' LT 'DEPL' LY ; 'TITR' 'DEPLACEMENT BLK_MAI, NOEUD' J ; D_ZON.J = 'TFRI' (H_ZON * TF_DEPLO) ; LT = 'EXTR' D_ZON.J 'ABSC' ; LY = 'EXTR' D_ZON.J 'ORDO' ; Y1 = 'EXTR' LY 1 ; NY = 'DIME' LY ; LY1 = 'PROG' NY * Y1 ; LY = LY - LY1 ; D_ZON.J = 'EVOL' 'MANU' 'TEMPS' LT 'DEPL' LY ; 'DETR' H_ZON ; 'FIN' BZON2 ; *----------------------------------------------------------------------- * CHARGEMENT SUR LA ZONE INTERNE (REACTION PAR LA ZONE INTERMEDIAIRE) * ZONE INTERMEDIARE COMPLETE SOUMISE AU MOUVEMENT DU CHAMP LIBRE *----------------------------------------------------------------------- 'SI' ('EGA' DIR 'UX') ; FDIR = 'MOT' 'FX' ; 'FINSI' ; 'SI' ('EGA' DIR 'UY') ; FDIR = 'MOT' 'FY' ; 'FINSI' ; FOR_Z = 'FORC' FDIR 1.0 POI_ZON.1 ; CHD_Z = 'CHAR' FOR_Z D_ZON.1 ; CHV_Z = 'CHAR' FOR_Z V_ZON.1 ; CHA_Z = 'CHAR' FOR_Z A_ZON.1 ; J = 1 ; 'REPE' BZON3 (NB_ZON - 1) ; J = J + 1 ; FOR_Z = 'FORC' FDIR 1.0 POI_ZON.J ; CHD_Z = CHD_Z 'ET' ('CHAR' FOR_Z D_ZON.J ) ; CHV_Z = CHV_Z 'ET' ('CHAR' FOR_Z V_ZON.J ) ; CHA_Z = CHA_Z 'ET' ('CHAR' FOR_Z A_ZON.J ) ; 'FIN' BZON3 ; CHD_Z = 'CHAN' 'TABL' CHD_Z 'MECA' ; CHV_Z = 'CHAN' 'TABL' CHV_Z 'MECA' ; CHA_Z = 'CHAN' 'TABL' CHA_Z 'MECA' ; TAB_T TABD_Z = 'EXTR' CHD_Z 'MECA' 'TABL' ; TAB_T TABV_Z = 'EXTR' CHV_Z 'MECA' 'TABL' ; TAB_T TABA_Z = 'EXTR' CHA_Z 'MECA' 'TABL' ; LM1 = 'MOTS' FDIR ; LM2 = 'MOTS' DIR ; TABF_Z = 'TABLE' ; N_T = 'DIME' TAB_T ; I = 0 ; 'REPE' BZON4 N_T ; CHD_Z = 'EXCO' LM1 (TABD_Z.I) LM2 ; CHV_Z = 'EXCO' LM1 (TABV_Z.I) LM2 ; CHA_Z = 'EXCO' LM1 (TABA_Z.I) LM2 ; CHD_Z = CHD_Z * BLK_RIG ; CHV_Z = CHV_Z * BLK_AMO ; CHA_Z = CHA_Z * BLK_MAS ; TABF_Z.I = CHD_Z + CHV_Z + CHA_Z ; I = I + 1 ; 'FIN' BZON4 ; TABREA = TABLE ; I = 0 ; 'REPE' BINT5 N_T ; TABREA.I = -1*(REDU BLK_INT TABF_Z.I); I = I + 1 ; 'FIN' BINT5 ; CHA1 = 'CHAR' 'MECA' TAB_T TABREA ; *----------------------------------------------------------------------- * CHARGEMENT SUR LA ZONE INTERMEDIAIRE * * -SURFACE INTERIEURE: SOUMISE AU MOUVEMENT CHAMP LIBRE * -LE RESTE DE LA ZONE INTERMEDIARE Y COMPRIS LES NOEUDS INTERMEDIAIRES * SI ELEMENTS CU20 OU PR15): MOUVEMENT BLOQUE (ON NE MET RIEN) *----------------------------------------------------------------------- FOR_I = 'FORC' FDIR 1.0 POI_INT.1 ; CHD_I = 'CHAR' FOR_I D_INT.1 ; CHV_I = 'CHAR' FOR_I V_INT.1 ; CHA_I = 'CHAR' FOR_I A_INT.1 ; J = 1 ; 'REPE' BINT3 (NB_INT - 1) ; J = J + 1 ; FOR_I = 'FORC' FDIR 1.0 POI_INT.J ; CHD_I = CHD_I 'ET' ('CHAR' FOR_I D_INT.J ) ; CHV_I = CHV_I 'ET' ('CHAR' FOR_I V_INT.J ) ; CHA_I = CHA_I 'ET' ('CHAR' FOR_I A_INT.J ) ; 'FIN' BINT3 ; CHD_I = 'CHAN' 'TABL' CHD_I 'MECA' ; CHV_I = 'CHAN' 'TABL' CHV_I 'MECA' ; CHA_I = 'CHAN' 'TABL' CHA_I 'MECA' ; TAB_T TABD_I = 'EXTR' CHD_I 'MECA' 'TABL' ; TAB_T TABV_I = 'EXTR' CHV_I 'MECA' 'TABL' ; TAB_T TABA_I = 'EXTR' CHA_I 'MECA' 'TABL' ; TABF_I = 'TABLE' ; N_T = 'DIME' TAB_T ; I = 0 ; 'REPE' BINT4 N_T ; CHD_I = 'EXCO' LM1 (TABD_I.I) LM2 ; CHV_I = 'EXCO' LM1 (TABV_I.I) LM2 ; CHA_I = 'EXCO' LM1 (TABA_I.I) LM2 ; CHD_I = CHD_I * BLK_RIG ; CHV_I = CHV_I * BLK_AMO ; CHA_I = CHA_I * BLK_MAS ; TABF_I.I = CHD_I + CHV_I + CHA_I ; I = I + 1 ; 'FIN' BINT4 ; CHA2 = 'CHAR' 'MECA' TAB_T TABF_I ; * Sortie des resultats TABRESU = 'TABLE' ; TABRESU.'CHAR' = CHA1 ET CHA2 ; TABRESU.'BLK_MAI' = BLK_MAI ; TABRESU.'BLK_MOD' = BLK_MOD ; TABRESU.'BLK_MAT' = BLK_MAT ; TABRESU.'BLK_MAS' = BLK_MAS ; TABRESU.'BLK_RIG' = BLK_RIG ; TABRESU.'BLK_AMO' = BLK_AMO ; TABRESU.'ACCE' = GAMMA ; TABRESU.'PAS' = PAS_TEM ; TABRESU.'FCDYN' = 1./(4*PAS_TEM) ; FINSI ; FINSI ; *------------FIN DE MODIFICATION 01/10/2015. WANG)--------------------- 'SAUT' 5 'LIGNE' ; 'MESS' '*********************************************************' ; 'MESS' '* *' ; 'MESS' '* FIN DE LA PROCEDURE DE LA DECONVOLUTION *' ; 'MESS' '* *' ; 'MESS' '*********************************************************' ; 'SAUT' 5 'LIGNE' ; 'FINPROC' TABRESU ; ************************************************************************