/* [<][>][^][v][top][bottom][index][help] */

## DEFINITIONS

This source file includes following definitions.
```   1 /*     CalculiX - A 3-dimensional finite element program                 */
2 /*              Copyright (C) 1998-2015 Guido Dhondt                          */
3
4 /*     This program is free software; you can redistribute it and/or     */
5 /*     modify it under the terms of the GNU General Public License as    */
7 /*                                                                       */
8
9 /*     This program is distributed in the hope that it will be useful,   */
10 /*     but WITHOUT ANY WARRANTY; without even the implied warranty of    */
11 /*     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the      */
12 /*     GNU General Public License for more details.                      */
13
14 /*     You should have received a copy of the GNU General Public License */
15 /*     along with this program; if not, write to the Free Software       */
16 /*     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.         */
17
18 #include <stdlib.h>
19 #include <math.h>
20 #include <stdio.h>
21 #include <string.h>
22 #include "CalculiX.h"
23
27
28 /* determining the structure of the viewfactor and the radiation
29    matrix (both have the same structure). Only the structure of the
30    lower half of the matrix is determined, since the structure of
31    the upper half is identical */
32
33   char crcav[4]="   \0";
34
37
40
41   kflag=2;
43
44     /* determining the position of each nonzero matrix element in
45        the SUPERdiagonal matrix */
46
47   ifree=0;
48
49   for(ii=1;ii<=*ntr;ii++){
52       icav=atoi(crcav);
53       for(jj=1;jj<=ii;jj++){
56           jcav=atoi(crcav);
57           if(icav==jcav){
60           }
61       }
62   }
63
64   /*   storing the nonzero nodes in the SUPERdiagonal columns:
66        irowrad the column numbers (done in the next lines) */
67
68   for(i=0;i<*ntr;++i){
70           printf("*ERROR in mastructrad: zero column\n");
71           printf("       DOF=%" ITGFORMAT "\n",i);
72           FORTRAN(stop,());
73       }
75       while(1){
76           istartold=istart;
79           if(istart==0) break;
80       }
81   }
82
83   nmast=ifree;
84
85   /* summary */
86
87   printf(" number of radiation equations\n");
88   printf(" %" ITGFORMAT "\n",*ntr);
89   printf(" number of nonzero radiation matrix elements\n");
90   printf(" %" ITGFORMAT "\n",2*nmast-*ntr);
91   printf(" \n");
92
93     /* switching from a SUPERdiagonal inventory to a SUBdiagonal one:
94        since the nonzeros are located in symmetric positions mast1rad
95        can be considered to contain the column numbers and irowrad the
96        row numbers; after sorting mast1rad the following results:
97
98        - irowrad contains the row numbers of the SUBdiagonal
99          nonzero's, column per column
100        - mast1rad contains the column numbers
101
102        Furthermore, the following fields are determined:
103
104        - icolrad(i)=# SUBdiagonal nonzero's in column i
105        - jqrad(i)= location in field irow of the first SUBdiagonal
106          nonzero in column i  */
107
108     /* ordering the column numbers in mast1rad */
109
111
112   /* filtering out the diagonal elements and generating icolrad and jqrad */
113
114   isubtract=0;
116   k=0;
117   for(i=0;i<nmast;++i){
119       else{
125           }
127       }
128   }
129   nmast=nmast-isubtract;
131
132     /* sorting the row numbers within each column */
133
134   for(i=0;i<*ntr;++i){
138                   &isize,&kflag));
139       }
140   }
141