OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
deltax22.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| deltax22 ../engine/source/interfaces/int22/deltax22.F
25!||--- called by ------------------------------------------------------
26!|| sforc3 ../engine/source/elements/solid/solide/sforc3.F
27!||--- uses -----------------------------------------------------
28!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
29!|| i22bufbric_mod ../common_source/modules/interfaces/cut-cell-search_mod.F
30!|| i22tri_mod ../common_source/modules/interfaces/cut-cell-search_mod.F
31!||====================================================================
32 SUBROUTINE deltax22(
33 1 VOL, VEUL, VOLN, DELTAX,
34 2 IAD22, IXS, LFT, LLT,
35 3 JALE, JEUL)
36C-----------------------------------------------
37C D e s c r i p t i o n
38C-----------------------------------------------
39C Interface Type22 (/INTER/TYPE22) is an FSI coupling method based on cut cell method.
40C This experimental cut cell method is not completed, abandoned, and is not an official option.
41C
42C this subroutines update VOLN for cut cells.
43C Main cells have extended values of volume due
44C to secnd cell merging. This extension data is
45C stored in cut cell buffer and is now used here
46C to update VOLN(*)
47C-----------------------------------------------
48C M o d u l e s
49C-----------------------------------------------
51 USE i22tri_mod
52 USE elbufdef_mod
53C-----------------------------------------------
54C I m p l i c i t T y p e s
55C-----------------------------------------------
56#include "implicit_f.inc"
57C-----------------------------------------------
58C C o m m o n B l o c k s
59C-----------------------------------------------
60#include "param_c.inc"
61#include "inter22.inc"
62C-----------------------------------------------
63C D u m m y A r g u m e n t s
64C-----------------------------------------------
65 INTEGER, INTENT(INOUT) :: LFT
66 INTEGER, INTENT(INOUT) :: LLT
67 INTEGER, INTENT(INOUT) :: JALE
68 INTEGER, INTENT(INOUT) :: JEUL
69 my_real :: vol(*), veul(lveul,*), voln(*),deltax(*)
70 my_real :: iad22(*)
71 INTEGER :: IXS(NIXS,*)
72C-----------------------------------------------
73C L o c a l V a r i a b l e s
74C-----------------------------------------------
75 INTEGER :: I, II, IB, NCELL, IPOS, MCELL, NIN , NSecnds, IBV, ICELLv, NumSecnd,ISECND,NBCUT,K
76 my_real :: VAR, AREAM, VOLM, VOLsecnds, FACE0, FACE0M, VOLMAST
77 TYPE(POLY_ENTITY),DIMENSION(:), POINTER :: pIsMain
78C-----------------------------------------------
79C P r e - C o n d i t i o n s
80C-----------------------------------------------
81 IF(int22==0)RETURN
82C-----------------------------------------------
83C S o u r c e L i n e s
84C-----------------------------------------------
85 nin = 1
86
87 IF(jeul+jale/=0)THEN
88 DO i=lft,llt
89
90 ib = nint(iad22(i))
91 IF(ib==0)cycle
92 ncell = brick_list(nin,ib)%NBCUT
93 pismain(1:9) => brick_list(nin,ib)%POLY(1:9)!%IsMain
94 mcell = brick_list(nin,ib)%MainID
95 IF(mcell == 0)THEN
96 deltax(i) = ep30 !don't take into account this time step, nothing is stored here since MCELL=0.
97 cycle
98 ENDIF
99
100 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
101 ! CHARACTERISTIC LENGTH !
102 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
103 nsecnds = brick_list(nin,ib)%SecndList%Num
104 volsecnds = sum(brick_list(nin,ib)%SecndList%VOL(1:nsecnds))
105 volm = brick_list(nin,ib)%Vnew_SCell
106 mcell = brick_list(nin,ib)%mainID
107 IF(mcell==0)mcell=1
108 volmast = brick_list(nin,ib)%POLY(mcell)%Vnew
109 nbcut = brick_list(nin,ib)%NBCUT
110 aream = maxval(brick_list(nin,ib)%POLY(mcell)%FACE(1:6)%Surf)
111 face0m = zero
112 DO k=1,nbcut
113 face0 = brick_list(nin,ib)%PCUT(k)%Scut(1)
114 face0m = max(face0m,face0)
115 ENDDO
116 aream = max(aream,face0m)
117
118 !---meth1:supercell dx with 50% of brick dx (smooth time step)
119 !DELTAX(I) = HALF * DELTAX(I)
120
121 !---meth2:supercell dx estimated with main cell dx (minorant)
122 !DELTAX(I) = VOLM/AREAM
123
124 !---meth3:isomorph supercell to equivalent brick(cube)
125 !DELTAX(I) = (VOLN(I))**THIRD
126
127 !---meth4:isomorph main cell only to equivalent brick(cube)
128 !DELTAX(I) = VOLM**THIRD
129
130 !---meth5: no specific treatment (FAST but only valid if time step scale factor <= 0.5 in engine file)
131 !DELTAX(I) = DELTAX(I)
132
133 !---meth6: use scale factor on solid element to compute target 0.5
134 !DELTAX(I) = DTFAC22*DELTAX(I)
135
136 !---meth7: Vol(main)/area_max
137 deltax(i) = volmast/aream
138
139 ENDDO
140 ENDIF
141
142C-----------------------------------------------
143 RETURN
144 END SUBROUTINE deltax22
#define my_real
Definition cppsort.cpp:32
subroutine deltax22(vol, veul, voln, deltax, iad22, ixs, lft, llt, jale, jeul)
Definition deltax22.F:36
#define max(a, b)
Definition macros.h:21
type(brick_entity), dimension(:,:), allocatable, target brick_list