OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
uaccess.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!|| uaccess_dum ../engine/source/user_interface/uaccess.F
25!||--- called by ------------------------------------------------------
26!|| radioss2 ../engine/source/engine/radioss2.F
27!||====================================================================
28 SUBROUTINE uaccess_dum(IERR)
29C-----------------------------------------------
30C I m p l i c i t T y p e s
31C-----------------------------------------------
32#include "implicit_f.inc"
33 INTEGER IERR
34 ierr=0
35 END
36!||====================================================================
37!|| get_u_cycle ../engine/source/user_interface/uaccess.F
38!||====================================================================
39 INTEGER FUNCTION get_u_cycle()
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C-----------------------------------------------
45C C o m m o n B l o c k s
46C-----------------------------------------------
47#include "com01_c.inc"
48C-----------------------------------------------
49 get_u_cycle = ncycle
50 RETURN
51 END
52#include "my_real.inc"
53!||====================================================================
54!|| get_u_time ../engine/source/user_interface/uaccess.F
55!||--- called by ------------------------------------------------------
56!|| ruser46 ../engine/source/elements/spring/ruser46.F
57!||====================================================================
58 my_real FUNCTION get_u_time()
59C-----------------------------------------------
60C I m p l i c i t T y p e s
61C-----------------------------------------------
62#include "implicit_f.inc"
63C-----------------------------------------------
64C C o m m o n B l o c k s
65C-----------------------------------------------
66#include "com08_c.inc"
67C-----------------------------------------------
68 get_u_time = tt
69 RETURN
70 END
71!||====================================================================
72!|| get_u_accel ../engine/source/user_interface/uaccess.F
73!||--- calls -----------------------------------------------------
74!|| get_var_user_f ../engine/source/user_interface/eng_callback_c.c
75!|| get_var_user_f_sp ../engine/source/user_interface/eng_callback_c.c
76!||====================================================================
77 INTEGER FUNCTION get_u_accel(NACC, AX,AY,AZ)
78C-----------------------------------------------
79C I m p l i c i t T y p e s
80C-----------------------------------------------
81#include "implicit_f.inc"
82C-----------------------------------------------
83C C o m m o n B l o c k s
84C-----------------------------------------------
85#include "scr05_c.inc"
86C-----------------------------------------------
87C D u m m y A r g u m e n t s
88C-----------------------------------------------
89 INTEGER nacc
90 my_real ax,ay,az
91C-----------------------------------------------
92C L o c a l V a r i a b l e s
93C-----------------------------------------------
94 INTEGER i, k, l, iacc,d1,d2,d3
95C-----------------------------------------------
96 IF (nacc<=0) THEN
97 ax = zero
98 ay = zero
99 az = zero
100 get_u_accel = -1
101 ELSE
102 l = (nacc-1)*25
103 d1 = l+20
104 d2 = l+21
105 d3 = l+22
106 IF (iresp == 1) THEN
107 CALL get_var_user_f_sp(12,d1,ax)
108 CALL get_var_user_f_sp(12,d2,ay)
109 CALL get_var_user_f_sp(12,d3,az)
110 ELSE
111 CALL get_var_user_f(12,d1,ax)
112 CALL get_var_user_f(12,d2,ay)
113 CALL get_var_user_f(12,d3,az)
114 ENDIF
115 get_u_accel = 0
116 ENDIF
117C
118 RETURN
119 END
120!||====================================================================
121!|| get_u_numacc ../engine/source/user_interface/uaccess.F
122!||--- calls -----------------------------------------------------
123!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
124!||====================================================================
125 INTEGER FUNCTION get_u_numacc(IDACC)
126C-----------------------------------------------
127C I m p l i c i t T y p e s
128C-----------------------------------------------
129#include "implicit_f.inc"
130C-----------------------------------------------
131C C o m m o n B l o c k s
132C-----------------------------------------------
133#include "com04_c.inc"
134C-----------------------------------------------
135C D u m m y A r g u m e n t s
136C-----------------------------------------------
137 INTEGER, INTENT(IN) :: idacc
138C-----------------------------------------------
139C L o c a l V a r i a b l e s
140C-----------------------------------------------
141 INTEGER depla,j,id
142C-----------------------------------------------
143C S o u r c e L i n e s
144C-----------------------------------------------
145 get_u_numacc = 0
146 IF(idacc<=0)THEN
147 RETURN
148 ENDIF
149C---
150 DO j=1,naccelm
151 depla = (j-1)*3+1
152 CALL get_var_user_i(5,depla,id)
153 IF(idacc==id)THEN
154 get_u_numacc = j
155 RETURN
156 ENDIF
157 ENDDO
158C---
159 RETURN
160 END
161!||====================================================================
162!|| get_u_numnod ../engine/source/user_interface/uaccess.F
163!||--- calls -----------------------------------------------------
164!|| ancmsg ../engine/source/output/message/message.F
165!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
166!||--- uses -----------------------------------------------------
167!|| message_mod ../engine/share/message_module/message_mod.F
168!||====================================================================
169 INTEGER FUNCTION get_u_numnod(IU)
170C-----------------------------------------------
171C M o d u l e s
172C-----------------------------------------------
173 USE message_mod
174C-----------------------------------------------
175C I m p l i c i t T y p e s
176C-----------------------------------------------
177#include "implicit_f.inc"
178C-----------------------------------------------
179C C o m m o n B l o c k s
180C-----------------------------------------------
181#include "com01_c.inc"
182#include "com04_c.inc"
183#include "warn_c.inc"
184C-----------------------------------------------
185C D u m m y A r g u m e n t s
186C-----------------------------------------------
187 INTEGER,INTENT(IN) :: iu
188C-----------------------------------------------
189C L o c a l V a r i a b l e s
190C-----------------------------------------------
191 INTEGER j, jinf, jsup, itab1, itab2
192 CHARACTER mess*40
193 DATA mess/'USER SENSOR '/
194C-----------------------------------------------
195C S o u r c e L i n e s
196C-----------------------------------------------
197 jinf=1
198 jsup=numnod
199 j=(jsup+jinf)/2
200 10 CALL get_var_user_i(13,j,itab1)
201 IF(jsup<=jinf.AND.(iu-itab1)/=0) THEN
202 IF(nspmd==1) THEN
203 CALL ancmsg(msgid=186,anmode=aninfo_blind,
204 . i1=iu,c1=mess)
205 ierr=ierr+1
206 END IF
207C in SPMD the value 0 does not indicate an error but the absence of the node on the proc
209 RETURN
210 ENDIF
211 IF((iu-itab1)==0)THEN
212C >CAS IU=TABM END OF THE SEARCH
213 CALL get_var_user_i(13,j+numnod,itab2)
214 get_u_numnod=itab2
215 RETURN
216 ELSE IF (iu-itab1<0) THEN
217C >CAS IU<TABM
218 jsup=j-1
219 ELSE
220C >CAS IU>TABM
221 jinf=j+1
222 ENDIF
223 j=(jsup+jinf)/2
224 GO TO 10
225C---
226 RETURN
227 END
228C
229!||====================================================================
230!|| get_u_nod_x ../engine/source/user_interface/uaccess.F
231!||--- calls -----------------------------------------------------
232!|| get_var_user_f ../engine/source/user_interface/eng_callback_c.c
233!|| get_var_user_f_sp ../engine/source/user_interface/eng_callback_c.c
234!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
235!|| spmd_glob_dsum ../engine/source/mpi/interfaces/spmd_th.F
236!|| spmd_rbcast ../engine/source/mpi/generic/spmd_rbcast.F
237!||====================================================================
238 INTEGER FUNCTION get_u_nod_x(NOD, X,Y,Z)
239C In SPMD, all procs must call this function
240C otherwise deadlock
241C-----------------------------------------------
242C I m p l i c i t T y p e s
243C-----------------------------------------------
244#include "implicit_f.inc"
245C-----------------------------------------------
246C C o m m o n B l o c k s
247C-----------------------------------------------
248#include "com01_c.inc"
249#include "scr05_c.inc"
250#include "userlib.inc"
251C-----------------------------------------------
252C D u m m y A r g u m e n t s
253C-----------------------------------------------
254 INTEGER,INTENT(IN) :: nod
255 my_real,INTENT(INOUT) :: x,y,z
256C-----------------------------------------------
257C L o c a l V a r i a b l e s
258C-----------------------------------------------
259 INTEGER l,d1,d2,d3, p
260 my_real bufs(6)
261C-----------------------------------------------
262C S o u r c e L i n e s
263C-----------------------------------------------
264 IF (nod>0) THEN
265 IF(nspmd>1) THEN
266C get_proc_user_f returns 1 if weight(nod) = 1, 0 otherwise
267C weight : pointeur 18 (cf resol.F)
268 CALL get_var_user_i(18,nod,p)
269 ELSE
270 p = 1
271 ENDIF
272 IF(p==1) THEN
273 l=(nod-1)*3
274 d1=l+1
275 d2=l+2
276 d3=l+3
277 IF (iresp == 1) THEN
278 CALL get_var_user_f_sp(14,d1,x)
279 CALL get_var_user_f_sp(14,d2,y)
280 CALL get_var_user_f_sp(14,d3,z)
281 ELSE
282 CALL get_var_user_f(14,d1,x)
283 CALL get_var_user_f(14,d2,y)
284 CALL get_var_user_f(14,d3,z)
285 ENDIF
286 ENDIF
287C
288C SPMD communication of the result to all procs
289C
290 IF(nspmd>1.AND.getunod_nocom==0) THEN
291 IF(p==1) THEN
292 bufs(1) = x
293 bufs(2) = y
294 bufs(3) = z
295 ELSE
296 bufs(1) = zero
297 bufs(2) = zero
298 bufs(3) = zero
299 ENDIF
300 CALL spmd_glob_dsum(bufs,3,bufs(4))
301 CALL spmd_rbcast(bufs,bufs,3,1,0,2)
302 x = bufs(1)
303 y = bufs(2)
304 z = bufs(3)
305 ENDIF
306C
307C Fin SPMD
308C
309 get_u_nod_x = 0
310 RETURN
311 ENDIF
312 get_u_nod_x = -1
313 x = zero
314 y = zero
315 z = zero
316C
317 RETURN
318 END
319!||====================================================================
320!|| get_u_nod_d ../engine/source/user_interface/uaccess.F
321!||--- calls -----------------------------------------------------
322!|| get_var_user_f ../engine/source/user_interface/eng_callback_c.c
323!|| get_var_user_f_sp ../engine/source/user_interface/eng_callback_c.c
324!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
325!|| spmd_glob_dsum ../engine/source/mpi/interfaces/spmd_th.F
326!|| spmd_rbcast ../engine/source/mpi/generic/spmd_rbcast.F
327!||====================================================================
328 INTEGER FUNCTION get_u_nod_d(NOD, DX,DY,DZ)
329C In SPMD, all procs must call this function
330C otherwise deadlock
331C-----------------------------------------------
332C I m p l i c i t T y p e s
333C-----------------------------------------------
334#include "implicit_f.inc"
335C-----------------------------------------------
336C C o m m o n B l o c k s
337C-----------------------------------------------
338#include "com01_c.inc"
339#include "scr05_c.inc"
340#include "userlib.inc"
341C-----------------------------------------------
342C D u m m y A r g u m e n t s
343C-----------------------------------------------
344 INTEGER,INTENT(IN) :: nod
345 my_real,INTENT(INOUT) :: dx,dy,dz
346C-----------------------------------------------
347C L o c a l V a r i a b l e s
348C-----------------------------------------------
349 INTEGER l,d1,d2,d3, p
350 my_real bufs(6)
351C-----------------------------------------------
352C S o u r c e L i n e s
353C-----------------------------------------------
354 IF (nod>0) THEN
355 IF(nspmd>1) THEN
356C get_proc_user_f returns 1 if weight(nod) = 1, 0 otherwise
357C weight : pointeur 18 (cf resol.F)
358 CALL get_var_user_i(18,nod,p)
359 ELSE
360 p = 1
361 ENDIF
362 IF(p==1) THEN
363 l=(nod-1)*3
364 d1=l+1
365 d2=l+2
366 d3=l+3
367 IF (iresp == 1) THEN
368 CALL get_var_user_f_sp(15,d1,dx)
369 CALL get_var_user_f_sp(15,d2,dy)
370 CALL get_var_user_f_sp(15,d3,dz)
371 ELSE
372 CALL get_var_user_f(15,d1,dx)
373 CALL get_var_user_f(15,d2,dy)
374 CALL get_var_user_f(15,d3,dz)
375 ENDIF
376 ENDIF
377C
378C SPMD communication of the result to all procs
379C
380 IF(nspmd>1.AND.getunod_nocom==0) THEN
381 IF(p==1) THEN
382 bufs(1) = dx
383 bufs(2) = dy
384 bufs(3) = dz
385 ELSE
386 bufs(1) = zero
387 bufs(2) = zero
388 bufs(3) = zero
389 ENDIF
390 CALL spmd_glob_dsum(bufs,3,bufs(4))
391 CALL spmd_rbcast(bufs,bufs,3,1,0,2)
392 dx = bufs(1)
393 dy = bufs(2)
394 dz = bufs(3)
395 ENDIF
396C
397C Fin SPMD
398C
399 get_u_nod_d= 0
400 RETURN
401 ENDIF
402 get_u_nod_d= -1
403 dx = zero
404 dy = zero
405 dz = zero
406C
407 RETURN
408 END
409!||====================================================================
410!|| get_u_nod_v ../engine/source/user_interface/uaccess.F
411!||--- calls -----------------------------------------------------
412!|| get_var_user_f ../engine/source/user_interface/eng_callback_c.c
413!|| get_var_user_f_sp ../engine/source/user_interface/eng_callback_c.c
414!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
415!|| spmd_glob_dsum ../engine/source/mpi/interfaces/spmd_th.F
416!|| spmd_rbcast ../engine/source/mpi/generic/spmd_rbcast.F
417!||====================================================================
418 INTEGER FUNCTION get_u_nod_v(NOD, VX,VY,VZ)
419C In SPMD, all procs must call this function
420C otherwise deadlock
421C-----------------------------------------------
422C I m p l i c i t T y p e s
423C-----------------------------------------------
424#include "implicit_f.inc"
425C-----------------------------------------------
426C C o m m o n B l o c k s
427C-----------------------------------------------
428#include "com01_c.inc"
429#include "scr05_c.inc"
430#include "userlib.inc"
431C-----------------------------------------------
432C D u m m y A r g u m e n t s
433C-----------------------------------------------
434 INTEGER nod
435 my_real
436 . vx,vy,vz
437C-----------------------------------------------
438C L o c a l V a r i a b l e s
439C-----------------------------------------------
440 INTEGER l,d1,d2,d3, p
441 my_real
442 . bufs(6)
443C-----------------------------------------------
444C S o u r c e L i n e s
445C-----------------------------------------------
446 IF (nod>0) THEN
447 IF(nspmd>1) THEN
448C get_proc_user_f returns 1 if weight(nod) = 1, 0 otherwise
449C weight : pointeur 18 (cf resol.F)
450 CALL get_var_user_i(18,nod,p)
451 ELSE
452 p = 1
453 ENDIF
454 IF(p==1) THEN
455 l=(nod-1)*3
456 d1=l+1
457 d2=l+2
458 d3=l+3
459 IF (iresp == 1) THEN
460 CALL get_var_user_f_sp(16,d1,vx)
461 CALL get_var_user_f_sp(16,d2,vy)
462 CALL get_var_user_f_sp(16,d3,vz)
463 ELSE
464 CALL get_var_user_f(16,d1,vx)
465 CALL get_var_user_f(16,d2,vy)
466 CALL get_var_user_f(16,d3,vz)
467 ENDIF
468C
469C SPMD communication of the result to all procs
470C
471 ENDIF
472 IF(nspmd>1.AND.getunod_nocom==0) THEN
473 IF(p==1) THEN
474 bufs(1) = vx
475 bufs(2) = vy
476 bufs(3) = vz
477 ELSE
478 bufs(1) = zero
479 bufs(2) = zero
480 bufs(3) = zero
481 ENDIF
482 CALL spmd_glob_dsum(bufs,3,bufs(4))
483 CALL spmd_rbcast(bufs,bufs,3,1,0,2)
484 vx = bufs(1)
485 vy = bufs(2)
486 vz = bufs(3)
487 ENDIF
488C
489C Fin SPMD
490C
491 get_u_nod_v= 0
492 RETURN
493 ENDIF
494 get_u_nod_v= -1
495 vx = zero
496 vy = zero
497 vz = zero
498C
499 RETURN
500 END
501!||====================================================================
502!|| get_u_nod_a ../engine/source/user_interface/uaccess.F
503!||--- calls -----------------------------------------------------
504!|| get_var_user_f ../engine/source/user_interface/eng_callback_c.c
505!|| get_var_user_f_sp ../engine/source/user_interface/eng_callback_c.c
506!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
507!|| spmd_glob_dsum ../engine/source/mpi/interfaces/spmd_th.F
508!|| spmd_rbcast ../engine/source/mpi/generic/spmd_rbcast.F
509!||====================================================================
510 INTEGER FUNCTION get_u_nod_a(NOD, AX,AY,AZ)
511C In SPMD, all procs must call this function
512C otherwise deadlock
513C-----------------------------------------------
514C I m p l i c i t T y p e s
515C-----------------------------------------------
516#include "implicit_f.inc"
517C-----------------------------------------------
518C C o m m o n B l o c k s
519C-----------------------------------------------
520#include "com01_c.inc"
521#include "scr05_c.inc"
522#include "userlib.inc"
523C-----------------------------------------------
524C D u m m y A r g u m e n t s
525C-----------------------------------------------
526 INTEGER nod
527 my_real ax,ay,az
528C-----------------------------------------------
529C L o c a l V a r i a b l e s
530C-----------------------------------------------
531 INTEGER l,d1,d2,d3, p
532 my_real bufs(6)
533C-----------------------------------------------
534C S o u r c e L i n e s
535C-----------------------------------------------
536 IF (nod>0) THEN
537 IF(nspmd>1) THEN
538C get_proc_user_f returns 1 if weight(nod) = 1, 0 otherwise
539C weight : pointeur 18 (cf resol.F)
540 CALL get_var_user_i(18,nod,p)
541 ELSE
542 p = 1
543 ENDIF
544 IF(p==1) THEN
545 l=(nod-1)*3
546 d1=l+1
547 d2=l+2
548 d3=l+3
549 IF (iresp == 1) THEN
550 CALL get_var_user_f_sp(17,d1,ax)
551 CALL get_var_user_f_sp(17,d2,ay)
552 CALL get_var_user_f_sp(17,d3,az)
553 ELSE
554 CALL get_var_user_f(17,d1,ax)
555 CALL get_var_user_f(17,d2,ay)
556 CALL get_var_user_f(17,d3,az)
557 ENDIF
558 ENDIF
559C
560C SPMD communication of the result to all procs
561C
562 IF(nspmd>1.AND.getunod_nocom==0) THEN
563 IF(p==1) THEN
564 bufs(1) = ax
565 bufs(2) = ay
566 bufs(3) = az
567 ELSE
568 bufs(1) = zero
569 bufs(2) = zero
570 bufs(3) = zero
571 ENDIF
572 CALL spmd_glob_dsum(bufs,3,bufs(4))
573 CALL spmd_rbcast(bufs,bufs,3,1,0,2)
574 ax = bufs(1)
575 ay = bufs(2)
576 az = bufs(3)
577 ENDIF
578C
579C Fin SPMD
580C
581 get_u_nod_a= 0
582 RETURN
583 ENDIF
584 get_u_nod_a= -1
585 ax = zero
586 ay = zero
587 az = zero
588C
589 RETURN
590 END
591
592!||====================================================================
593!|| get_u_skew ../engine/source/user_interface/uaccess.F
594!||--- called by ------------------------------------------------------
595!|| rskew33 ../engine/source/elements/joint/rskew33.F
596!||--- calls -----------------------------------------------------
597!|| get_array_user_f ../engine/source/user_interface/eng_callback_c.c
598!|| get_array_user_f_sp ../engine/source/user_interface/eng_callback_c.c
599!|| get_var_user_i ../engine/source/user_interface/eng_callback_c.c
600!||====================================================================
601 INTEGER FUNCTION get_u_skew(IDSKW,N1,N2,N3,VECT)
602C-----------------------------------------------
603C I m p l i c i t T y p e s
604C-----------------------------------------------
605#include "implicit_f.inc"
606C-----------------------------------------------
607C C o m m o n B l o c k s
608C-----------------------------------------------
609#include "com04_c.inc"
610#include "scr05_c.inc"
611#include "r4r8_p.inc"
612#include "param_c.inc"
613C-----------------------------------------------
614C D u m m y A r g u m e n t s
615C-----------------------------------------------
616 my_real,INTENT(IN) :: vect(lskew)
617 INTEGER,INTENT(IN) :: idskw,n1,n2,n3
618C-----------------------------------------------
619C L o c a l V a r i a b l e s
620C-----------------------------------------------
621 INTEGER i,id,depla
622C-----------------------------------------------
623C S o u r c e L i n e s
624C-----------------------------------------------
625C
626 get_u_skew = 0
627C
628 DO i=1,numskw
629 depla = 4+i*liskn
630 CALL get_var_user_i(9,depla,id)
631C
632 IF(id==idskw) THEN
633 get_u_skew = i
634C
635 CALL get_var_user_i(9,i+1 ,n1)
636 CALL get_var_user_i(9,i+2*2,n2)
637 CALL get_var_user_i(9,i+3*3,n3)
638C
639 depla = i*lskew+1
640 IF (iresp==1) THEN
641 CALL get_array_user_f_sp (10,depla,vect,lskew)
642 ELSE
643 CALL get_array_user_f (10,depla,vect,lskew)
644 ENDIF
645 RETURN
646C
647 ENDIF
648C
649 ENDDO
650 RETURN
651 END
653 . FUNCTION get_u_uvar(IEL,ILAYER,IVAR,NUVAR)
654C---------+---------+---+---+--------------------------------------------
655C This routine is called by SIGEPS29, SIGEPS30, SIGEPS31 ...
656C Gives access to user variables for all layers of the element
657C---------+---------+---+---+--------------------------------------------
658C
659C VAR | SIZE |TYP| | DEFINITION
660C---------+---------+---+---+--------------------------------------------
661C IEL | 1 | I | | ELEMENT NUMBER
662C ILAYER | 1 | I | | LAYER NUMBER
663C IVAR | 1 | I | | USER VARIABLE NUMBER
664C NUVAR | 1 | I | | NUMBER OF USER VARIABLES
665C---------+---------+---+---+--------------------------------------------
666C I m p l i c i t T y p e s
667C-----------------------------------------------
668#include "implicit_f.inc"
669C-----------------------------------------------
670C G l o b a l P a r a m e t e r s
671C-----------------------------------------------
672#include "mvsiz_p.inc"
673C-----------------------------------------------
674C C o m m o n B l o c k s
675C-----------------------------------------------
676#include "usrplas_c.inc"
677#include "units_c.inc"
678C-----------------------------------------------
679C D u m m y A r g u m e n t s
680C-----------------------------------------------
681 INTEGER iel,ilayer,ivar,nuvar
682C-----------------------------------------------
683C L o c a l V a r i a b l e s
684C-----------------------------------------------
685 INTEGER n
686C-----------------------------------------------
687C S o u r c e L i n e s
688C-----------------------------------------------
689 n = (ilayer-1)*nuvar+ivar
690 IF (n > 5000) THEN
691 n = 5000
692 WRITE(iout,*) 'USER VARIABLE ACCESS ERROR : BUFFER OVERFLOW'
693 ENDIF
694 get_u_uvar = uuvar(iel,n)
695C
696 RETURN
697 END
698!||====================================================================
699!|| set_spring_elnum ../engine/source/user_interface/uaccess.F
700!||--- called by ------------------------------------------------------
701!|| rforc3 ../engine/source/elements/spring/rforc3.F
702!||--- uses -----------------------------------------------------
703!|| element_mod ../common_source/modules/elements/element_mod.F90
704!||====================================================================
705 SUBROUTINE set_spring_elnum(JFT,JLT,IXR)
706 use element_mod , only : nixr
707C---------+---------+---+---+--------------------------------------------
708C Saves external spring number for local element group
709C---------+---------+---+---+--------------------------------------------
710C I m p l i c i t T y p e s
711C-----------------------------------------------
712#include "implicit_f.inc"
713C-----------------------------------------------
714C G l o b a l P a r a m e t e r s
715C-----------------------------------------------
716#include "mvsiz_p.inc"
717C-----------------------------------------------
718C C o m m o n B l o c k s
719C-----------------------------------------------
720#include "vec_spring_num.inc"
721C-----------------------------------------------
722C D u m m y A r g u m e n t s
723C-----------------------------------------------
724 INTEGER JFT,JLT
725 INTEGER IXR(NIXR,*)
726C-----------------------------------------------
727C L o c a l V a r i a b l e s
728C-----------------------------------------------
729 INTEGER I,ID
730C-----------------------------------------------
731C S o u r c e L i n e s
732C-----------------------------------------------
733 DO i=jft,jlt
734 spr_num(i) = ixr(nixr,i)
735 ENDDO
736 RETURN
737 END
738 integer
739 . FUNCTION get_spring_elnum(IEL)
740C---------+---------+---+---+--------------------------------------------
741C This routine is called by SIGEPS29, SIGEPS30, SIGEPS31 ...
742C Gives external element number
743C---------+---------+---+---+--------------------------------------------
744C I m p l i c i t T y p e s
745C-----------------------------------------------
746#include "implicit_f.inc"
747C-----------------------------------------------
748C G l o b a l P a r a m e t e r s
749C-----------------------------------------------
750#include "mvsiz_p.inc"
751C-----------------------------------------------
752C C o m m o n B l o c k s
753C-----------------------------------------------
754#include "vec_spring_num.inc"
755C-----------------------------------------------
756C D u m m y A r g u m e n t s
757C-----------------------------------------------
758 INTEGER iel,num
759C-----------------------------------------------
760C S o u r c e L i n e s
761C-----------------------------------------------
762 num = nint(spr_num(iel))
763 get_spring_elnum = num
764 RETURN
765 END
766!||====================================================================
767!|| mat_solid_get_nod_x ../engine/source/user_interface/uaccess.F
768!||--- uses -----------------------------------------------------
769!|| element_mod ../common_source/modules/elements/element_mod.F90
770!|| restmod ../engine/share/modules/restart_mod.F
771!|| user_interface_mod ../engine/source/modules/user_interface_mod.F90
772!||====================================================================
773 SUBROUTINE mat_solid_get_nod_x(USER_X)
774C---------+---------+---+---+--------------------------------------------
775 USE restmod
776 USE user_interface_mod
777 use element_mod , only : nixs
778C-----------------------------------------------
779C I m p l i c i t T y p e s
780C-----------------------------------------------
781#include "implicit_f.inc"
782C-----------------------------------------------
783C C o m m o n B l o c k s
784C-----------------------------------------------
785#include "vect01_c.inc"
786C-----------------------------------------------
787C D u m m y A r g u m e n t s
788C-----------------------------------------------
789 my_real user_x(llt,8,3)
790C-----------------------------------------------
791C L o c a l V a r i a b l e s
792C-----------------------------------------------
793 INTEGER ND1,ND2,ND3,ND4,ND5,ND6,ND7,ND8,ELEM,I
794C-----------------------------------------------
795C S o u r c e L i n e s
796C-----------------------------------------------
797 DO i=1,llt
798 elem=nft+i
799 nd1=ixs(nixs*(elem-1)+2)
800 nd2=ixs(nixs*(elem-1)+3)
801 nd3=ixs(nixs*(elem-1)+4)
802 nd4=ixs(nixs*(elem-1)+5)
803 nd5=ixs(nixs*(elem-1)+6)
804 nd6=ixs(nixs*(elem-1)+7)
805 nd7=ixs(nixs*(elem-1)+8)
806 nd8=ixs(nixs*(elem-1)+9)
807C
808 IF(nd1 > 0)THEN
809 user_x(i,1,1)=user_interface_nodes%X(1,nd1)
810 user_x(i,1,2)=user_interface_nodes%X(2,nd1)
811 user_x(i,1,3)=user_interface_nodes%X(3,nd1)
812 ELSE
813 user_x(i,1,1)=zero
814 user_x(i,1,2)=zero
815 user_x(i,1,3)=zero
816 ENDIF
817C
818 IF(nd2 > 0)THEN
819 user_x(i,2,1)=user_interface_nodes%X(1,nd2)
820 user_x(i,2,2)=user_interface_nodes%X(2,nd2)
821 user_x(i,2,3)=user_interface_nodes%X(3,nd2)
822 ELSE
823 user_x(i,2,1)=zero
824 user_x(i,2,2)=zero
825 user_x(i,2,3)=zero
826 ENDIF
827C
828 IF(nd3 > 0)THEN
829 user_x(i,3,1)=user_interface_nodes%X(1,nd3)
830 user_x(i,3,2)=user_interface_nodes%X(2,nd3)
831 user_x(i,3,3)=user_interface_nodes%X(3,nd3)
832 ELSE
833 user_x(i,3,1)=zero
834 user_x(i,3,2)=zero
835 user_x(i,3,3)=zero
836 ENDIF
837C
838 IF(nd4 > 0)THEN
839 user_x(i,4,1)=user_interface_nodes%X(1,nd4)
840 user_x(i,4,2)=user_interface_nodes%X(2,nd4)
841 user_x(i,4,3)=user_interface_nodes%X(3,nd4)
842 ELSE
843 user_x(i,4,1)=zero
844 user_x(i,4,2)=zero
845 user_x(i,4,3)=zero
846 ENDIF
847C
848 IF(nd5 > 0)THEN
849 user_x(i,5,1)=user_interface_nodes%X(1,nd5)
850 user_x(i,5,2)=user_interface_nodes%X(2,nd5)
851 user_x(i,5,3)=user_interface_nodes%X(3,nd5)
852 ELSE
853 user_x(i,5,1)=zero
854 user_x(i,5,2)=zero
855 user_x(i,5,3)=zero
856 ENDIF
857C
858 IF(nd6 > 0)THEN
859 user_x(i,6,1)=user_interface_nodes%X(1,nd6)
860 user_x(i,6,2)=user_interface_nodes%X(2,nd6)
861 user_x(i,6,3)=user_interface_nodes%X(3,nd6)
862 ELSE
863 user_x(i,6,1)=zero
864 user_x(i,6,2)=zero
865 user_x(i,6,3)=zero
866 ENDIF
867C
868 IF(nd7 > 0)THEN
869 user_x(i,7,1)=user_interface_nodes%X(1,nd7)
870 user_x(i,7,2)=user_interface_nodes%X(2,nd7)
871 user_x(i,7,3)=user_interface_nodes%X(3,nd7)
872 ELSE
873 user_x(i,7,1)=zero
874 user_x(i,7,2)=zero
875 user_x(i,7,3)=zero
876 ENDIF
877C
878 IF(nd8 > 0)THEN
879 user_x(i,8,1)=user_interface_nodes%X(1,nd8)
880 user_x(i,8,2)=user_interface_nodes%X(2,nd8)
881 user_x(i,8,3)=user_interface_nodes%X(3,nd8)
882 ELSE
883 user_x(i,8,1)=zero
884 user_x(i,8,2)=zero
885 user_x(i,8,3)=zero
886 ENDIF
887
888 ENDDO
889C
890
891 END
892C-----------------------------------------------
893!||====================================================================
894!|| mat_solid_get_nod_v ../engine/source/user_interface/uaccess.F
895!||--- uses -----------------------------------------------------
896!|| element_mod ../common_source/modules/elements/element_mod.F90
897!|| restmod ../engine/share/modules/restart_mod.F
898!|| user_interface_mod ../engine/source/modules/user_interface_mod.F90
899!||====================================================================
900 SUBROUTINE mat_solid_get_nod_v(USER_V)
901C---------+---------+---+---+--------------------------------------------
902 USE restmod
903 USE user_interface_mod
904 use element_mod , only : nixs
905C-----------------------------------------------
906C I m p l i c i t T y p e s
907C-----------------------------------------------
908#include "implicit_f.inc"
909C-----------------------------------------------
910C C o m m o n B l o c k s
911C-----------------------------------------------
912#include "vect01_c.inc"
913C-----------------------------------------------
914C D u m m y A r g u m e n t s
915C-----------------------------------------------
916 my_real user_v(llt,8,3)
917C-----------------------------------------------
918C L o c a l V a r i a b l e s
919C-----------------------------------------------
920 INTEGER ND1,ND2,ND3,ND4,ND5,ND6,ND7,ND8,ELEM,I
921C-----------------------------------------------
922C S o u r c e L i n e s
923C-----------------------------------------------
924 DO i=1,llt
925 elem=nft+i
926 nd1=ixs(nixs*(elem-1)+2)
927 nd2=ixs(nixs*(elem-1)+3)
928 nd3=ixs(nixs*(elem-1)+4)
929 nd4=ixs(nixs*(elem-1)+5)
930 nd5=ixs(nixs*(elem-1)+6)
931 nd6=ixs(nixs*(elem-1)+7)
932 nd7=ixs(nixs*(elem-1)+8)
933 nd8=ixs(nixs*(elem-1)+9)
934C
935 IF(nd1 > 0)THEN
936 user_v(i,1,1)=user_interface_nodes%V(1,nd1)
937 user_v(i,1,2)=user_interface_nodes%V(2,nd1)
938 user_v(i,1,3)=user_interface_nodes%V(3,nd1)
939 ELSE
940 user_v(i,1,1)=zero
941 user_v(i,1,2)=zero
942 user_v(i,1,3)=zero
943 ENDIF
944C
945 IF(nd2 > 0)THEN
946 user_v(i,2,1)=user_interface_nodes%V(1,nd2)
947 user_v(i,2,2)=user_interface_nodes%V(2,nd2)
948 user_v(i,2,3)=user_interface_nodes%V(3,nd2)
949 ELSE
950 user_v(i,2,1)=zero
951 user_v(i,2,2)=zero
952 user_v(i,2,3)=zero
953 ENDIF
954C
955 IF(nd3 > 0)THEN
956 user_v(i,3,1)=user_interface_nodes%V(1,nd3)
957 user_v(i,3,2)=user_interface_nodes%V(2,nd3)
958 user_v(i,3,3)=user_interface_nodes%V(3,nd3)
959 ELSE
960 user_v(i,3,1)=zero
961 user_v(i,3,2)=zero
962 user_v(i,3,3)=zero
963 ENDIF
964C
965 IF(nd4 > 0)THEN
966 user_v(i,4,1)=user_interface_nodes%V(1,nd4)
967 user_v(i,4,2)=user_interface_nodes%V(2,nd4)
968 user_v(i,4,3)=user_interface_nodes%V(3,nd4)
969 ELSE
970 user_v(i,4,1)=zero
971 user_v(i,4,2)=zero
972 user_v(i,4,3)=zero
973 ENDIF
974C
975 IF(nd5 > 0)THEN
976 user_v(i,5,1)=user_interface_nodes%V(1,nd5)
977 user_v(i,5,2)=user_interface_nodes%V(2,nd5)
978 user_v(i,5,3)=user_interface_nodes%V(3,nd5)
979 ELSE
980 user_v(i,5,1)=zero
981 user_v(i,5,2)=zero
982 user_v(i,5,3)=zero
983 ENDIF
984C
985 IF(nd6 > 0)THEN
986 user_v(i,6,1)=user_interface_nodes%V(1,nd6)
987 user_v(i,6,2)=user_interface_nodes%V(2,nd6)
988 user_v(i,6,3)=user_interface_nodes%V(3,nd6)
989 ELSE
990 user_v(i,6,1)=zero
991 user_v(i,6,2)=zero
992 user_v(i,6,3)=zero
993 ENDIF
994C
995 IF(nd7 > 0)THEN
996 user_v(i,7,1)=user_interface_nodes%V(1,nd7)
997 user_v(i,7,2)=user_interface_nodes%V(2,nd7)
998 user_v(i,7,3)=user_interface_nodes%V(3,nd7)
999 ELSE
1000 user_v(i,7,1)=zero
1001 user_v(i,7,2)=zero
1002 user_v(i,7,3)=zero
1003 ENDIF
1004C
1005 IF(nd8 > 0)THEN
1006 user_v(i,8,1)=user_interface_nodes%V(1,nd8)
1007 user_v(i,8,2)=user_interface_nodes%V(2,nd8)
1008 user_v(i,8,3)=user_interface_nodes%V(3,nd8)
1009 ELSE
1010 user_v(i,8,1)=zero
1011 user_v(i,8,2)=zero
1012 user_v(i,8,3)=zero
1013 ENDIF
1014
1015 ENDDO
1016
1017 END
1018C-----------------------------------------------
#define my_real
Definition cppsort.cpp:32
subroutine depla(v, d, x, vr, dr, xdp, ddp, numnod)
void get_var_user_f(int *buf, int *decalage, double *resultat)
void get_array_user_f(int *buf, int *decalage, double *array, int *array_lenght)
void get_array_user_f_sp(int *buf, int *decalage, float *array, int *array_lenght)
void get_var_user_i(int *buf, int *decalage, int *resultat)
void get_var_user_f_sp(int *buf, int *decalage, float *resultat)
subroutine set_spring_elnum(jft, jlt, ixr)
Definition uaccess.F:706
integer function get_u_nod_v(nod, vx, vy, vz)
Definition uaccess.F:419
integer function get_u_accel(nacc, ax, ay, az)
Definition uaccess.F:78
integer function get_u_cycle()
Definition uaccess.F:40
integer function get_u_nod_x(nod, x, y, z)
Definition uaccess.F:239
integer function get_u_numnod(iu)
Definition uaccess.F:170
integer function get_u_nod_a(nod, ax, ay, az)
Definition uaccess.F:511
integer function get_u_numacc(idacc)
Definition uaccess.F:126
integer function get_spring_elnum(iel)
Definition uaccess.F:740
integer function get_u_skew(idskw, n1, n2, n3, vect)
Definition uaccess.F:602
subroutine mat_solid_get_nod_v(user_v)
Definition uaccess.F:901
subroutine mat_solid_get_nod_x(user_x)
Definition uaccess.F:774
subroutine uaccess_dum(ierr)
Definition uaccess.F:29
integer function get_u_nod_d(nod, dx, dy, dz)
Definition uaccess.F:329
initmumps id
integer, dimension(:), allocatable, target ixs
Definition restart_mod.F:60
subroutine spmd_rbcast(tabi, tabr, n1, n2, from, add)
Definition spmd_rbcast.F:62
subroutine spmd_glob_dsum(v, len, vtmp)
Definition spmd_th.F:87
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:895