CalculiX  2.8
A Free Software Three-Dimensional Structural Finite Element Program
 All Classes Files Functions Variables Macros
remastructem.c File Reference
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include "CalculiX.h"
Include dependency graph for remastructem.c:

Go to the source code of this file.

Functions

void remastructem (ITG *ipompc, double **coefmpcp, ITG **nodempcp, ITG *nmpc, ITG *mpcfree, ITG *nodeboun, ITG *ndirboun, ITG *nboun, ITG *ikmpc, ITG *ilmpc, ITG *ikboun, ITG *ilboun, char *labmpc, ITG *nk, ITG *memmpc_, ITG *icascade, ITG *maxlenmpc, ITG *kon, ITG *ipkon, char *lakon, ITG *ne, ITG *nactdof, ITG *icol, ITG *jq, ITG **irowp, ITG *isolver, ITG *neq, ITG *nzs, ITG *nmethod, double **fp, double **fextp, double **bp, double **aux2p, double **finip, double **fextinip, double **adbp, double **aubp, ITG *ithermal, ITG *iperturb, ITG *mass, ITG *mi, ITG *ielmat, double *elcon, ITG *ncmat_, ITG *ntmat_, ITG *inomat)
 

Function Documentation

void remastructem ( ITG ipompc,
double **  coefmpcp,
ITG **  nodempcp,
ITG nmpc,
ITG mpcfree,
ITG nodeboun,
ITG ndirboun,
ITG nboun,
ITG ikmpc,
ITG ilmpc,
ITG ikboun,
ITG ilboun,
char *  labmpc,
ITG nk,
ITG memmpc_,
ITG icascade,
ITG maxlenmpc,
ITG kon,
ITG ipkon,
char *  lakon,
ITG ne,
ITG nactdof,
ITG icol,
ITG jq,
ITG **  irowp,
ITG isolver,
ITG neq,
ITG nzs,
ITG nmethod,
double **  fp,
double **  fextp,
double **  bp,
double **  aux2p,
double **  finip,
double **  fextinip,
double **  adbp,
double **  aubp,
ITG ithermal,
ITG iperturb,
ITG mass,
ITG mi,
ITG ielmat,
double *  elcon,
ITG ncmat_,
ITG ntmat_,
ITG inomat 
)

Definition at line 24 of file remastructem.c.

35  {
36 
37  /* reconstructs the nonzero locations in the stiffness and mass
38  matrix after a change in MPC's */
39 
40  ITG *nodempc=NULL,*mast1=NULL,*ipointer=NULL,mpcend,mpcmult,
41  callfrommain,i,*irow=NULL,mt;
42 
43  double *coefmpc=NULL,*f=NULL,*fext=NULL,*b=NULL,*aux2=NULL,
44  *fini=NULL,*fextini=NULL,*adb=NULL,*aub=NULL;
45 
46  nodempc=*nodempcp;coefmpc=*coefmpcp;irow=*irowp;
47  f=*fp;fext=*fextp;b=*bp;aux2=*aux2p;fini=*finip;
48  fextini=*fextinip;adb=*adbp;aub=*aubp;
49 
50  mt=mi[1]+1;
51 
52  /* decascading the MPC's */
53 
54  printf(" Decascading the MPC's\n\n");
55 
56  callfrommain=0;
57  cascade(ipompc,&coefmpc,&nodempc,nmpc,
58  mpcfree,nodeboun,ndirboun,nboun,ikmpc,
59  ilmpc,ikboun,ilboun,&mpcend,&mpcmult,
60  labmpc,nk,memmpc_,icascade,maxlenmpc,
61  &callfrommain,iperturb,ithermal);
62 
63  /* determining the matrix structure */
64 
65  printf(" Determining the structure of the matrix:\n");
66 
67  if(nzs[1]<10) nzs[1]=10;
68  NNEW(mast1,ITG,nzs[1]);
69  NNEW(ipointer,ITG,mt**nk);
70  RENEW(irow,ITG,nzs[1]);for(i=0;i<nzs[1];i++) irow[i]=0;
71 
72  mastructem(nk,kon,ipkon,lakon,ne,nodeboun,ndirboun,nboun,ipompc,
73  nodempc,nmpc,nactdof,icol,jq,&mast1,&irow,isolver,neq,
74  ikmpc,ilmpc,ipointer,nzs,ithermal,mi,ielmat,elcon,
75  ncmat_,ntmat_,inomat);
76 
77  SFREE(ipointer);SFREE(mast1);
78  RENEW(irow,ITG,nzs[2]);
79 
80  *nodempcp=nodempc;*coefmpcp=coefmpc;*irowp=irow;
81 
82  /* reallocating fields the size of which depends on neq[1] or *nzs */
83 
84  RENEW(f,double,neq[1]);for(i=0;i<neq[1];i++) f[i]=0.;
85  RENEW(fext,double,neq[1]);for(i=0;i<neq[1];i++) fext[i]=0.;
86  RENEW(b,double,neq[1]);for(i=0;i<neq[1];i++) b[i]=0.;
87  RENEW(fini,double,neq[1]);for(i=0;i<neq[1];i++) fini[i]=0.;
88 
89  if(*nmethod==4){
90  RENEW(aux2,double,neq[1]);for(i=0;i<neq[1];i++) aux2[i]=0.;
91  RENEW(fextini,double,neq[1]);for(i=0;i<neq[1];i++) fextini[i]=0.;
92  RENEW(adb,double,neq[1]);for(i=0;i<neq[1];i++) adb[i]=0.;
93  RENEW(aub,double,nzs[1]);for(i=0;i<nzs[1];i++) aub[i]=0.;
94  mass[0]=1;
95  }
96 
97  *fp=f;*fextp=fext;*bp=b;*aux2p=aux2;*finip=fini;
98  *fextinip=fextini;*adbp=adb;*aubp=aub;
99 
100  return;
101 }
void mastructem(ITG *nk, ITG *kon, ITG *ipkon, char *lakon, ITG *ne, ITG *nodeboun, ITG *ndirboun, ITG *nboun, ITG *ipompc, ITG *nodempc, ITG *nmpc, ITG *nactdof, ITG *icol, ITG *jq, ITG **mast1p, ITG **irowp, ITG *isolver, ITG *neq, ITG *ikmpc, ITG *ilmpc, ITG *ipointer, ITG *nzs, ITG *ithermal, ITG *mi, ITG *ielmat, double *elcon, ITG *ncmat_, ITG *ntmat_, ITG *inomat)
Definition: mastructem.c:27
void cascade(ITG *ipompc, double **coefmpcp, ITG **nodempcp, ITG *nmpc, ITG *mpcfree, ITG *nodeboun, ITG *ndirboun, ITG *nboun, ITG *ikmpc, ITG *ilmpc, ITG *ikboun, ITG *ilboun, ITG *mpcend, ITG *mpcmult, char *labmpc, ITG *nk, ITG *memmpc_, ITG *icascade, ITG *maxlenmpc, ITG *callfrommain, ITG *iperturb, ITG *ithermal)
Definition: cascade.c:34
#define RENEW(a, b, c)
Definition: CalculiX.h:40
#define SFREE(a)
Definition: CalculiX.h:41
#define ITG
Definition: CalculiX.h:51
#define NNEW(a, b, c)
Definition: CalculiX.h:39
Hosted by OpenAircraft.com, (Michigan UAV, LLC)