OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
smallgeo3.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!|| smallgeo3 ../engine/source/elements/solid/solide/smallgeo3.F
25!||--- called by ------------------------------------------------------
26!|| s10forc3 ../engine/source/elements/solid/solide10/s10forc3.F
27!|| s4forc3 ../engine/source/elements/solid/solide4/s4forc3.F
28!|| s8eforc3 ../engine/source/elements/solid/solide8e/s8eforc3.F
29!|| s8zforc3 ../engine/source/elements/solid/solide8z/s8zforc3.F
30!|| sforc3 ../engine/source/elements/solid/solide/sforc3.F
31!|| szforc3 ../engine/source/elements/solid/solidez/szforc3.F
32!||--- calls -----------------------------------------------------
33!|| ancmsg ../engine/source/output/message/message.F
34!||--- uses -----------------------------------------------------
35!|| dt_mod ../engine/source/modules/dt_mod.F
36!|| message_mod ../engine/share/message_module/message_mod.F
37!||====================================================================
38 SUBROUTINE smallgeo3(
39 1 NGL, OFFG, VOLG, DELTAX,
40 2 VOLG0, ITET, NEL, ISMSTR,DT )
41C-----------------------------------------------
42C M o d u l e s
43C-----------------------------------------------
44 USE message_mod
45 USE dt_mod
46C-----------------------------------------------
47C I m p l i c i t T y p e s
48C-----------------------------------------------
49#include "implicit_f.inc"
50#include "mvsiz_p.inc"
51#include "comlock.inc"
52C-----------------------------------------------
53C C o m m o n B l o c k s
54C-----------------------------------------------
55#include "units_c.inc"
56C-----------------------------------------------
57C D u m m y A r g u m e n t s
58C-----------------------------------------------
59 INTEGER, INTENT(IN) :: NEL
60 INTEGER, INTENT(IN) :: ISMSTR
61 INTEGER ITET,NGL(*)
63 . offg(*),volg(*),deltax(*), volg0(*)
64 TYPE(dt_), INTENT(INOUT) :: DT
65C-----------------------------------------------
66C L o c a l V a r i a b l e s
67C-----------------------------------------------
68 INTEGER I,J,ICOUNT,LIST(MVSIZ)
69 my_real
70 . tet_colla(mvsiz),coef,def_v,al,min_aspect,min_defv
71C---------------------------------------------
72 min_aspect = dt%BRICK_CST_COL_MIN
73 min_defv = dt%BRICK_CST_DEFV_MIN
74C-
75 IF(min_aspect==zero.AND.min_defv==zero) RETURN
76 IF(ismstr/=2.AND.ismstr/=12) RETURN
77 coef = one
78 IF (itet >0) coef = one/1.24/sqr3
79C
80 IF (min_defv >zero) THEN
81 DO i=1,nel
82 IF (offg(i)>one.OR.offg(i)==zero) cycle
83 def_v = volg(i)/volg0(i)
84 IF (def_v < min_defv) THEN
85 offg(i) = two
86#include "lockon.inc"
87 CALL ancmsg(msgid=267,anmode=aninfo,
88 . i1=ngl(i),
89 . r1=def_v )
90#include "lockoff.inc"
91 END IF
92 END DO
93 END IF !(MIN_DEFV)>ZERO) THEN
94C
95 IF (min_aspect>zero) THEN
96 icount = 0
97 DO i=1,nel
98 IF (offg(i)>one.OR.offg(i)==zero) cycle
99c AL = VOLG(I)**(1.0D0/3.0D0)! EXP(THIRD*LOG(VOLG(I)))
100c TET_COLLA(I)= COEF* (DELTAX(I)/AL)**(3.0D0/2.0D0)!COEF*EXP(THREE_HALF*LOG(DELTAX(I)/AL))
101 tet_colla(i) = coef * sqrt(deltax(i)**3 / volg(i))
102 IF (tet_colla(i) < min_aspect) THEN
103 offg(i) = two
104 icount=icount+1
105 list(icount)=i
106 END IF
107 END DO
108 IF (icount > 0) THEN
109#include "lockon.inc"
110 WRITE(iout,1000)
111 WRITE(istdo,1000)
112 DO j=1,icount
113 i=list(j)
114 WRITE(iout,'(6X,I10,1PG20.13)')ngl(i),tet_colla(i)
115 WRITE(istdo,'(6X,I10,1PG20.13)')ngl(i),tet_colla(i)
116 ENDDO
117 WRITE(iout,*)
118 WRITE(istdo,*)
119#include "lockoff.inc"
120 END IF !(ICOUNT > 0) THEN
121 END IF !(MIN_ASPECT)>ZERO) THEN
122C
123 RETURN
124 1000 FORMAT(/
125 . 'THE FOLLOWING ELEMENTS WILL BE SWITCHED TO SMALL STRAIN DUE TO BAD ASPECT RATIO' /)
126 END
#define my_real
Definition cppsort.cpp:32
subroutine smallgeo3(ngl, offg, volg, deltax, volg0, itet, nel, ismstr, dt)
Definition smallgeo3.F:41
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889