c ********** parametres pour le non local ************************** c NBVIA3D nombre de non locales actives transmises par c'modele' c INLVIA3D(l): pointeur sur les variables actives transmis par 'cmodele' c NMAT3 : nombre de parametres du materiaux support c (renforts et decalage castem compris) c ** initialisation des tableaux pour Helmholtz ******************** do i=1,NB_HELM c capacite CAPAH(i)=1.d0 c source DEPIH(i)=0.d0 c blocage a la valeur initial BLOQH(i)=.false. c valeur initiale INITH(i)=0.d0 c non lineaire par defaut LINEH(i)=0.d0 do j=1,3 c diffusions principales orthotrope DIFFH(i,j) =0.d0 do k=1,3 c directions des diffusions principales if(j.eq.k) then VECTH(i,j,k)=1.d0 else VECTH(i,j,k)=0.d0 end if end do end do end do c ****** reperage des variables actives si on est en non local ***** if(istep.ne.0) then c recuperation des parametres materiaux pour VARI non locales actives c print*,'Etape 1-1 ds charge_materiaux_helmholtz.h istep',istep do i=1,NBVIA3D c capacite CAPAH(i)=xmat(NMAT3+(i-1)*NB_PARA_PAR_HELM+1) c print*,'CAPAH(',i,')=',CAPAH(i) c blocage if(xmat(NMAT3+(i-1)*NB_PARA_PAR_HELM+2).eq.1.) then BLOQH(i)=.true. else BLOQH(i)=.false. end if c print*,'BLOQH(',i,')=',xmat(NMAT3+(i-1)*NB_PARA_PAR_HELM+2) c # ,'->',BLOQH(i) c valeur imposee sur le blocage DEPIH(i)=xmat(NMAT3+(i-1)*NB_PARA_PAR_HELM+3) c print*,'DEPIH(',i,')=',DEPIH(i) c valeur initiale INITH(i)=xmat(NMAT3+(i-1)*NB_PARA_PAR_HELM+4) c print*,'INITH(',i,')=',INITH(i) c boucle sur les diffusions principales c valeur initiale LINEH(i)=int(xmat(NMAT3+(i-1)*NB_PARA_PAR_HELM+5)) c print*,'INITH(',i,')=',INITH(i) c boucle sur les diffusions principales do j=1,3 c coefficient de diffusion DIFFH(i,j)=xmat(NMAT3+(i-1)*NB_PARA_PAR_HELM+5+ # (j-1)*4+1) c print*,'DIFFH(',i,j,')=',DIFFH(i,j) c longueur caracteristique LCARH(i,j)=2.d0*(DIFFH(i,j)/CAPAH(i))**(1./2.) c print*,'LCARH(',i,j,')=',LCARH(i,j) c boucle sur les composantes du vecteur direction de la diffusion vnorm=0.d0 do k=1,3 VECTH(i,j,k)=xmat(NMAT3+(i-1)*NB_PARA_PAR_HELM+5+ # (j-1)*4+1+k) c print*,'VECTH(',i,j,k,')=',VECTH(i,j,k) vnorm=vnorm+VECTH(i,j,k)**2 end do vnorm=sqrt(vnorm) if(vnorm.eq.0.) then c si la norme est nulle on suppose que les LCARH c sont portees par le repere fixe write(*,'(a22,1x,i2,a16,i2)') # 'Il manque la direction',j,' pour Helmholtz ',i ierr1=1 return end if c matrice des tailles associees aux diffusions if(j.eq.1) then do k=1,3 do l=1,3 TAILH(i,k,l)=LCARH(i,j)* # (VECTH(i,j,k)*VECTH(i,j,l)) end do end do else do k=1,3 do l=1,3 TAILH(i,k,l)=TAILH(i,k,l)+ # LCARH(i,j)*(VECTH(i,j,k)*VECTH(i,j,l)) end do end do end if c fin de la construction de la matrice des tailles end do C print*,'Dans charge_materiaux_helmholtz.h (MATHEL.INC)' C do j=1,3 C do k=1,3 C print*,'TailH(',i,j,k,')=',tailh(i,j,k) C end do C end do c fin de la boucle sur les diffusions principales end do c fin de la boucle sur les variables de Helmholtz end if c fin du chargement des parametres non locaux
© Cast3M 2003 - Tous droits réservés.
Mentions légales