varin6
C VARIN6 SOURCE JK148537 25/06/23 21:15:06 12298 * * cree compos facultatives modele modal et statique * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * -INC SMCHAML -INC SMMODEL -INC PPARAM -INC CCOPTIO -INC SMLREEL -INC SMLMOTS -INC SMELEME -INC CCNOYAU -INC CCREEL -INC SMLENTI * LOGICAL dricr,dmacr,damcr CHARACTER*4 lesinc(8),lesdua(8) DATA lesinc/'UX','UY','UZ','RX','RY','RZ','UR','UT'/ DATA lesdua/'FX','FY','FZ','MX','MY','MZ','FR','FT'/ POINTEUR MLENT4.MLENTI,MLENT5.MLENTI,MLENT6.MLENTI, &MLENT7.MLENTI,MLENT8.MLENTI,MLENT9.MLENTI,MLEN10.MLENTI, &MLEN11.MLENTI,MLEN14.MLENTI,MLEN15.MLENTI,MLEN16.MLENTI, &MLEN17.MLENTI,MLEN19.MLENTI,MLEN20.MLENTI POINTEUR MLREAM.MLREEL,MLREE4.MLREEL,MLREE5.MLREEL C * 0 : point support, 1: imodel, 2: mchaml, 3: defo, * 4: ricr , 5: maia, 6, maib, 7: macr, 8: imade, 9: itreac, 10: amcr *11: iel jgn = 4 if (ifour.eq.2) then jgm = 6 segini mlmots iinc = mlmots do igm = 1,jgm enddo segini mlmots idua = mlmots do igm= 1,jgm enddo else if (ifour.lt.0) then jgm = 4 segini mlmots iinc = mlmots segini mlmots idua = mlmots else if (ifour.eq.0) then jgm = 3 segini mlmots iinc = mlmots segini mlmots idua = mlmots else if (ifour.eq.1) then * a faire endif mchelm = icara mmodel = ipmode NBNN = 1 JG = 0 segini mlenti,mlent1,mlent2,mlen11 kg = 0 do im = 1,kmodel(/1) imodel = kmodel(im) if (cmatee.eq.'STATIQUE'.OR.cmatee.eq.'MODAL') then meleme = imamod segadj mlenti,mlent1,mlent2,mlen11 kg = kg + 1 lect(kg) = num(1,iel) mlent1.lect(kg) = imodel mlen11.lect(kg) = iel do isous = 1,imache(/1) if (imache(isous).eq.imamod.and.conche(isous).eq.conmod) then mchaml = ichaml(isous) segact mchaml*mod mlent2.lect(kg) = mchaml endif enddo enddo endif enddo segadj mlenti,mlent1,mlent2,mlen11 JG0 = JG segini mlent3,mlent4,mlent5,mlent6,mlent7,mlent8,mlent9,mlen10 segini mlen14,mlen15,mlen16,mlen17,mlen19,mlen20 segini mlream do jjgg = 1,JG0 imodel = mlent1.lect(jjgg) itreac = 0 imade = 0 idepl = 0 Xm1 = 0.d0 mchaml = mlent2.lect(jjgg) jel = mlen11.lect(jjgg) do ie = 1,ielval(/1) if (NOMCHE(IE).eq.'DEFO'.and.mlent3.lect(jjgg).eq.0) then MELVA5 = ielval(ie) segact melva5 idepl = melva5.ielche(1,jel) mlent3.lect(jjgg)= idepl endif if (NOMCHE(IE).eq.'AMOR') then MELVA5 = ielval(ie) segact melva5 xam0 = melva5.velche(1,jel) endif if (cmatee.eq.'STATIQUE') then if (NOMCHE(IE).eq.'MADE') then MELVA6 = ielval(ie) segact melva6 imade = melva6.ielche(1,jel) mlent8.lect(jjgg) = imade endif if (NOMCHE(IE).eq.'RIDE') then MELVA4 = ielval(ie) segact melva4 itreac = melva4.ielche(1,jel) mlent9.lect(jjgg) = itreac endif endif enddo if(idepl.le.0) then return endif if (cmatee.eq.'STATIQUE') then if (itreac.le.0.or.imade.le.0) then return endif endif NBNN = 1 NBELEM = JG NBSOUS = 0 NBREF = 0 if(mlent4.lect(jjgg).eq.0) then segini mlreel,mlree1 mlent4.lect(jjgg) = mlreel mlen14.lect(jjgg) = mlree1 endif if(mlent5.lect(jjgg).eq.0.and.cmatee.eq.'STATIQUE') then segini ipt1,ipt2 mlent5.lect(jjgg) = ipt1 mlen15.lect(jjgg) = ipt2 ipt1.ITYPEL = 1 ipt2.ITYPEL = 1 endif if(mlent6.lect(jjgg).eq.0) then segini ipt1,ipt2 mlent6.lect(jjgg) = ipt1 mlen16.lect(jjgg) = ipt2 ipt1.ITYPEL = 1 ipt2.ITYPEL = 1 endif if(mlent7.lect(jjgg).eq.0) then segini mlreel,mlree1 mlent7.lect(jjgg) = mlreel mlen17.lect(jjgg) = mlree1 endif if(mlen10.lect(jjgg).eq.0) then segini mlreel,mlree1 mlen10.lect(jjgg) = mlreel mlen20.lect(jjgg) = mlree1 endif * boucle jjgg enddo do jjgg = 1,JG0 imodel = mlent1.lect(jjgg) jel = mlen11.lect(jjgg) if (cmatee.eq.'STATIQUE') then itreac = mlent9.lect(jjgg) imade = mlent8.lect(jjgg) do jg2 = 1,JG0 imode2 = mlent1.lect(jg2) if (jg2.lt.jjgg.and.imode2.cmatee.eq.'STATIQUE') goto 21 idepl = mlent3.lect(jg2) Xk1 = 0.d0 Xm1 = 0.d0 if (ierr.ne.0) return if (ABS(Xk1).gt.dble(xspeti)) then mlreel = mlent4.lect(jjgg) * rangement symetrique mlreel = mlent4.lect(jg2) if (imode2.cmatee.eq.'MODAL') then * croisé ALFA - BETA ipt1 = mlent5.lect(jjgg) ipt1.num(1,jg2) = lect(jg2) ipt1 = mlent6.lect(jg2) ipt1.num(1,jjgg) = lect(jjgg) elseif (imode2.cmatee.eq.'STATIQUE') then ipt1 = mlent6.lect(jjgg) ipt1.num(1,jg2) = lect(jg2) ipt1 = mlent6.lect(jg2) ipt1.num(1,jjgg) = lect(jjgg) endif endif xm1 = 0.d0 if (ierr.ne.0) return if (ABS(xm1).gt.dble(xspeti)) then mlreel = mlent7.lect(jjgg) * rangement symetrique mlreel = mlent7.lect(jg2) if (imode2.cmatee.eq.'MODAL') then * croisé ALFA - BETA ipt1 = mlent5.lect(jjgg) ipt1.num(1,jg2) = lect(jg2) ipt1 = mlent6.lect(jg2) ipt1.num(1,jjgg) = lect(jjgg) elseif (imode2.cmatee.eq.'STATIQUE') then ipt1 = mlent6.lect(jjgg) ipt1.num(1,jg2) = lect(jg2) ipt1 = mlent6.lect(jg2) ipt1.num(1,jjgg) = lect(jjgg) endif * amortissement homologue à la masse xamo3 = xamo1*xamo2 if (xamo3.eq.0.) then xamo = 0. else if (jg2.eq.jjgg) then xamo = SQRT(ABS(xamo3*Xm1*Xk1)) else xamo = SQRT(ABS(xamo3))*Xm1 endif if (xamo3.lt.0) xamo = xamo * (-1.d0) mlreel = mlen10.lect(jjgg) mlreel = mlen10.lect(jg2) endif * endif 21 continue * boucle jg2 enddo endif * boucle jjgg enddo do jjgg = 1,JG0 KELEM = 0 NBELEM = 0 ipt1 = mlent5.lect(jjgg) ipt2 = mlen15.lect(jjgg) mlreel = mlen14.lect(jjgg) mlree1 = mlent4.lect(jjgg) mlree2 = mlen17.lect(jjgg) mlree3 = mlent7.lect(jjgg) mlree4 = mlen20.lect(jjgg) mlree5 = mlen10.lect(jjgg) if (ipt1.gt.0) then do jg2 = 1,JG0 if (ipt1.num(1,jg2).ne.0) then KELEM = KELEM + 1 ipt2.num(1,KELEM) = ipt1.num(1,jg2) endif enddo NBELEM = KELEM segadj ipt2 endif if (NBELEM.eq.0) then segsup ipt1 mlent5.lect(jjgg) = 0 endif ipt1 = mlent6.lect(jjgg) ipt2 = mlen16.lect(jjgg) JG1 = NBELEM KELEM = 0 if (ipt1.gt.0) then do jg2 = 1,JG0 if (ipt1.num(1,jg2).ne.0) then KELEM = KELEM + 1 ipt2.num(1,KELEM) = ipt1.num(1,jg2) endif enddo NBELEM = KELEM segadj ipt2 endif JG = JG1 + NBELEM mlen19.lect(jjgg) = JG do iam=1,JG enddo mlen20.lect(jjgg) = 0 32 continue enddo N1PTEL=0 N1EL =0 do jjgg = 1,JG0 imodel = mlent1.lect(jjgg) meleme = imamod mchaml = mlent2.lect(jjgg) jel = mlen11.lect(jjgg) dricr = .true. dmacr = .true. damcr = .false. if (mlen20.lect(jjgg).gt.0) damcr = .true. nu2 = ielval(/1) nu20 = nu2 N2PTEL=1 N2EL =nbel do ie = 1,nu20 if (nomche(ie).eq.'RICR') then MELVA5 = ielval(ie) * segact melva5 mlree1 = melva5.ielche(1,jel) if(mlree1.gt.0) then mlreel = mlen14.lect(jjgg) segact mlreel,mlree1 enddo * non concordance données utilisateurs / calcul return * on ne pousse pas trop la verif 211 continue else melva5.ielche(1,jel) = mlen14.lect(jjgg) endif dricr = .false. endif if (nomche(ie).eq.'MACR') then MELVA5 = ielval(ie) * segact melva5 mlree1 = melva5.ielche(1,jel) if(mlree1.gt.0) then mlreel = mlen17.lect(jjgg) segact mlreel,mlree1 enddo * non concordance données utilisateurs / calcul return 311 continue * on ne pousse pas trop la verif else melva5.ielche(1,jel) = mlen17.lect(jjgg) endif dmacr = .false. endif if (nomche(ie).eq.'AMCR') then MELVA5 = ielval(ie) * segact melva5 mlree1 = melva5.ielche(1,jel) if(mlree1.gt.0) then mlreel = mlen20.lect(jjgg) if (mlreel.gt.0) then segact mlreel,mlree1 enddo * non concordance données utilisateurs / calcul return 411 continue endif * on ne pousse pas trop la verif else melva5.ielche(1,jel) = mlen20.lect(jjgg) endif damcr = .false. endif if (nomche(ie).eq.'MAIA') then MELVA5 = ielval(ie) * segact melva5 melva5.ielche(1,jel) = mlen15.lect(jjgg) endif if (nomche(ie).eq.'MAIB') then MELVA5 = ielval(ie) * segact melva5 melva5.ielche(1,jel) = mlen16.lect(jjgg) endif enddo n2 = nu2 if (dricr.or.dmacr.or.damcr) then if (cmatee.eq.'STATIQUE') then n2 = n2 + 2 else n2 = n2 + 1 endif endif if (dricr) n2 = n2 + 1 if (dmacr) n2 = n2 + 1 if (damcr) n2 = n2 + 1 if(n2.gt.nu2) then segadj mchaml if(dricr) then nu2 = nu2 + 1 typche(nu2)='POINTEURLISTREEL' nomche(nu2)='RICR' SEGINI,MELVAL IELVAL(nu2) = MELVAL ielche(1,jel) = mlen14.lect(jjgg) endif if((dmacr.or.dricr).and.cmatee.eq.'STATIQUE') then nu2 = nu2 + 1 typche(nu2)='POINTEURMAILLAGE' nomche(nu2)='MAIA' SEGINI,MELVAL IELVAL(nu2) = MELVAL ielche(1,jel) = mlen15.lect(jjgg) endif if(dmacr.or.dricr) then nu2 = nu2 + 1 typche(nu2)='POINTEURMAILLAGE' nomche(nu2)='MAIB' SEGINI,MELVAL IELVAL(nu2) = MELVAL ielche(1,jel) = mlen16.lect(jjgg) endif if(dmacr) then nu2 = nu2 + 1 typche(nu2)='POINTEURLISTREEL' nomche(nu2)='MACR' SEGINI,MELVAL IELVAL(nu2) = MELVAL ielche(1,jel) = mlen17.lect(jjgg) endif if(damcr) then nu2 = nu2 + 1 typche(nu2)='POINTEURLISTREEL' nomche(nu2)='AMCR' SEGINI,MELVAL IELVAL(nu2) = MELVAL ielche(1,jel) = mlen20.lect(jjgg) endif endif enddo mlmots = idua segsup mlmots mlmots = iinc segsup mlmots * * menage do jjgg = 1,JG0 JG = mlen19.lect(jjgg) if (JG.GT.0 ) then mlreel = mlen14.lect(jjgg) mlree2 = mlen17.lect(jjgg) mlree4 = mlen20.lect(jjgg) segadj mlreel,mlree2 if (mlree4.gt.0) segadj mlree4 else segsup mlreel,mlree2 if (mlree4.gt.0) segsup mlree4 endif mlree1 = mlent4.lect(jjgg) mlree3 = mlent7.lect(jjgg) mlree5 = mlen10.lect(jjgg) segsup mlree1,mlree3,mlree5 ipt1 = mlent5.lect(jjgg) ipt2 = mlent6.lect(jjgg) segsup ipt1,ipt2 enddo segsup mlenti,mlent1,mlent2,mlent3,mlent4,mlent5,mlent6,mlent7 segsup mlent8,mlent9,mlen10,mlen11,mlen14,mlen15,mlen16,mlen17, &mlen19,mlen20 segsup mlream return END
© Cast3M 2003 - Tous droits réservés.
Mentions légales