OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
anioffc_crk.F File Reference
#include "implicit_f.inc"
#include "param_c.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com_xfem1.inc"
#include "scr17_c.inc"
#include "task_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine anioffc_crk (xfem_tab, iparg, ipart, ipartc, iparttg, ioff, el2fa, nbf, nbf_l, iad_crkg, iel_crk, indx_crk)

Function/Subroutine Documentation

◆ anioffc_crk()

subroutine anioffc_crk ( type (elbuf_struct_), dimension(ngroup,nxel), target xfem_tab,
integer, dimension(nparg,*) iparg,
integer, dimension(lipart1,*) ipart,
integer, dimension(*) ipartc,
integer, dimension(*) iparttg,
integer, dimension(*) ioff,
integer, dimension(*) el2fa,
integer nbf,
integer nbf_l,
integer, dimension(nspmd,*) iad_crkg,
integer, dimension(*) iel_crk,
integer, dimension(*) indx_crk )

Definition at line 35 of file anioffc_crk.F.

39
40C-----------------------------------------------
41C M o d u l e s
42C-----------------------------------------------
44 USE elbufdef_mod
45 use my_alloc_mod
46C-----------------------------------------------
47C I m p l i c i t T y p e s
48C-----------------------------------------------
49#include "implicit_f.inc"
50C-----------------------------------------------
51C C o m m o n B l o c k s
52C-----------------------------------------------
53#include "param_c.inc"
54#include "com01_c.inc"
55#include "com04_c.inc"
56#include "com_xfem1.inc"
57#include "scr17_c.inc"
58#include "task_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER IPARG(NPARG,*),EL2FA(*),NBF,IOFF(*),IEL_CRK(*),INDX_CRK(*),
63 . NBF_L,NBPART, IAD_CRKG(NSPMD,*),
64 . IPART(LIPART1,*),IPARTC(*),IPARTTG(*)
65 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP,NXEL), TARGET :: XFEM_TAB
66C-----------------------------------------------
67C L o c a l V a r i a b l e s
68C-----------------------------------------------
69 INTEGER I,NG,NEL,NFT,ITY,LFT,LLT,N,ILEV,MLW,N_FA,IXFEM,NI,NLAY,
70 . ILAY,IXEL,CRKS,NEL_CRK,RBUF,ELCRK
71 INTEGER IE(NCRKPART),NELCRK(NCRKPART)
72 INTEGER,DIMENSION(:),ALLOCATABLE::IOFFBUF
73
74 my_real offg
75 my_real, DIMENSION(:) ,POINTER :: xoff
76C=======================================================================
77 CALL my_alloc(ioffbuf,nbf_l)
78 nel_crk = 0
79C
80 DO crks = 1,ncrkpart
81 ilev = indx_crk(crks)
82 nelcrk(crks) = nel_crk
83 nel_crk = nel_crk + crkshell(ilev)%CRKNUMSHELL
84 ie(ilev) = 0
85 ENDDO
86C
87 DO ng=1,ngroup
88 mlw =iparg(1,ng)
89 nel =iparg(2,ng)
90 ity =iparg(5,ng)
91 nft =iparg(3,ng)
92 ixfem =iparg(54,ng)
93 lft=1
94 llt=nel
95 IF (ixfem == 0) cycle
96C
97 IF (ity == 3) THEN
98 ni = nft
99 ELSE
100 ni = nft + numelc
101 ENDIF
102C-----------------------------------------
103C LOOP OVER PHANTOM ELEMENTS
104C-----------------------------------------
105 DO ixel=1,nxel
106 nlay = xfem_tab(ng,ixel)%NLAY
107 DO ilay=1,nlay
108C---
109 ilev = nxel*(ilay-1) + ixel
110 n_fa = nelcrk(ilev)
111C---
112 IF (nlay > 1) THEN
113 xoff => xfem_tab(ng,ixel)%BUFLY(ilay)%LBUF(1,1,1)%OFF
114 ELSEIF (nlay == 1) THEN
115 xoff => xfem_tab(ng,ixel)%GBUF%OFF
116 ENDIF
117c---
118 IF (ity == 3) THEN
119c-- - SH - 4N
120 IF (mlw == 0 .OR. mlw == 13) THEN
121 DO i=lft,llt
122 n = i + ni
123 IF (iel_crk(n) > 0) THEN
124 ie(ilev) = ie(ilev) + 1
125 ioff(el2fa(n_fa+ie(ilev))) = 1
126 ENDIF
127 ENDDO
128 ELSE
129 DO i=lft,llt
130 n = i + ni
131 IF (iel_crk(n) > 0) THEN
132 offg = xoff(i)
133 ie(ilev) = ie(ilev) + 1
134 ioff(el2fa(n_fa+ie(ilev))) = nint(min(offg,one))
135 ENDIF
136 ENDDO
137 ENDIF ! IF (MLW == 0 .OR. MLW == 13)
138c---
139 ELSEIF (ity == 7) THEN
140c--- SH - 3N
141 IF (mlw == 0 .OR. mlw == 13) THEN
142 DO i=lft,llt
143 n = i + ni
144 IF (iel_crk(n) > 0) THEN
145 ie(ilev) = ie(ilev) + 1
146 ioff(el2fa(n_fa+ie(ilev))) = 1
147 ENDIF
148 ENDDO
149 ELSE
150 DO i=lft,llt
151 n = i + ni
152 IF (iel_crk(n) > 0) THEN
153 offg = xoff(i)
154 ie(ilev) = ie(ilev) + 1
155 ioff(el2fa(n_fa+ie(ilev)))=nint(min(offg,one))
156 ENDIF
157 ENDDO
158 ENDIF ! IF (MLW == 0 .OR. MLW == 13)
159 ENDIF ! IF (ITY == 3)
160 ENDDO ! DO ILAY=1,NLAY
161 ENDDO ! DO IXEL=1,NXEL
162 ENDDO ! DO NG=1,NGROUP
163C-----------------------------------------------
164 IF (nspmd==1) THEN
165 CALL write_c_c(ioff,nbf)
166 ELSE
167 DO i = 1,nbf_l
168 ioffbuf(i) = ioff(i)
169 ENDDO
170C
171 IF (ispmd == 0) THEN
172 rbuf = nbf
173 CALL spmd_iget_partn(1,nbf_l,ioffbuf,ncrkpart,
174 . iad_crkg,rbuf,2)
175 ELSE
176 rbuf = 1
177 CALL spmd_iget_partn(1,nbf_l,ioffbuf,ncrkpart,
178 . iad_crkg,rbuf,2)
179 END IF
180 ENDIF
181C-----------
182 DEALLOCATE(ioffbuf)
183 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
type(xfem_shell_), dimension(:), allocatable crkshell
subroutine spmd_iget_partn(size, nbf_l, np, nbpart, iadg, srbuf, iflag)
void write_c_c(int *w, int *len)