OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sysfus.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/.
23C REAL
24#include "my_real.inc"
25!||====================================================================
26!|| sysfus ../engine/source/system/sysfus.F
27!||--- called by ------------------------------------------------------
28!|| leccut ../engine/source/tools/sect/leccut.F
29!||--- calls -----------------------------------------------------
30!|| ancmsg ../engine/source/output/message/message.F
31!||--- uses -----------------------------------------------------
32!|| message_mod ../engine/share/message_module/message_mod.F
33!||====================================================================
34 my_real FUNCTION sysfus(IU,ITABM1,NUMNOD,MESS)
35C-----------------------------------------------
36C M o d u l e s
37C-----------------------------------------------
38 USE message_mod
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43C-----------------------------------------------
44C D u m m y A r g u m e n t s
45C-----------------------------------------------
46 INTEGER iu, numnod
47 CHARACTER mess*40
48 INTEGER itabm1(*)
49C-----------------------------------------------
50C C o m m o n B l o c k s
51C-----------------------------------------------
52#include "warn_c.inc"
53C-----------------------------------------------
54C L o c a l V a r i a b l e s
55C-----------------------------------------------
56 INTEGER jinf, jsup, j
57C-----------------------------------------------
58C
59 jinf=1
60 jsup=numnod
61C 045 J=NUMNOD/2
62 j=min(1,numnod/2)
63 10 IF(jsup<=jinf.AND.(iu-itabm1(j))/=0) THEN
64 CALL ancmsg(msgid=187,anmode=aninfo,
65 . i1=iu,c1=mess)
66 ierr=ierr+1
67 sysfus=1.1
68 RETURN
69 ENDIF
70 IF((iu-itabm1(j))==0)THEN
71C >CASE IU=TABM END OF SEARCH
72 sysfus=itabm1(j+numnod)+0.1
73 RETURN
74 ELSE IF (iu-itabm1(j)<0) THEN
75C >CAS IU<TABM
76 jsup=j-1
77 ELSE
78C >CAS IU>TABM
79 jinf=j+1
80 ENDIF
81 j=(jsup+jinf)/2
82 GO TO 10
83 END
84C
85C REAL
86!||====================================================================
87!|| sysfus2 ../engine/source/system/sysfus.F
88!||--- called by ------------------------------------------------------
89!|| ale51_spmd2 ../engine/source/ale/ale51/ale51_spmd2.F
90!|| ale51_spmd3 ../engine/source/ale/ale51/ale51_spmd3.F
91!|| fr_rlale ../engine/source/mpi/kinematic_conditions/fr_rlink1.F
92!|| fr_rlink1 ../engine/source/mpi/kinematic_conditions/fr_rlink1.F
93!|| genh3d ../engine/source/output/h3d/h3d_results/genh3d.F
94!|| lcbcsf ../engine/source/constraints/general/bcs/lcbcsf.F
95!|| lecnoise ../engine/source/general_controls/computation/lecnoise.F
96!||====================================================================
97 INTEGER FUNCTION sysfus2(IU,ITABM1,NUMNOD)
98C this function returns the internal number corresponding to a user number or 0
99C If the node does not exist
100C-----------------------------------------------
101C I m p l i c i t T y p e s
102C-----------------------------------------------
103#include "implicit_f.inc"
104C-----------------------------------------------
105C D u m m y A r g u m e n t s
106C-----------------------------------------------
107 INTEGER iu, numnod
108 INTEGER itabm1(*)
109C-----------------------------------------------
110C L o c a l V a r i a b l e s
111C-----------------------------------------------
112 INTEGER jinf, jsup, j
113C-----------------------------------------------
114C
115 ! Check exit parameters
116
117 ! 1st NUMNOD=0
118 IF (numnod==0) THEN
119 sysfus2=0
120 RETURN
121 END IF
122
123 ! 2nd NodeID is lower than smallest NodeID.
124 IF ( iu-itabm1(1)<0 ) THEN
125 sysfus2=0
126 RETURN
127 ENDIF
128
129
130 jinf=1
131 jsup=numnod
132 j=min(1,numnod/2)
133 10 IF(jsup<=jinf.AND.(iu-itabm1(j))/=0) THEN
134C > Noise case not found
135 sysfus2=0
136 RETURN
137 ENDIF
138 IF((iu-itabm1(j))==0)THEN
139C >CASE IU=TABM END OF SEARCH
140 sysfus2=itabm1(j+numnod)
141 RETURN
142 ELSE IF (iu-itabm1(j)<0) THEN
143C >CAS IU<TABM
144 jsup=j-1
145 ELSE
146C >CAS IU>TABM
147 jinf=j+1
148 ENDIF
149 j=(jsup+jinf)/2
150 GO TO 10
151 END
#define my_real
Definition cppsort.cpp:32
integer function sysfus2(iu, itabm1, numnod)
Definition sysfus.F:98
#define min(a, b)
Definition macros.h:20
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