cmoda2
C CMODA2 SOURCE CB215821 25/04/23 21:15:05 12247
& IB,IGAU,NBPGAU,NBGMAT,NELMAT,IFOURB)
*
*
*
IMPLICIT INTEGER(I-N)
IMPLICIT REAL*8 (A-H,O-Z)
-INC PPARAM
-INC CCOPTIO
-INC CCREEL
-INC DECHE
-INC SMLREEL
-INC SMEVOLL
-INC SMLMOTS
-INC SMELEME
-INC SMCHPOI
-INC SMCOORD
CHARACTER*4 lesinc(7),lesdua(7)
DATA lesinc/'UX','UY','UZ','RX','RY','RZ','UR'/
DATA lesdua/'FX','FY','FZ','MX','MY','MZ','FR'/
*
IF (cmate.eq.'MODAL') THEN
c caracteristiques freq, mass
freq1 = valmat(1)
xmass1 = valmat(2)
omeg1 = 2. * xpi * freq1
xamor1 = valmat(4)
*
do jj = 1,epstf(/1)
if (jj.eq.1) jjsi = 1
if (jj.eq.2) jjsi = 3
effx = epstf(jj)
sigf(jjsi) = effx * xmass1 * omeg1 * omeg1
c write(6,*) 'cda2 ', jj, effx, xmass1,omeg1,sigf(jjsi)
if (ifomod.eq.6.) then
omef = 2.*xpi*tempf
sigf(jjsi) = sigf(jjsi) - (effx * xmass1 * omef * omef)
* write(6,*) sigf(1), effx, xmass1 , (omef*omef)
if (jj.eq.2) sigf(jjsi) = sigf(jjsi) * (-1)
if (xamor1.ne.0..and.epstf(/1).gt.1) then
endif
* write(6,*) 'cda2 ', jj, effx, freq1,xmass1,omeg1,sigf(jjsi)
endif
enddo
ENDIF
IF (cmate.eq.'STATIQUE'.or.cmate.eq.'MODAL') THEN
IPCHPO = 0
if (cmate.eq.'STATIQUE') then
if (valmat(5).gt.0) then
lricr = nint(valmat(5))
ipmmod = nint(valmat(6))
ipmsta = nint(valmat(7))
lmacr = nint(valmat(8))
lamcr = nint(valmat(9))
else
return
endif
elseif(cmate.eq.'MODAL') then
if (valmat(7).gt.0) then
lricr = nint(valmat(7))
ipmmod = 0
ipmsta = nint(valmat(8))
lmacr = nint(valmat(9))
lamcr = nint(valmat(10))
else
return
endif
endif
mlreel = lricr
segact mlreel
if(ifomod.eq.6) then
mlree1 = lmacr
segact mlree1
omef = 2.*xpi*tempf
return
endif
if (lamcr.gt.0) then
mlree2 = lamcr
segact mlree2
endif
endif
*
return
endif
JG0 = 0
DO 212 jj = 1,epstf(/1)
if (jj.eq.1) jjsi = 1
if (jj.eq.2) jjsi = 3
effx = epstf(jj)
sigf(2) = 0
c write(6,*) 'c2',prog(/1),mlree1.prog(/1),lamcr,effx
IF (cmate.eq.'STATIQUE') THEN
if(ifomod.eq.6) then
if (jj.eq.2) sigf(jjsi) = sigf(jjsi) * (-1)
if (lamcr.gt.0) then
endif
endif
endif
goto 212
if (jj.eq.epstf(/1)) then
segdes mlreel
if (ifomod.eq.6) then
segdes mlree1
if (lamcr.gt.0) segdes mlree2
endif
return
endif
else
sigf(jjsi) = 0.d0
endif
ENDIF
*
if (jj.eq.1) then
NSOUPO = 1
if(ipmmod.gt.0.and.ipmsta.gt.0) NSOUPO = 2
NAT=1
SEGINI,MCHPOI
IPCHPO = MCHPOI
MTYPOI = 'FMODSTA'
IFOPOI = IFOUR
* nature diffuse
JATTRI(1) = 1
nmo0 = 0
KIPCHP = 0
if (ipmmod.gt.0) then
NC = epstf(/1)
SEGINI,MSOUPO
KIPCHP = KIPCHP + 1
IPCHP(KIPCHP) = MSOUPO
NOCOMP(1) = 'FALF'
NOHARM(1) = NIFOUR
if (epstf(/1).eq.2) then
NOCOMP(2) = 'IFAL'
NOHARM(2) = NIFOUR
endif
IGEOC = ipmmod
ipt1 = ipmmod
segact ipt1
N = ipt1.num(/2)
nmo0 = N
JG0 = JG0 + N
SEGINI,MPOVAL
IPOVAL = MPOVAL
ipomo0 = ipoval
endif
endif
*
if (ipmmod.gt.0) then
N = nmo0
mpoval = ipomo0
do ii = 1,N
c write(6,*) 'cc',vpocha(/1),vpocha(/2),ii,jj,prog(/1)
if (ifomod.eq.6) then
if (jj.eq.2) vpocha(ii,jj) = vpocha(ii,jj) * (-1)
if (lamcr.gt.0) then
endif
endif
endif
* write(6,*)'m',effx,ii,ipt1.num(1,ii),mlree1.prog(ii),vpocha(ii,1)
enddo
if (jj.eq.epstf(/1)) SEGDES,MPOVAL,MSOUPO
endif
if (jj.eq.1) then
if (ipmsta.gt.0) then
NC = epstf(/1)
SEGINI,MSOUPO
KIPCHP = KIPCHP + 1
IPCHP(KIPCHP) = MSOUPO
NOCOMP(1) = 'FBET'
NOHARM(1) = NIFOUR
if (epstf(/1).eq.2) then
NOCOMP(2) = 'IFBE'
NOHARM(2) = NIFOUR
endif
IGEOC = ipmsta
ipt1 = ipmsta
segact ipt1
N = ipt1.num(/2)
nst0 = N
SEGINI,MPOVAL
IPOVAL = MPOVAL
ipost0 = ipoval
endif
endif
*
if (ipmsta.gt.0) then
N = nst0
mpoval = ipost0
do ii = 1,N
if (ifomod.eq.6) then
vpocha(ii,jj) = vpocha(ii,jj) -
if (jj.eq.2) vpocha(ii,jj) = vpocha(ii,jj) * (-1)
if (lamcr.gt.0) then
vpocha(ii,jj) = vpocha(ii,jj) +
endif
endif
endif
c write(6,*)'s',effx,ii,ipt1.num(1,ii),mlree2.prog(JG0 +ii),
c &vpocha(ii,1),ipchpo
enddo
c write(6,*)'s',(mlree2.prog(JG0+ii),ii=1,N),(vpocha(ii,jj),ii=1,N)
if (jj.eq.epstf(/1)) SEGDES,MPOVAL
endif
212 CONTINUE
* ENDDO
if (IPCHPO.gt.0) segdes MCHPOI
sigf(2) = IPCHPO
c write(6,*) cmate,epstf(/1),epstf(1),epstf(2)
c write(6,*)'c2',cmate,sigf(/1),jj,(sigf(ll),ll = 1,sigf(/1))
segdes mlreel
if (ifomod.eq.6) then
segdes mlree1
if (lamcr.gt.0) segdes mlree2
endif
return
ENDIF
IF (cmate.EQ.'IMPELAST'.or.cmate.eq.'IMPVOIGT') THEN
xraid = xmat(1)
do ig = 1,epstf(/1)
sigf(ig) = xraid * epstf(ig)
enddo
* write(6,*) 'cmoda2', (sigf(ll), ll = 1,3)
IF (cmate.eq.'IMPVOIGT') THEN
xvisc = xmat(2)
do ig = 1,epstf(/1)
sigf(ig) = sigf(ig) + (xvisc* (epstf(ig) - epst0(ig)) / xdt)
enddo
ENDIF
IF (mele.eq.45) THEN
ENDIF
ENDIF
IF (cmate.EQ.'IMPREUSS') THEN
xraid = xmat(1)
xvisc = xmat(2)
do ig = 1,epstf(/1)
xepe0 = var0(ig)
if (xdt.ne.0) then
* xx = (epstf(ig) - epst0(ig) + xepe0) * xvisc / xdt
yy = (xraid + (xvisc /xdt))
xx = (xraid*epstf(ig)) + (xvisc*xepe0/xdt)
varf(ig) = xx / yy
else
varf(ig) = var0(ig)
endif
sigf(ig) = (epstf(ig)- varf(ig)) * xraid
enddo
* write(6,*) 'cmoda2 ',epstf(/1), epin0(/1),xepe0, epstf(1)
ENDIF
if(ifomod.eq.6) then
IF (cmate.EQ.'IMPCOMPL') THEN
xraid = xmat(1)
xamo1 = xmat(3)
xmass1 = xmat(4)
omef = 2.*xpi*tempf
* write(6,*) 'ccompl', xraid,xamo1,xmass1,epstf(/1),sigf(/1)
do ig = 1,epstf(/1)
effx = epstf(ig)
sigf(ig) = xraid * epstf(ig)
if(xmass1.gt.0) then
sigf(1) = sigf(1) - (effx * xmass1 * omef * omef)
* write(6,*) sigf(1), effx, xmass1 , (omef*omef)
endif
if (ig.eq.2) sigf(ig) = sigf(ig)*(-1)
enddo
* write(6,*) (epstf(ij),ij=1,2),(sigf(ij),ij=1,2)
ENDIF
endif
RETURN
END
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales