resour
C RESOUR SOURCE MB234859 25/01/03 21:15:27 12105 SUBROUTINE RESOUR(idemem,ideme0,ideme1,mrigid,if,ipt8, > isouci,iverif) C---------------------------------------------------------------------- C Subroutine dont le role est de reconstruire la solution complete en C reintroduisant les inconnues eliminees. C C Entrees : C --------- C idemem : tableau contenant le(s) second(s) membre(s) apres la C passe d'elimiation if C ideme0 : tableau contenant pour le(s) second(s) membre(s) les C valeurs des secondes membres a la passe d'elimination if C ideme1 : tableau contenant pour le(s) second(s) membre(s) les C valeurs de chaque condition eliminee a la passe d'elimination if C mrigid : pointeur sur la rigidite totale C if : passe d'elimination C iverif : vaut 1 si verification de la solution. C Pas de verification si option noid car on n'a pas ku=f C C Sortie : C --------- C idemem : tableau contenant le(s) solution(s) obtenue(s) C C---------------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C -INC SMRIGID -INC PPARAM -INC CCOPTIO -INC SMCHPOI -INC SMELEME C SEGMENT IDEMEM(0) segment ideme0(idemem(/1),30) segment ideme1(idemem(/1),30) C SEGACT IDEMEM*mod N=IDEMEM(/1) segact mrigid lagdua=imlag ri6=jrdepp ri2=jrgard ri1=jrelim C ----------------------------------------------------------------- C Traitement de(s) second(s) membre(s) DO 3 I=1,N mchpoi=idemem(i) C C Reintroduction des inconnues supprimees mchpo1=ideme1(I,if) mchpo1=iret C C Calcul de KU C C Calcul de KU - F ichp6= ideme0(I,if) C C Ajout des valeurs des multiplicateurs des conditions eliminees C C Verifier qu'on a bien l'equilibre if (if.eq.1.and.iverif.eq.1) then C C separer les conditions aux limites pour etablir la reference sans condition aux limites segact ri2 nrigel=ri2.irigel(/2) ** write(6,*) ' nrigel dans resour ',nrigel segini ri3 ri3.mtymat = ri2.mtymat ri3.iforig = ri2.iforig irn=0 do ir=1,nrigel meleme=ri2.irigel(1,ir) segact meleme if(itypel.eq.49) then irn=irn+1 ri3.coerig(irn)=ri2.coerig(ir) do ii=1,ri2.irigel(/1) ri3.irigel(ii,irn)=ri2.irigel(ii,ir) enddo endif enddo *** call prrigi(ri2,0) nrigel=irn *** write(6,*) ' irn dans resour ',irn segadj ri3 segsup ri3 if (ierr.ne.0) return C if (ierr.ne.0) return ** write(6,*) 'ichp5 ichp6 ichp8 ichp4 ',ichp5,ichp6,ichp8,ichp4 ** call vechpo(ichp5,ichp6,ichp8,ichp4,ipt8,isouci) endif C * call dtchpo(ichp6) if (ierr.ne.0) return C Les CHPOINTs qui sortent sont de nature diffuse segact mchpo1*mod mchpo1.jattri(1)=1 if(ierr.ne.0) return C C Suppression les multiplicateurs dedoubles ** write(6,*) ' appel a dbbcf lagdua ',lagdua C idemem(i)=mchpoi 3 CONTINUE C ----------------------------------------------------------------- END
© Cast3M 2003 - Tous droits réservés.
Mentions légales