OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
gravit_imp.F File Reference
#include "implicit_f.inc"
#include "comlock.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com08_c.inc"
#include "task_c.inc"
#include "param_c.inc"
#include "vectorize.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine gravit_imp (igrv, agrv, npc, tf, a, v, x, skew, ms, wfextt, nsensor, sensor_tab, weight, ib, itask, nrbyac, irbyac, npby, rby, python)

Function/Subroutine Documentation

◆ gravit_imp()

subroutine gravit_imp ( integer, dimension(nigrv,*) igrv,
agrv,
integer, dimension(*) npc,
tf,
a,
v,
x,
skew,
ms,
wfextt,
integer, intent(in) nsensor,
type (sensor_str_), dimension(nsensor), intent(in) sensor_tab,
integer, dimension(*) weight,
integer, dimension(*) ib,
integer itask,
integer nrbyac,
integer, dimension(*) irbyac,
integer, dimension(nnpby,*) npby,
rby,
type(python_), intent(inout) python )

Definition at line 38 of file gravit_imp.F.

42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE sensor_mod
46 USE python_funct_mod
47 USE finter_mixed_mod
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52#include "comlock.inc"
53C-----------------------------------------------
54C C o m m o n B l o c k s
55C-----------------------------------------------
56#include "com01_c.inc"
57#include "com04_c.inc"
58#include "com08_c.inc"
59#include "task_c.inc"
60#include "param_c.inc"
61C-----------------------------------------------
62C D u m m y A r g u m e n t s
63C-----------------------------------------------
64 INTEGER ,INTENT(IN) :: NSENSOR
65 INTEGER NPC(*)
66 INTEGER IGRV(NIGRV,*),IB(*)
67 INTEGER WEIGHT(*),ITASK,NRBYAC,IRBYAC(*),NPBY(NNPBY,*)
68C REAL
70 . agrv(lfacgrv,*), tf(*), a(3,*), v(3,*), ms(*),
71 . x(3,*), skew(lskew,*), wfextt, rby(nrby,*)
72 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
73 TYPE(PYTHON_), INTENT(INOUT) :: PYTHON
74C-----------------------------------------------
75C L o c a l V a r i a b l e s
76C-----------------------------------------------
77 INTEGER NL, N1, ISK, N2, IFUNC, K1, K2, K3, ISENS,K,NN, IAD,J, PROC, IADF, IADL, ISMOOTH
78 my_real axi, a0, aa, vv, dydx, ts,gama, ma
79 my_real ms0(numnod)
80 my_real finter,finter_smooth
81 EXTERNAL finter,finter_smooth
82C-----------------------------------------------
83 wfextt=zero
84 DO nl=1,numnod
85 ms0(nl) = ms(nl)
86 ENDDO
87 DO nl=1,nrbyac
88 k=irbyac(nl)
89 nn=npby(1,k)
90 ms0(nn) = rby(15,k)
91 ENDDO
92
93 DO nl=1,ngrav
94 nn=igrv(1,nl)
95 isk=igrv(2,nl)/10
96 n2=igrv(2,nl)-10*isk
97 ifunc=igrv(3,nl)
98 iad=igrv(4,nl)
99 ismooth = 0
100 IF (ifunc > 0) ismooth = npc(2*nfunct+ifunc+1)
101C-------only for Itask=0 first-----
102 iadf = iad+itask*nn
103 iadl = iad-1+(itask+1)*nn
104 isens=0
105 DO k=1,nsensor
106 IF(igrv(6,nl)== sensor_tab(k)%SENS_ID) isens=k
107 ENDDO
108 IF(isens==0)THEN
109 ts=tt
110 ELSE
111 ts = tt - sensor_tab(isens)%TSTART
112 IF(ts<0.0)cycle
113 ENDIF
114
115 IF (ifunc > 0) THEN
116 IF (ismooth <= 0) THEN
117 a0 = agrv(1,nl)*finter_mixed(python,nfunct,ifunc,(ts-dt1)*agrv(2,nl),npc,tf)
118 gama = agrv(1,nl)*finter_mixed(python,nfunct,ifunc,ts*agrv(2,nl),npc,tf)
119 ELSE
120 a0 = agrv(1,nl)*finter_smooth(ifunc,(ts-dt1)*agrv(2,nl),npc,tf,dydx)
121 gama = agrv(1,nl)*finter_smooth(ifunc,ts*agrv(2,nl),npc,tf,dydx)
122 ENDIF
123 ELSE
124 a0 = agrv(1,nl)
125 gama = agrv(1,nl)
126 ENDIF
127C
128 proc = ispmd + 1
129 aa = gama
130 IF(n2d==1.AND.isk<=1)THEN
131!#include "vectorize.inc"
132 DO j=iad,iad+nn-1
133 n1=iabs(ib(j))
134 axi=x(2,n1)
135 ma=aa*ms0(n1)
136 a(n2,n1)=a(n2,n1)+ma
137 IF(ib(j)>0) wfextt=wfextt+half*(a0+aa)*ms(n1)*v(n2,n1)*axi*weight(n1)
138 ENDDO
139 ELSEIF(n2d==1.AND.isk>1)THEN
140 k1=3*n2-2
141 k2=3*n2-1
142 k3=3*n2
143!#include "vectorize.inc"
144 DO j=iad,iad+nn-1
145 n1=iabs(ib(j))
146 axi=x(2,n1)
147 vv = skew(k1,isk)*v(1,n1)+skew(k2,isk)*v(2,n1)+skew(k3,isk)*v(3,n1)
148 ma=aa*ms0(n1)
149 a(1,n1)=a(1,n1)+skew(k1,isk)*ma
150 a(2,n1)=a(2,n1)+skew(k2,isk)*ma
151 a(3,n1)=a(3,n1)+skew(k3,isk)*ma
152 IF(ib(j)>0) wfextt=wfextt+half*(a0+aa)*ms(n1)*vv*axi*weight(n1)
153 ENDDO
154 ELSEIF(isk<=1)THEN
155!#include "vectorize.inc"
156 DO j=iad,iad+nn-1
157 n1=iabs(ib(j))
158 ma=aa*ms0(n1)
159 a(n2,n1)=a(n2,n1)+ma
160 IF(ib(j)>0) wfextt=wfextt+half*(a0+aa)*ms(n1)*v(n2,n1)*weight(n1)
161 ENDDO
162 ELSE
163 k1=3*n2-2
164 k2=3*n2-1
165 k3=3*n2
166#include "vectorize.inc"
167 DO j=iad,iad+nn-1
168 n1=iabs(ib(j))
169 ma=aa*ms0(n1)
170 vv = skew(k1,isk)*v(1,n1)+skew(k2,isk)*v(2,n1)+skew(k3,isk)*v(3,n1)
171 a(1,n1)=a(1,n1)+skew(k1,isk)*ma
172 a(2,n1)=a(2,n1)+skew(k2,isk)*ma
173 a(3,n1)=a(3,n1)+skew(k3,isk)*ma
174 IF(ib(j)>0) wfextt=wfextt+half*(a0+aa)*ms(n1)*vv*weight(n1)
175 ENDDO
176 ENDIF
177 ENDDO !next NL
178
179 RETURN
#define my_real
Definition cppsort.cpp:32
character *2 function nl()
Definition message.F:2354