OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
upenric1_n3.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "com04_c.inc"
#include "com_xfem1.inc"
#include "param_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine upenric1_n3 (iparg, ixtg, nft, jft, jlt, elcutc, iad_crktg, iel_crktg, inod_crk, nxlay, nodedge, enrtag, crkedge, xedge3n)

Function/Subroutine Documentation

◆ upenric1_n3()

subroutine upenric1_n3 ( integer, dimension(nparg,*) iparg,
integer, dimension(nixtg,*) ixtg,
integer nft,
integer jft,
integer jlt,
integer, dimension(2,*) elcutc,
integer, dimension(3,*) iad_crktg,
integer, dimension(*) iel_crktg,
integer, dimension(*) inod_crk,
integer nxlay,
integer, dimension(2,*) nodedge,
integer, dimension(numnod,*) enrtag,
type (xfem_edge_), dimension(*) crkedge,
integer, dimension(3,*) xedge3n )

Definition at line 31 of file upenric1_n3.F.

34C-----------------------------------------------
36C-----------------------------------------------
37C I m p l i c i t T y p e s
38C-----------------------------------------------
39#include "implicit_f.inc"
40C-----------------------------------------------
41C G l o b a l P a r a m e t e r s
42C-----------------------------------------------
43#include "mvsiz_p.inc"
44C-----------------------------------------------
45C C o m m o n B l o c k s
46C-----------------------------------------------
47#include "com04_c.inc"
48#include "com_xfem1.inc"
49#include "param_c.inc"
50C-----------------------------------------------
51C D u m m y A r g u m e n t s
52C-----------------------------------------------
53 INTEGER IPARG(NPARG,*),IXTG(NIXTG,*),NFT,JFT,JLT,NXLAY,
54 . ELCUTC(2,*),IAD_CRKTG(3,*),XEDGE3N(3,*),IEL_CRKTG(*),
55 . INOD_CRK(*),NODEDGE(2,*),ENRTAG(NUMNOD,*)
56 TYPE (XFEM_EDGE_) , DIMENSION(*) :: CRKEDGE
57C-----------------------------------------------
58C L o c a l V a r i a b l e s
59C-----------------------------------------------
60 INTEGER I,K,II,ELCRK,ILEV,LAYCUT,IECUT,ILAY,IXEL,
61 . IR,NELCRK,EDGE,IADC1,IADC2,IADC3,NOD1,NOD2,ELCRKTG,IED,
62 . IE10,IE20,IE1,IE2,K1,K2,EN1,EN2,EN3
63 INTEGER JCT(MVSIZ),ENR0(3),NS(3),D(3)
64 DATA d/2,3,1/
65C=======================================================================
66 ir = 0
67 DO i=jft,jlt
68 jct(i) = 0
69 IF (elcutc(1,i+nft) /= 0) THEN
70 ir = ir + 1
71 jct(ir) = i
72 ENDIF
73 ENDDO
74C---
75 nelcrk = ir
76 IF (nelcrk == 0) RETURN
77C---
78 DO ilay=1,nxlay
79 ii = nxel*(ilay-1)
80 DO ir=1,nelcrk
81 i = jct(ir)
82 elcrktg = iel_crktg(i+nft)
83 elcrk = elcrktg + ecrkxfec
84 laycut = crkedge(ilay)%LAYCUT(elcrk)
85 IF (laycut /= 0) THEN
86 iadc1 = iad_crktg(1,elcrktg)
87 iadc2 = iad_crktg(2,elcrktg)
88 iadc3 = iad_crktg(3,elcrktg)
89 ns(1) = ixtg(2,i+nft)
90 ns(2) = ixtg(3,i+nft)
91 ns(3) = ixtg(4,i+nft)
92c
93 DO ixel=1,nxel
94 ilev = ii+ixel
95 enr0(1) = 0
96 enr0(2) = 0
97 enr0(3) = 0
98 en1 = crklvset(ilev)%ENR0(1,iadc1)
99 en2 = crklvset(ilev)%ENR0(1,iadc2)
100 en3 = crklvset(ilev)%ENR0(1,iadc3)
101 IF (en1 /= 0) enr0(1) = en1
102 IF (en2 /= 0) enr0(2) = en2
103 IF (en3 /= 0) enr0(3) = en3
104c
105 DO k=1,3
106 edge = xedge3n(k,elcrktg)
107 ied = crkedge(ilay)%IEDGETG(k,elcrktg)
108 iecut = crkedge(ilay)%ICUTEDGE(edge)
109 ie1 = 0
110 ie2 = 0
111 IF (iecut == 3 .AND. ied > 0) THEN ! connection edge
112 nod1 = nodedge(1,edge)
113 nod2 = nodedge(2,edge)
114 ie10 = crkedge(ilay)%EDGEENR(1,edge)
115 ie20 = crkedge(ilay)%EDGEENR(2,edge)
116 IF (nod1 == ixtg(k+1,i+nft) .and.
117 . nod2 == ixtg(d(k)+1,i+nft)) THEN
118 k1 = k
119 k2 = d(k)
120 ie1 = enr0(k)
121 ie2 = enr0(d(k))
122 ELSE IF (nod2 == ixtg(k+1,i+nft) .and.
123 . nod1 == ixtg(d(k)+1,i+nft)) THEN
124 k1 = d(k)
125 k2 = k
126 ie1 = enr0(d(k))
127 ie2 = enr0(k)
128 ENDIF
129c
130c set ENRTAG for nodal enrichment update
131 IF(ie1 /= 0) enrtag(ns(k1),abs(ie1))
132 . = max(enrtag(ns(k1),abs(ie1)),ie10)
133 IF(ie2 /= 0) enrtag(ns(k2),abs(ie2))
134 . = max(enrtag(ns(k2),abs(ie2)),ie20)
135c
136 ENDIF ! IF(IECUT == 3)THEN
137 ENDDO ! DO K=1,3
138 ENDDO ! IXEL=1,NXEL
139 ENDIF ! IF(LAYCUT /= 0)THEN
140 ENDDO ! DO IR=1,NELCRK
141 ENDDO ! DO ILAY=1,NXLAY
142C-----------------------------------------------
143 RETURN
#define max(a, b)
Definition macros.h:21
type(xfem_lvset_), dimension(:), allocatable crklvset