CalculiX  2.8 A Free Software Three-Dimensional Structural Finite Element Program
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include "CalculiX.h"

Go to the source code of this file.

## Function Documentation

Definition at line 24 of file mastructrad.c.

26  {
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
143
146
147  return;
148
149 }
#define ITGFORMAT
Definition: CalculiX.h:52
void insertrad(ITG *ipointer, ITG **mast1p, ITG **mast2p, ITG *i1, ITG *i2, ITG *ifree, ITG *nzs_)