39 . ELBUF_TAB,SKIN_SCALAR, IPARG ,IXS ,X ,PM ,
40 4 IPARTS ,IGEO ,IXS10 ,IXS16 , IXS20 ,
41 5 IS_WRITTEN_SKIN ,H3D_PART,INFO1 ,KEYWORD ,NSKIN ,
42 6 IAD_ELEM ,FR_ELEM , WEIGHT , TAG_SKINS6,
54#include "implicit_f.inc"
66 . skin_scalar(*),pm(npropm,*), x(3,*),tf(*)
67 INTEGER IPARG(NPARG,*),
68 . IXS(NIXS,*),IPARTS(*),
69 . IXS10(6,*) ,IXS16(8,*) ,IXS20(
71 . h3d_part(*),info1,nskin,tag_skins6(*),iad_elem(2,*),fr_elem(*),weight(*)
72 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
73 CHARACTER(LEN=NCHARLINE100)::KEYWORD
74 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
78 INTEGER I,I1,II,J,LENR,NEL,,N
81 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAGPS,TAG_SKIN_ND
83 . ,
DIMENSION(:,:),
ALLOCATABLE :: aflu, vflu,t6gps
84 INTEGER FACES(4,6),NS,K1,PWR(7),LL
85 DATA pwr/1,2,4,8,16,32,64/
94 ALLOCATE(aflu(3,numnod),vflu(3,numnod),t6gps(6,numnod))
95 ALLOCATE(itagps(numnod),tag_skin_nd(numnod))
105 IF(mod(ll,pwr(jj+1))/pwr(jj) /= 0)cycle
107 ns=ixs(faces(k1,jj)+1,i)
112 IF (keyword ==
'FLDZ/OUTER' .OR. keyword ==
'FLDF/OUTER')
THEN
114 . ixs ,ixs10 ,ixs16 ,ixs20 ,x ,
115 . itagps ,pm ,tag_skin_nd )
117 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
125 IF (itagps(n)>0) t6gps(1:3,n)=vflu(1:3,n)/itagps(n)
129 IF (itagps(n)>0) t6gps(4:6,n)=half*aflu(1:3,n)/itagps(n)
134 . skin_scalar,tag_skins6,t6gps,x ,
135 . npf,tf,h3d_part,is_written_skin,
136 . keyword,nskin,mat_param)
138 DEALLOCATE(aflu,vflu,t6gps,itagps,tag_skin_nd)
151 1 NEL ,NUPARAM ,NFUNC ,IFUNC ,
152 2 NPF ,TF ,UPARAM ,EPS3 ,FLD_IDX ,
153 3 NIPARAM ,IPARAM ,PLA )
159#include "implicit_f.inc"
176 INTEGER,
INTENT(IN) :: NEL,NUPARAM,NFUNC,NIPARAM
177 INTEGER ,
DIMENSION(NFUNC) :: IFUNC
178 INTEGER,
DIMENSION(NIPARAM),
INTENT(IN) :: IPARAM
179 my_real ,
DIMENSION(3,NEL),
INTENT(IN) :: EPS3
180 my_real,
DIMENSION(NUPARAM) :: UPARAM
181 my_real ,
DIMENSION(NEL),
INTENT(IN) :: PLA
185 my_real ,
DIMENSION(NEL),
INTENT(INOUT) :: fld_idx
190 my_real FINTER , FINTERFLD ,TF(*)
202 INTEGER :: I,II,J,IENG,LENF,NINDX,IMARGIN
203 my_real :: RANI,R1,R2,,S2,SS,Q,DYDX,E12,FACT_MARGIN,FACT_LOOSEMETAL
204 my_real ,
ALLOCATABLE,
DIMENSION(:) ::
205 my_real ,
DIMENSION(NEL) :: EMAJ,EMIN,EM,BETA
209 FACT_MARGIN = uparam(1)
211 fact_loosemetal = uparam(4)
221 s1 = half*(eps3(1,i) + eps3(2,i))
222 s2 = half*(eps3(1,i) - eps3(2,i))
223 q = sqrt(s2**2 + e12**2)
226 IF (emin(i) >= emaj(i))
THEN
231 beta(i) = emin(i)/
max(emaj(i),em20)
240 lenf = npf(ifunc(1)+ 1) - npf(ifunc(1))
243 xf(i) = log(tf(ii + i-1) + one)
247 em(i) = finterfld(emin(i),lenf,xf)
255 em(i) = finter(ifunc(1),emin(i),npf,tf,dydx)
258 ELSEIF (ieng == 2)
THEN
260 em(i) = finter(ifunc(1),beta(i),npf,tf,dydx
272 IF (imargin == 3)
THEN
274 IF (emaj(i) >= em(i))
THEN
276 ELSEIF (emaj(i) >= em(i)*(one - fact_margin))
THEN
278 ELSEIF (emaj(i)**2 + emin(i)**2 < r1**2)
THEN
280 ELSEIF (emaj(i) >= abs(emin(i)))
THEN
282 ELSEIF (emaj(i) >= r2*abs(emin(i)))
THEN
290 IF (emaj(i) >= em(i))
THEN
292 ELSEIF (emaj(i) >= em(i) - fact_margin)
THEN
294 ELSEIF (emaj(i)**2 + emin(i)**2 < r1**2)
THEN
296 ELSEIF (emaj(i) >= abs(emin(i)))
THEN
298 ELSEIF (emaj(i) >= r2*abs(emin(i)))
THEN
306 IF (imargin == 3)
THEN
308 IF (pla(i) >= em(i)
THEN
310 ELSEIF (pla(i) >= em(i)*(one - fact_margin))
THEN
312 ELSEIF (pla(i)**2 + beta(i)**2 < r1**2)
THEN
314 ELSEIF (pla(i) >= abs(beta(i)))
THEN
316 ELSEIF (pla(i) >= r2*abs(beta(i)))
THEN
324 IF (pla(i) >= em(i))
THEN
326 ELSEIF (pla(i) >= em(i) - fact_margin)
THEN
328 ELSEIF (pla(i)**2 + beta(i)**2 < r1**2)
THEN
330 ELSEIF (pla(i) >= abs(beta(i)))
THEN
332 ELSEIF (pla(i) >= r2*abs(beta(i)))
THEN
352 1 NEL ,NUPARAM ,NFUNC ,IFUNC ,
353 2 NPF ,TF ,UPARAM ,EPS3 ,DAM,
354 3 NIPARAM ,IPARAM ,PLA )
360#include "implicit_f.inc"
380 INTEGER,
INTENT(IN) :: NEL,NUPARAM,NFUNC
381 INTEGER ,
DIMENSION(NFUNC) :: IFUNC
382 INTEGER,
DIMENSION(NIPARAM),
INTENT(IN) ::
383 my_real ,
DIMENSION(3,NEL),
INTENT(IN) :: EPS3
384 my_real,
DIMENSION(NUPARAM) :: UPARAM
385 my_real ,
DIMENSION(NEL),
INTENT(IN) :: PLA
389 my_real ,
DIMENSION(NEL),
INTENT(OUT) :: DAM
394 my_real finter , finterfld ,tf(*)
406 INTEGER :: I,II,J,IENG,LENF,NINDX,IMARGIN
407 my_real :: RANI,R1,R2,S1,S2,SS,Q,DYDX,E12,FACT_MARGIN,FACT_LOOSEMETAL
408 my_real ,
ALLOCATABLE,
DIMENSION(:) :: XF
409 my_real ,
DIMENSION(NEL) :: EMAJ,EMIN,EM,BETA
413 FACT_MARGIN = uparam(1)
415 fact_loosemetal = uparam(4)
425 s1 = half*(eps3(1,i) + eps3(2,i))
426 s2 = half*(eps3(1,i) - eps3(2,i))
427 q = sqrt(s2**2 + e12**2)
430 IF (emin(i) >= emaj(i))
THEN
435 beta(i) = emin(i)/
max(emaj(i),em20)
444 lenf = npf(ifunc(1)+ 1) - npf(ifunc(1))
447 xf(i) = log(tf(ii + i-1) + one)
451 em(i) = finterfld(emin(i),lenf,xf)
461 em(i) = finter(ifunc(1),emin(i),npf,tf,dydx)
462 dam(i) = emaj(i) / em(i)
465 ELSEIF (ieng == 2)
THEN
467 em(i) = finter(ifunc(1),beta(i),npf,tf,dydx)
468 dam(i) = pla(i) / em(i)
subroutine h3d_sol_skin_scalar1(elbuf_tab, iparg, iparts, ixs, ixs10, skin_scalar, tag_skins6, t6gps, x, npf, tf, h3d_part, is_written_skin, keyword, nskin, mat_param)
subroutine h3d_sol_skin_scalar(elbuf_tab, skin_scalar, iparg, ixs, x, pm, iparts, igeo, ixs10, ixs16, ixs20, is_written_skin, h3d_part, info1, keyword, nskin, iad_elem, fr_elem, weight, tag_skins6, npf, tf, mat_param)
subroutine gpsstrain_skin(elbuf_tab, func1, func2, iparg, ixs, ixs10, ixs16, ixs20, x, itagps, pm, tag_skin_nd)