OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
write_joint.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!|| write_joint ../engine/source/output/restart/write_joint.F
25!||--- called by ------------------------------------------------------
26!|| wrrestp ../engine/source/output/restart/wrrestp.F
27!||--- calls -----------------------------------------------------
28!|| write_i_c ../common_source/tools/input_output/write_routtines.c
29!||--- uses -----------------------------------------------------
30!|| joint_mod ../engine/share/modules/joint_mod.F
31!|| restmod ../engine/share/modules/restart_mod.F
32!||====================================================================
33 SUBROUTINE write_joint()
34!$COMMENT
35! WRITE_JOINT description
36! write the joint structure
37!
38! WRITE_JOINT organization :
39!$ENDCOMMENT
40C-----------------------------------------------
41C M o d u l e s
42C-----------------------------------------------
43 USE joint_mod
44 USE restmod
45C-----------------------------------------------
46C I m p l i c i t T y p e s
47C-----------------------------------------------
48#include "implicit_f.inc"
49C-----------------------------------------------
50C C o m m o n B l o c k s
51C-----------------------------------------------
52#include "com01_c.inc"
53#include "com04_c.inc"
54#include "tabsiz_c.inc"
55C-----------------------------------------------
56C L o c a l V a r i a b l e s
57C-----------------------------------------------
58 INTEGER :: N,IS_SMS_AVAILABLE
59 INTEGER, DIMENSION(NJOINT) :: NUMBER_NODE
60
61 IF(njoint>0) THEN
62 DO n=1,njoint
63 number_node(n) = cyl_join(n)%NUMBER_NODE
64 ENDDO
65 ! number of node per proc (all proc --> size=nspmd)
66 CALL write_i_c(number_node,njoint)
67
68 ! ------------------------------
69 DO n=1,njoint
70 IF(number_node(n)>0) THEN
71 ! proc main for the current joint
72 CALL write_i_c(cyl_join(n)%PROC_MAIN,1)
73 ! number of proc for the current joint
74 CALL write_i_c(cyl_join(n)%NUMBER_PROC,1)
75 ! list of proc for the current joint
76 CALL write_i_c(cyl_join(n)%LIST_PROC,cyl_join(n)%NUMBER_PROC)
77 ! list of node for the current joint
78 CALL write_i_c(cyl_join(n)%NODE,cyl_join(n)%NUMBER_NODE)
79 ! weight array for the current joint
80 CALL write_i_c(cyl_join(n)%WEIGHT,cyl_join(n)%NUMBER_NODE)
81 ENDIF
82 ! number of sent node for mpi comm
83 CALL write_i_c(cyl_join(n)%COMM_MPI%SIZE_SR,nspmd)
84 ! main node
85 CALL write_i_c(cyl_join(n)%MAIN_NODE,2)
86 ENDDO
87 ! ------------------------------
88
89 is_sms_available = 0
90 IF(joint_sms) is_sms_available = 1
91 CALL write_i_c(is_sms_available,1)
92
93 IF(joint_sms) CALL write_i_c(ljoint,sljoint)
94
95 ENDIF
96C
97 RETURN
98 END SUBROUTINE write_joint
end diagonal values have been computed in the(sparse) matrix id.SOL
subroutine write_joint()
Definition write_joint.F:34
for(i8=*sizetab-1;i8 >=0;i8--)
logical joint_sms
Definition joint_mod.F:62
type(joint_type), dimension(:), allocatable cyl_join
Definition joint_mod.F:61
integer, dimension(:), allocatable ljoint
Definition restart_mod.F:60
void write_i_c(int *w, int *len)