CalculiX  2.13
A Free Software Three-Dimensional Structural Finite Element Program
calcresidual_em.c File Reference
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include "CalculiX.h"
Include dependency graph for calcresidual_em.c:

Go to the source code of this file.

Functions

void calcresidual_em (ITG *nmethod, ITG *neq, double *b, double *fext, double *f, ITG *iexpl, ITG *nactdof, double *aux1, double *aux2, double *vold, double *vini, double *dtime, double *accold, ITG *nk, double *adb, double *aub, ITG *jq, ITG *irow, ITG *nzl, double *alpha, double *fextini, double *fini, ITG *islavnode, ITG *nslavnode, ITG *mortar, ITG *ntie, double *f_cm, double *f_cs, ITG *mi, ITG *nzs, ITG *nasym, ITG *ithermal)
 

Function Documentation

◆ calcresidual_em()

void calcresidual_em ( ITG nmethod,
ITG neq,
double *  b,
double *  fext,
double *  f,
ITG iexpl,
ITG nactdof,
double *  aux1,
double *  aux2,
double *  vold,
double *  vini,
double *  dtime,
double *  accold,
ITG nk,
double *  adb,
double *  aub,
ITG jq,
ITG irow,
ITG nzl,
double *  alpha,
double *  fextini,
double *  fini,
ITG islavnode,
ITG nslavnode,
ITG mortar,
ITG ntie,
double *  f_cm,
double *  f_cs,
ITG mi,
ITG nzs,
ITG nasym,
ITG ithermal 
)
39  {
40 
41  ITG j,k,mt=mi[1]+1,jstart;
42 
43  /* residual for a static analysis */
44 
45  if(*nmethod!=4){
46  for(k=0;k<neq[1];++k){
47  b[k]=fext[k]-f[k];
48  }
49  }
50 
51  /* residual for implicit dynamics */
52 
53  else{
54 
55  if(*ithermal<2){
56  jstart=1;
57  }else{
58  jstart=0;
59  }
60 
61  /* calculating a pseudo-velocity */
62 
63 /* for(k=0;k<*nk;++k){
64  for(j=jstart;j<mt;++j){
65  if(nactdof[mt*k+j]>0){aux2[nactdof[mt*k+j]-1]=(vold[mt*k+j]-vini[mt*k+j])/(*dtime);}
66  }
67  }*/
68 
69  for(k=0;k<*nk;++k){
70  for(j=jstart;j<1;++j){
71  if(nactdof[mt*k+j]>0){aux2[nactdof[mt*k+j]-1]=(vold[mt*k+j]-vini[mt*k+j])/(*dtime);}
72  }
73  }
74 
75  for(k=0;k<*nk;++k){
76  for(j=1;j<mt;++j){
77  if(nactdof[mt*k+j]>0){aux2[nactdof[mt*k+j]-1]=(-vini[mt*k+j])/(*dtime);}
78  }
79  }
80 
81  /* calculating "capacity"-matrix times pseudo-velocity */
82 
83  if(*nasym==0){
84  FORTRAN(op,(&neq[1],aux2,b,adb,aub,jq,irow));
85  }else{
86  FORTRAN(opas,(&neq[1],aux2,b,adb,aub,jq,irow,nzs));
87  }
88 
89  for(k=0;k<neq[1];++k){
90  b[k]=fext[k]-f[k]-b[k];
91  }
92  }
93 
94  return;
95 }
void FORTRAN(actideacti,(char *set, ITG *nset, ITG *istartset, ITG *iendset, ITG *ialset, char *objectset, ITG *ipkon, ITG *ibject, ITG *ne))
subroutine op(n, x, y, ad, au, jq, irow)
Definition: op.f:26
subroutine opas(n, x, y, ad, au, jq, irow, nzs)
Definition: opas.f:26
#define ITG
Definition: CalculiX.h:51
Hosted by OpenAircraft.com, (Michigan UAV, LLC)