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

Go to the source code of this file.

Functions

void objectivemain_se (double *co, ITG *nk, ITG *kon, ITG *ipkon, char *lakon, ITG *ne, double *v, double *stn, ITG *inum, double *stx, double *elcon, ITG *nelcon, double *rhcon, ITG *nrhcon, double *alcon, ITG *nalcon, double *alzero, ITG *ielmat, ITG *ielorien, ITG *norien, double *orab, ITG *ntmat_, double *t0, double *t1, ITG *ithermal, double *prestr, ITG *iprestr, char *filab, double *eme, double *emn, double *een, ITG *iperturb, double *f, double *fn, ITG *nactdof, ITG *iout, double *qa, double *vold, ITG *nodeboun, ITG *ndirboun, double *xboun, ITG *nboun, ITG *ipompc, ITG *nodempc, double *coefmpc, char *labmpc, ITG *nmpc, ITG *nmethod, double *cam, ITG *neq, double *veold, double *accold, double *bet, double *gam, double *dtime, double *time, double *ttime, double *plicon, ITG *nplicon, double *plkcon, ITG *nplkcon, double *xstateini, double *xstiff, double *xstate, ITG *npmat_, double *epn, char *matname, ITG *mi, ITG *ielas, ITG *icmd, ITG *ncmat_, ITG *nstate_, double *stiini, double *vini, ITG *ikboun, ITG *ilboun, double *ener, double *enern, double *emeini, double *xstaten, double *eei, double *enerini, double *cocon, ITG *ncocon, char *set, ITG *nset, ITG *istartset, ITG *iendset, ITG *ialset, ITG *nprint, char *prlab, char *prset, double *qfx, double *qfn, double *trab, ITG *inotr, ITG *ntrans, double *fmpc, ITG *nelemload, ITG *nload, ITG *ikmpc, ITG *ilmpc, ITG *istep, ITG *iinc, double *springarea, double *reltime, ITG *ne0, double *xforc, ITG *nforc, double *thicke, double *shcon, ITG *nshcon, char *sideload, double *xload, double *xloadold, ITG *icfd, ITG *inomat, double *pslavsurf, double *pmastsurf, ITG *mortar, ITG *islavact, double *cdn, ITG *islavnode, ITG *nslavnode, ITG *ntie, double *clearini, ITG *islavsurf, ITG *ielprop, double *prop, double *energyini, double *energy, double *distmin, ITG *ndesi, ITG *nodedesi, ITG *nobject, char *objectset, double *g0, double *dgdx, double *sti, double *df, ITG *nactdofinv, ITG *jqs, ITG *irows, ITG *idisplacement, ITG *nzs, char *jobnamec, ITG *isolver, ITG *icol, ITG *irow, ITG *jq, ITG *kode, double *cs, char *output, ITG *istartdesi, ITG *ialdesi, double *xdesi, char *orname, ITG *icoordinate, ITG *iev, double *d, double *z, double *au, double *ad, double *aub, double *adb, ITG *cyclicsymmetry, ITG *nzss, ITG *nev, ITG *ishapeenergy, double *fint, ITG *nlabel, ITG *igreen, ITG *nasym, ITG *iponoel, ITG *inoel, ITG *nodedesiinv, double *dgdxglob)
 
void * objectivemt_shapeener_dx (ITG *i)
 
void * objectivemt_mass_dx (ITG *i)
 
void * stress_senmt (ITG *i)
 

Variables

static char * lakon1
 
static char * matname1
 
static char * filabl1
 
static char * labmpc1
 
static char * set1
 
static char * prlab1
 
static char * prset1
 
static char * sideload1
 
static char * orname1
 
static char * objectset1
 
static ITGkon1
 
static ITGipkon1
 
static ITGne1
 
static ITGnelcon1
 
static ITGnrhcon1
 
static ITGnalcon1
 
static ITGielmat1
 
static ITGielorien1
 
static ITGnorien1
 
static ITGntmat1_
 
static ITGithermal1
 
static ITGiprestr1
 
static ITGiperturb1
 
static ITGiout1
 
static ITGnmethod1
 
static ITGnplicon1
 
static ITGnplkcon1
 
static ITGnpmat1_
 
static ITGmi1
 
static ITGielas1
 
static ITGicmd1
 
static ITGncmat1_
 
static ITGnstate1_
 
static ITGistep1
 
static ITGiinc1
 
static ITG calcul_qa1
 
static ITG nener1
 
static ITG ikin1
 
static ITGistartdesi1
 
static ITGialdesi1
 
static ITG num_cpusd
 
static ITGne01
 
static ITGmortar1
 
static ITGielprop1
 
static ITGndesi1
 
static ITGnodedesi1
 
static ITG idesvar1
 
static ITGnobject1
 
static ITG iobject1
 
static ITGnk1
 
static ITGnactdof1
 
static ITGnodeboun1
 
static ITGndirboun1
 
static ITGnboun1
 
static ITGipompc1
 
static ITGnodempc1
 
static ITGnmpc1
 
static ITGneq1
 
static ITGikboun1
 
static ITGilboun1
 
static ITGncocon1
 
static ITGnset1
 
static ITGistartset1
 
static ITGiendset1
 
static ITGialset1
 
static ITGnprint1
 
static ITGinotr1
 
static ITGntrans1
 
static ITGnelemload1
 
static ITGnload1
 
static ITGikmpc1
 
static ITGilmpc1
 
static ITGnforc1
 
static ITGnshcon1
 
static ITGicfd1
 
static ITGinomat1
 
static ITGislavact1
 
static ITGislavnode1
 
static ITGnslavnode1
 
static ITGntie1
 
static ITGislavsurf1
 
static ITG kscale1
 
static ITG network1
 
static ITG nestart1
 
static ITG neend1
 
static ITGjqs1
 
static ITGirows1
 
static ITGnasym1
 
static ITGisolver1
 
static ITG nodeset1
 
static ITG num_cpuse
 
static double * co1
 
static double * v1
 
static double * stx1
 
static double * elcon1
 
static double * rhcon1
 
static double * alcon1
 
static double * alzero1
 
static double * orab1
 
static double * t01
 
static double * t11
 
static double * prestr1
 
static double * vold1
 
static double * veold1
 
static double * dtime1
 
static double * time1
 
static double * xdesi1
 
static double * ttime1
 
static double * plicon1
 
static double * plkcon1
 
static double * xstateini1
 
static double * xstiff1
 
static double * xstate1
 
static double * stiini1
 
static double * vini1
 
static double * ener1
 
static double * eei1
 
static double * enerini1
 
static double * springarea1
 
static double * reltime1
 
static double * thicke1
 
static double * emeini1
 
static double * prop1
 
static double * pslavsurf1
 
static double * pmastsurf1
 
static double * clearini1
 
static double * distmin1
 
static double * g01
 
static double * dgdx1
 
static double * sti1
 
static double * xmass1 =NULL
 
static double * xener1 =NULL
 
static double * een1
 
static double * f1
 
static double * fn1
 
static double * xboun1
 
static double * coefmpc1
 
static double * cam1
 
static double * accold1
 
static double * bet1
 
static double * gam1
 
static double * epn1
 
static double * enern1
 
static double * xstaten1
 
static double * cocon1
 
static double * qfx1
 
static double * qfn1
 
static double * trab1
 
static double * fmpc1
 
static double * xforc1
 
static double * shcon1
 
static double * xload1
 
static double * xloadold1
 
static double * cdn1
 
static double * energyini1
 
static double * energy1
 
static double * emn1
 
static double * stn1
 
static double * b1
 

Function Documentation

◆ objectivemain_se()

void objectivemain_se ( double *  co,
ITG nk,
ITG kon,
ITG ipkon,
char *  lakon,
ITG ne,
double *  v,
double *  stn,
ITG inum,
double *  stx,
double *  elcon,
ITG nelcon,
double *  rhcon,
ITG nrhcon,
double *  alcon,
ITG nalcon,
double *  alzero,
ITG ielmat,
ITG ielorien,
ITG norien,
double *  orab,
ITG ntmat_,
double *  t0,
double *  t1,
ITG ithermal,
double *  prestr,
ITG iprestr,
char *  filab,
double *  eme,
double *  emn,
double *  een,
ITG iperturb,
double *  f,
double *  fn,
ITG nactdof,
ITG iout,
double *  qa,
double *  vold,
ITG nodeboun,
ITG ndirboun,
double *  xboun,
ITG nboun,
ITG ipompc,
ITG nodempc,
double *  coefmpc,
char *  labmpc,
ITG nmpc,
ITG nmethod,
double *  cam,
ITG neq,
double *  veold,
double *  accold,
double *  bet,
double *  gam,
double *  dtime,
double *  time,
double *  ttime,
double *  plicon,
ITG nplicon,
double *  plkcon,
ITG nplkcon,
double *  xstateini,
double *  xstiff,
double *  xstate,
ITG npmat_,
double *  epn,
char *  matname,
ITG mi,
ITG ielas,
ITG icmd,
ITG ncmat_,
ITG nstate_,
double *  stiini,
double *  vini,
ITG ikboun,
ITG ilboun,
double *  ener,
double *  enern,
double *  emeini,
double *  xstaten,
double *  eei,
double *  enerini,
double *  cocon,
ITG ncocon,
char *  set,
ITG nset,
ITG istartset,
ITG iendset,
ITG ialset,
ITG nprint,
char *  prlab,
char *  prset,
double *  qfx,
double *  qfn,
double *  trab,
ITG inotr,
ITG ntrans,
double *  fmpc,
ITG nelemload,
ITG nload,
ITG ikmpc,
ITG ilmpc,
ITG istep,
ITG iinc,
double *  springarea,
double *  reltime,
ITG ne0,
double *  xforc,
ITG nforc,
double *  thicke,
double *  shcon,
ITG nshcon,
char *  sideload,
double *  xload,
double *  xloadold,
ITG icfd,
ITG inomat,
double *  pslavsurf,
double *  pmastsurf,
ITG mortar,
ITG islavact,
double *  cdn,
ITG islavnode,
ITG nslavnode,
ITG ntie,
double *  clearini,
ITG islavsurf,
ITG ielprop,
double *  prop,
double *  energyini,
double *  energy,
double *  distmin,
ITG ndesi,
ITG nodedesi,
ITG nobject,
char *  objectset,
double *  g0,
double *  dgdx,
double *  sti,
double *  df,
ITG nactdofinv,
ITG jqs,
ITG irows,
ITG idisplacement,
ITG nzs,
char *  jobnamec,
ITG isolver,
ITG icol,
ITG irow,
ITG jq,
ITG kode,
double *  cs,
char *  output,
ITG istartdesi,
ITG ialdesi,
double *  xdesi,
char *  orname,
ITG icoordinate,
ITG iev,
double *  d,
double *  z,
double *  au,
double *  ad,
double *  aub,
double *  adb,
ITG cyclicsymmetry,
ITG nzss,
ITG nev,
ITG ishapeenergy,
double *  fint,
ITG nlabel,
ITG igreen,
ITG nasym,
ITG iponoel,
ITG inoel,
ITG nodedesiinv,
double *  dgdxglob 
)
93  {
94 
95  char description[13]=" ",cflag[1]=" ",*filabl=NULL;
96 
97  ITG calcul_qa,nener=0,ikin,i,j,k,m,iobject,im,symmetryflag=0,inputformat=0,
98  mt=mi[1]+1,mode=-1,noddiam=-1,ngraph=1,idesvar,nea,neb,nodeset,lmax,
99  kscale=1,idir,iorien,network=0,inorm=0,irand=0,*neinset=NULL,
100  nepar,isum,idelta,*neapar=NULL,*nebpar=NULL,nestart,neend,num_cpus,
101  l;
102 
103  double sigma=0.,ptime=0.,*temp=NULL,*bfix=NULL,*vnew=NULL,*dstn=NULL,
104  freq,*c=NULL,orabsav[7],rotvec[3],a[9],pgauss[3],*b=NULL,
105  *vec=NULL;
106 
107  if(*nasym!=0){symmetryflag=2;inputformat=1;}
108 
109  /* variables for multithreading procedure */
110 
111  ITG sys_cpus,*ithread=NULL;
112  char *env,*envloc,*envsys;
113 
114  num_cpus=0;
115  sys_cpus=0;
116 
117  /* explicit user declaration prevails */
118 
119  envsys=getenv("NUMBER_OF_CPUS");
120  if(envsys){
121  sys_cpus=atoi(envsys);
122  if(sys_cpus<0) sys_cpus=0;
123  }
124 
125  /* automatic detection of available number of processors */
126 
127  if(sys_cpus==0){
128  sys_cpus = getSystemCPUs();
129  if(sys_cpus<1) sys_cpus=1;
130  }
131 
132  /* local declaration prevails, if strictly positive */
133 
134  envloc = getenv("CCX_NPROC_RESULTS");
135  if(envloc){
136  num_cpus=atoi(envloc);
137  if(num_cpus<0){
138  num_cpus=0;
139  }else if(num_cpus>sys_cpus){
140  num_cpus=sys_cpus;
141  }
142 
143  }
144 
145  /* else global declaration, if any, applies */
146 
147  env = getenv("OMP_NUM_THREADS");
148  if(num_cpus==0){
149  if (env)
150  num_cpus = atoi(env);
151  if (num_cpus < 1) {
152  num_cpus=1;
153  }else if(num_cpus>sys_cpus){
154  num_cpus=sys_cpus;
155  }
156  }
157 
158  pthread_t tid[num_cpus];
159 
160  if((*idisplacement==1)||((*ishapeenergy==1)&&(iperturb[1]==1))){
161 
162  /* factor the system */
163 
164  if(*isolver==0){
165 #ifdef SPOOLES
166  spooles_factor(ad,au,adb,aub,&sigma,icol,irow,&neq[1],&nzs[1],
167  &symmetryflag,&inputformat,&nzs[2]);
168 #else
169  printf("*ERROR in objectivemain_se: the SPOOLES library is not linked\n\n");
170  FORTRAN(stop,());
171 #endif
172  }
173  else if(*isolver==4){
174 #ifdef SGI
175  token=1;
176  sgi_factor(ad,au,adb,aub,&sigma,icol,irow,&neq[1],&nzs[1],token);
177 #else
178  printf("*ERROR in objectivemain_se: the SGI library is not linked\n\n");
179  FORTRAN(stop,());
180 #endif
181  }
182  else if(*isolver==5){
183 #ifdef TAUCS
184  tau_factor(ad,&au,adb,aub,&sigma,icol,&irow,&neq[1],&nzs[1]);
185 #else
186  printf("*ERROR in objectivemain_se: the TAUCS library is not linked\n\n");
187  FORTRAN(stop,());
188 #endif
189  }
190  else if(*isolver==7){
191 #ifdef PARDISO
192  pardiso_factor(ad,au,adb,aub,&sigma,icol,irow,&neq[1],&nzs[1],
193  &symmetryflag,&inputformat,jq,&nzs[2]);
194 #else
195  printf("*ERROR in objectivemain_se: the PARDISO library is not linked\n\n");
196  FORTRAN(stop,());
197 #endif
198  }
199 
200  }
201 
202  /* loop over all objective functions */
203 
204  for(m=0;m<*nobject;m++){
205  if(strcmp1(&objectset[m*324],"MASS")==0){
206  iobject=m+1;
207  iobject1=iobject;
208 
209  /* OBJECTIVE: MASS */
210 
211  NNEW(xmass1,double,*ne);
212 
213  /* deactivating the elements which are not part of the
214  target function */
215 
216  FORTRAN(actideacti,(set,nset,istartset,iendset,ialset,objectset,
217  ipkon,&iobject,ne));
218 
219  /* call without perturbation */
220 
221  idesvar=0;
222 
223  /* calculating the objective function and the derivatives */
224 
225  if(*ne<num_cpus){num_cpuse=*ne;}else{num_cpuse=num_cpus;}
226 
227  NNEW(g01,double,num_cpuse**nobject);
228 
229  co1=co;kon1=kon;ipkon1=ipkon;lakon1=lakon;v1=v;nelcon1=nelcon;rhcon1=rhcon;
230  ielmat1=ielmat;ielorien1=ielorien;norien1=norien;ntmat1_=ntmat_;vold1=vold;
231  matname1=matname;mi1=mi;thicke1=thicke;mortar1=mortar;ielprop1=ielprop;
232  prop1=prop;distmin1=distmin;ndesi1=ndesi;nodedesi1=nodedesi;
233  nobject1=nobject;iobject1=iobject;ne1=ne;istartdesi1=istartdesi;
234  ialdesi1=ialdesi;xdesi1=xdesi;idesvar1=idesvar;
235 
236  if(((*nmethod!=4)&&(*nmethod!=5))||(iperturb[0]>1)){
237  printf(" Using up to %" ITGFORMAT " cpu(s) for the mass sensitivity.\n\n", num_cpuse);
238  }
239 
240  NNEW(ithread,ITG,num_cpuse);
241 
242  /* Total difference of the mass */
243  /* create threads and wait */
244 
245  for(i=0;i<num_cpuse;i++) {
246  ithread[i]=i;
247  pthread_create(&tid[i], NULL, (void *)objectivemt_mass_dx, (void *)&ithread[i]);
248  }
249 
250  for(i=0;i<num_cpuse;i++) pthread_join(tid[i], NULL);
251 
252  /* Assembling g0 */
253 
254  g0[m]=g01[m];
255  for(j=1;j<num_cpuse;j++){
256  g0[m]+=g01[m+j**nobject];
257  }
258  SFREE(g01);SFREE(ithread);
259 
260  /* loop over the design variables (perturbation) */
261 
262  for(idesvar=1;idesvar<=*ndesi;idesvar++){
263 
264  nea=istartdesi[idesvar-1];
265  neb=istartdesi[idesvar]-1;
266 
267  FORTRAN(objective_mass_dx,(co,kon,ipkon,lakon,nelcon,rhcon,
268  ielmat,ielorien,norien,ntmat1_,matname,mi,
269  thicke,mortar,&nea,&neb,ielprop,prop,distmin,ndesi,nodedesi,
270  nobject,g0,dgdx,&iobject,xmass1,
271  istartdesi,ialdesi,xdesi,&idesvar));
272  }
273 
274  SFREE(xmass1);
275 
276  /* reactivating all elements */
277 
278  for(i=0;i<*ne;i++){
279  if(ipkon[i]<-1) ipkon[i]=-2-ipkon[i];
280  }
281 
282  }else if(strcmp1(&objectset[m*324],"SHAPEENERGY")==0){
283  iobject=m+1;
284  iobject1=iobject;
285 
286  /* OBJECTIVE: SHAPE ENERGY */
287 
288  NNEW(xener1,double,*ne);
289 
290  /* deactivating the elements which are not part of the
291  target function */
292 
293  FORTRAN(actideacti,(set,nset,istartset,iendset,ialset,objectset,
294  ipkon,&iobject,ne));
295 
296  /* call without perturbation */
297 
298  idesvar=0;
299 
300  /* calculating the objective function and the derivatives */
301 
302  if(*ne<num_cpus){num_cpuse=*ne;}else{num_cpuse=num_cpus;}
303 
304  NNEW(g01,double,num_cpuse**nobject);
305 
306  co1=co;kon1=kon;ipkon1=ipkon;lakon1=lakon;ne1=ne;
307  stx1=stx;elcon1=elcon;nelcon1=nelcon;rhcon1=rhcon;
308  nrhcon1=nrhcon;alcon1=alcon;nalcon1=nalcon;alzero1=alzero;
309  ielmat1=ielmat;ielorien1=ielorien;norien1=norien;orab1=orab;
310  ntmat1_=ntmat_;t01=t0;t11=t1;ithermal1=ithermal;prestr1=prestr;
311  iprestr1=iprestr;iperturb1=iperturb;iout1=iout;
312  vold1=vold;nmethod1=nmethod;veold1=veold;dtime1=dtime;
313  time1=time;ttime1=ttime;plicon1=plicon;nplicon1=nplicon;
314  plkcon1=plkcon;nplkcon1=nplkcon;xstateini1=xstateini;
315  xstiff1=xstiff;xstate1=xstate;npmat1_=npmat_;matname1=matname;
316  mi1=mi;ielas1=ielas;icmd1=icmd;ncmat1_=ncmat_;nstate1_=nstate_;
317  stiini1=stiini;vini1=vini;ener1=ener;eei1=eei;enerini1=enerini;
318  istep1=istep;iinc1=iinc;springarea1=springarea;reltime1=reltime;
319  calcul_qa1=calcul_qa;nener1=nener;ikin1=ikin;ne01=ne0;thicke1=thicke;
320  emeini1=emeini;pslavsurf1=pslavsurf;pmastsurf1=pmastsurf;mortar1=mortar;
321  clearini1=clearini;ielprop1=ielprop;prop1=prop;
322  distmin1=distmin;ndesi1=ndesi;nodedesi1=nodedesi;
323  nobject1=nobject;iobject1=iobject;sti1=sti;istartdesi1=istartdesi;
324  ialdesi1=ialdesi;xdesi1=xdesi;idesvar1=idesvar;
325 
326  if(((*nmethod!=4)&&(*nmethod!=5))||(iperturb[0]>1)){
327  printf(" Using up to %" ITGFORMAT " cpu(s) for the shape energy sensitivity.\n\n", num_cpuse);
328  }
329 
330  NNEW(ithread,ITG,num_cpuse);
331 
332  /* Total difference of the internal shape energy */
333  /* create threads and wait */
334 
335  for(i=0;i<num_cpuse;i++) {
336  ithread[i]=i;
337  pthread_create(&tid[i], NULL, (void *)objectivemt_shapeener_dx, (void *)&ithread[i]);
338  }
339 
340  for(i=0;i<num_cpuse;i++) pthread_join(tid[i], NULL);
341 
342  /* Assembling g0 */
343 
344  g0[m]=g01[m];
345  for(j=1;j<num_cpuse;j++){
346  g0[m]+=g01[m+j**nobject];
347  }
348  SFREE(g01);SFREE(ithread);
349 
350  /* loop over the design variables (perturbation) */
351 
352  for(idesvar=1;idesvar<=*ndesi;idesvar++){
353 
354  nea=istartdesi[idesvar-1];
355  neb=istartdesi[idesvar]-1;
356 
357  FORTRAN(objective_shapeener_dx,(co,kon,ipkon,lakon,ne,
358  stx,elcon,nelcon,rhcon,nrhcon,alcon,nalcon,alzero,
359  ielmat,ielorien,norien,orab,ntmat1_,t0,t1,ithermal,prestr,
360  iprestr,iperturb,iout,vold,
361  nmethod,veold,dtime,time,ttime,plicon,nplicon,plkcon,
362  nplkcon,xstateini,xstiff,xstate,npmat1_,matname,mi,ielas,
363  icmd,ncmat1_,nstate1_,stiini,vini,ener,enerini,istep,iinc,
364  springarea,reltime,&calcul_qa,&nener,&ikin,
365  ne0,thicke,emeini,pslavsurf,pmastsurf,mortar,clearini,
366  &nea,&neb,ielprop,prop,distmin,ndesi,nodedesi,
367  nobject,g0,dgdx,&iobject,sti,xener1,
368  istartdesi,ialdesi,xdesi,&idesvar));
369 
370  }
371 
372  if(iperturb[1]==1){
373 
374  /* solve the system */
375 
376  if(*isolver==0){
377 #ifdef SPOOLES
378  spooles_solve(fint,&neq[1]);
379 #endif
380  }
381  else if(*isolver==4){
382 #ifdef SGI
383  sgi_solve(fint,token);
384 #endif
385  }
386  else if(*isolver==5){
387 #ifdef TAUCS
388  tau_solve(fint,&neq[1]);
389 #endif
390  }
391  else if(*isolver==7){
392 #ifdef PARDISO
393  pardiso_solve(fint,&neq[1],&symmetryflag);
394 #endif
395 }
396 
397  /* solve the system */
398 
399  }
400 
401  SFREE(xener1);
402 
403  /* reactivating all elements */
404 
405  for(i=0;i<*ne;i++){
406  if(ipkon[i]<-1) ipkon[i]=-2-ipkon[i];
407  }
408 
409  /* composing the total derivative */
410 
411  NNEW(vec,double,*neq);
412 
413  FORTRAN(objective_shapeener_tot,(ne,kon,ipkon,lakon,fint,vold,
414  iperturb,mi,nactdof,dgdx,df,ndesi,&iobject,jqs,
415  irows,vec));
416 
417  SFREE(vec);
418 
419  }else if((strcmp1(&objectset[m*324],"EIGENFREQUENCY")==0)||
420  (strcmp1(&objectset[m*324],"GREEN")==0)){
421  iobject=m+1;
422 
423  /* OBJECTIVE: EIGENFREQUENCY */
424 
425  if(*igreen!=1){
426 
427  /* determination of the sensitivity of the eigenvalues */
428 
429  if(!*cyclicsymmetry){
430 
431  FORTRAN(objective_freq,(dgdx,df,v,ndesi,&iobject,
432  mi,nactdofinv,jqs,irows));
433 
434  /* change sign since df contains -(dK/dX-lambda*dM/DX).U */
435 
436  for(idesvar=0;idesvar<*ndesi;idesvar++){dgdx[idesvar]=-dgdx[idesvar];}
437  }else{
438 
439  FORTRAN(objective_freq_cs,(dgdx,df,v,ndesi,&iobject,
440  mi,nactdofinv,jqs,irows,nk,nzss));
441  }
442  }
443 
444  g0[m]=d[*iev];
445 
446  /* in case the design variables are the orientations
447  the sensitivity of the eigenvectors is also
448  determined */
449 
450  if(*icoordinate!=1){
451  if(*igreen!=1) FORTRAN(writedeigdx,(iev,d,ndesi,orname,dgdx));
452 
453  /* createinum is called in order to determine the nodes belonging
454  to elements; this information is needed in frd_se */
455 
456  NNEW(inum,ITG,*nk);
457  FORTRAN(createinum,(ipkon,inum,kon,lakon,nk,ne,&cflag[0],
458  nelemload,nload,nodeboun,nboun,ndirboun,ithermal,co,
459  vold,mi,ielmat));
460 
461  /* the frequency is also needed for frd_se */
462 
463  if(d[*iev]>=0.){
464  freq=sqrt(d[*iev])/6.283185308;
465  }else{
466  freq=0.;
467  }
468 
469  /* determine the derivative of the eigenvectors */
470 
471  NNEW(bfix,double,neq[1]);
472  NNEW(b,double,neq[1]);
473  NNEW(temp,double,mt**nk);
474 
475  if(*igreen!=1){
476 
477  /* bfix = M * eigenvector */
478 
479  FORTRAN(op,(neq,&z[*iev*neq[1]],bfix,adb,aub,jq,irow));
480 
481  }else{
482 
483  sigma=d[*iev];
484 
485  /* factor the system */
486 
487  if(*isolver==0){
488 #ifdef SPOOLES
489  spooles_factor(ad,au,adb,aub,&sigma,icol,irow,&neq[1],&nzs[1],
490  &symmetryflag,&inputformat,&nzs[2]);
491 #else
492  printf("*ERROR in objectivemain_se: the SPOOLES library is not linked\n\n");
493  FORTRAN(stop,());
494 #endif
495  }
496  else if(*isolver==4){
497 #ifdef SGI
498  token=1;
499  sgi_factor(ad,au,adb,aub,&sigma,icol,irow,&neq[1],&nzs[1],token);
500 #else
501  printf("*ERROR in objectivemain_se: the SGI library is not linked\n\n");
502  FORTRAN(stop,());
503 #endif
504  }
505  else if(*isolver==5){
506 #ifdef TAUCS
507  tau_factor(ad,&au,adb,aub,&sigma,icol,&irow,&neq[1],&nzs[1]);
508 #else
509  printf("*ERROR in objectivemain_se: the TAUCS library is not linked\n\n");
510  FORTRAN(stop,());
511 #endif
512  }
513  else if(*isolver==7){
514 #ifdef PARDISO
515  pardiso_factor(ad,au,adb,aub,&sigma,icol,irow,&neq[1],&nzs[1],
516  &symmetryflag,&inputformat,jq,&nzs[2]);
517 #else
518  printf("*ERROR in objectivemain_se: the PARDISO library is not linked\n\n");
519  FORTRAN(stop,());
520 #endif
521  }
522  }
523 
524  /* loop over all design variables */
525 
526  for(idesvar=0;idesvar<*ndesi;idesvar++){
527 
528  /* setting up the RHS of the system */
529 
530  if(*igreen!=1){
531  for(j=0;j<neq[1];j++){
532  b[j]=dgdx[idesvar]*bfix[j];
533  }
534  }else{
535  DMEMSET(b,0,neq[1],0.);
536  }
537 
538  for(j=jqs[idesvar]-1;j<jqs[idesvar+1]-1;j++){
539  b[irows[j]-1]+=df[j];
540  }
541 
542  if(*igreen==1){
543 
544  /* solve the system */
545 
546  if(*isolver==0){
547 #ifdef SPOOLES
548  spooles_solve(b,&neq[1]);
549 #endif
550  }
551  else if(*isolver==4){
552 #ifdef SGI
553  sgi_solve(b,token);
554 #endif
555  }
556  else if(*isolver==5){
557 #ifdef TAUCS
558  tau_solve(b,&neq[1]);
559 #endif
560  }
561  else if(*isolver==7){
562 #ifdef PARDISO
563  pardiso_solve(b,&neq[1],&symmetryflag);
564 #endif
565  }
566  }else{
567 
568  NNEW(c,double,*nev);
569  for(j=0;j<*nev;j++){
570  if(j==*iev) continue;
571  for(k=0;k<neq[1];k++){
572  c[j]+=z[j*neq[1]+k]*b[k];
573  }
574  c[j]/=(d[j]-d[*iev]);
575  }
576  DMEMSET(b,0,neq[1],0.);
577  for(j=0;j<*nev;j++){
578  if(j==*iev) continue;
579  for(k=0;k<neq[1];k++){
580  b[k]+=c[j]*z[j*neq[1]+k];
581  }
582  }
583  SFREE(c);
584  }
585 
586  /* store the answer in temp w.r.t. node and direction
587  instead of w.r.t. dof */
588 
589  DMEMSET(temp,0,mt**nk,0.);
590  FORTRAN(resultsnoddir,(nk,temp,nactdof,b,ipompc,nodempc,
591  coefmpc,nmpc,mi));
592 
593  /* storing the sensitivity of the eigenmodes to file */
594 
595  ++*kode;
596  frd_sen(co,nk,stn,inum,nmethod,kode,filab,
597  &freq,nstate_,
598  istep,iinc,&mode,&noddiam,description,mi,&ngraph,
599  ne,cs,set,nset,istartset,iendset,ialset,
600  jobnamec,output,temp,&iobject,objectset,ntrans,
601  inotr,trab,&idesvar,orname,icoordinate,&inorm,
602  &irand);
603 
604  } // enddo loop idesvar
605 
606  if(*igreen==1){
607 
608  /* clean the system */
609 
610  if(*isolver==0){
611 #ifdef SPOOLES
612  spooles_cleanup();
613 #endif
614  }
615  else if(*isolver==4){
616 #ifdef SGI
617  sgi_cleanup(token);
618 #endif
619  }
620  else if(*isolver==5){
621 #ifdef TAUCS
622  tau_cleanup();
623 #endif
624  }
625  else if(*isolver==7){
626 #ifdef PARDISO
627  pardiso_cleanup(&neq[1],&symmetryflag);
628 #endif
629  }
630  }
631 
632  SFREE(temp);SFREE(bfix);SFREE(b);SFREE(inum);
633 
634  }
635 
636  }else if(strcmp1(&objectset[m*324],"DISPLACEMENT")==0){
637  iobject=m+1;
638 
639  /* OBJECTIVE: DISPLACEMENT */
640 
641  /* createinum is called in order to determine the nodes belonging
642  to elements; this information is needed in frd_se */
643 
644  NNEW(inum,ITG,*nk);
645  FORTRAN(createinum,(ipkon,inum,kon,lakon,nk,ne,&cflag[0],nelemload,
646  nload,nodeboun,nboun,ndirboun,ithermal,co,vold,mi,ielmat));
647 
648  NNEW(b,double,neq[1]);
649  NNEW(temp,double,mt**nk);
650 
651  /* if the design variables are the coordinates:
652  check for the existence of a target node set */
653 
654  /* calculating the objective function */
655 
656  if(*icoordinate==1){
657  nodeset=0;
658  for(i=0;i<*nset;i++){
659  if(strcmp1(&objectset[m*324+162]," ")==0) continue;
660  if(strcmp2(&objectset[m*324+162],&set[i*81],81)==0){
661  nodeset=i+1;
662  break;
663  }
664  }
665  FORTRAN(objective_disp,(&nodeset,istartset,iendset,
666  ialset,nk,&idesvar,&iobject,mi,g0,
667  nobject,vold));
668  }
669 
670  for(idesvar=0;idesvar<*ndesi;idesvar++){
671 
672  /* copying the RHS from field df */
673 
674  DMEMSET(b,0,neq[1],0.);
675  for(j=jqs[idesvar]-1;j<jqs[idesvar+1]-1;j++){
676  b[irows[j]-1]=df[j];
677  }
678 
679  /* solve the system */
680 
681  if(*isolver==0){
682 #ifdef SPOOLES
683  spooles_solve(b,&neq[1]);
684 #endif
685  }
686  else if(*isolver==4){
687 #ifdef SGI
688  sgi_solve(b,token);
689 #endif
690  }
691  else if(*isolver==5){
692 #ifdef TAUCS
693  tau_solve(b,&neq[1]);
694 #endif
695  }
696  else if(*isolver==7){
697 #ifdef PARDISO
698  pardiso_solve(b,&neq[1],&symmetryflag);
699 #endif
700  }
701 
702  if(*icoordinate!=1){
703 
704  /* store the answer in temp w.r.t. node and direction
705  instead of w.r.t. dof */
706 
707  DMEMSET(temp,0,mt**nk,0.);
708  FORTRAN(resultsnoddir,(nk,temp,nactdof,b,ipompc,nodempc,
709  coefmpc,nmpc,mi));
710 
711  /* storing the results to file */
712 
713  ++*kode;
714  frd_sen(co,nk,stn,inum,nmethod,kode,filab,
715  &ptime,nstate_,
716  istep,iinc,&mode,&noddiam,description,mi,&ngraph,
717  ne,cs,set,nset,istartset,iendset,ialset,
718  jobnamec,output,temp,&iobject,objectset,ntrans,
719  inotr,trab,&idesvar,orname,icoordinate,&inorm,
720  &irand);
721 
722  }else{
723  FORTRAN(objective_disp_dx,(&nodeset,istartset,iendset,
724  ialset,nk,&idesvar,&iobject,mi,nactdof,dgdx,
725  ndesi,nobject,vold,b));
726  }
727  }
728 
729  SFREE(b);SFREE(temp);SFREE(inum);
730 
731  }else if(strcmp1(&objectset[m*324],"STRESS")==0){
732  iobject=m+1;
733 
734  NNEW(filabl,char,87**nlabel);
735  for(i=0;i<87**nlabel;i++){strcpy1(&filabl[i]," ",1);}
736  strcpy1(&filabl[174],"S ",4);
737 
738  /* deactivating all elements which are not part of
739  the target function */
740 
741  NNEW(neinset,ITG,*ne);
742 
743  FORTRAN(actideactistr,(set,nset,istartset,iendset,ialset,objectset,
744  ipkon,&iobject,ne,neinset,iponoel,inoel,&nepar));
745 
746  /* determining the nodal bounds in each thread */
747 
748  if(nepar<num_cpus){num_cpuse=nepar;}else{num_cpuse=num_cpus;}
749 
750  NNEW(neapar,ITG,num_cpuse);
751  NNEW(nebpar,ITG,num_cpuse);
752 
753  idelta=nepar/num_cpuse;
754 
755  /* dividing the range from 1 to the number of active elements */
756 
757  isum=0;
758  for(i=0;i<num_cpuse;i++){
759  neapar[i]=isum;
760  if(i!=num_cpuse-1){
761  isum+=idelta;
762  }else{
763  isum=nepar;
764  }
765  nebpar[i]=isum-1;
766  }
767 
768  /* translating the bounds of the ranges to real node numbers */
769 
770  i=-1;
771  j=0;
772  nepar=-1;
773 
774  do{
775  if(j==num_cpuse) break;
776  do{
777  if(neapar[j]==nepar){
778  neapar[j]=i;
779  break;
780  }else{
781  do{
782  i++;
783  if(neinset[i]==1){
784  nepar++;
785  break;
786  }
787  }while(1);
788  }
789  }while(1);
790 
791  do{
792  if(nebpar[j]==nepar){
793  nebpar[j]=i;
794  j++;
795  break;
796  }else{
797  do{
798  i++;
799  if(neinset[i]==1){
800  nepar++;
801  break;
802  }
803  }while(1);
804  }
805  }while(1);
806  }while(1);
807 
808  /* FORTRAN convention */
809 
810  nestart=neapar[0]+1;
811  neend=nebpar[num_cpuse-1]+1;
812 
813  SFREE(neinset);
814 
815  /* OBJECTIVE: STRESS */
816 
817  /* calculating the stress in the unperturbed state */
818 
819  NNEW(v,double,mt**nk);
820  NNEW(fn,double,mt**nk);
821  NNEW(stn,double,6**nk);
822  NNEW(inum,ITG,*nk);
823  NNEW(stx,double,6*mi[0]**ne);
824  NNEW(eei,double,6*mi[0]**ne);
825 
826  memcpy(&v[0],&vold[0],sizeof(double)*mt**nk);
827  *iout=2;
828  *icmd=3;
829 
830  resultsstr(co,nk,kon,ipkon,lakon,ne,v,stn,inum,stx,
831  elcon,nelcon,rhcon,nrhcon,alcon,nalcon,alzero,ielmat,
832  ielorien,norien,orab,ntmat_,t0,t1,ithermal,
833  prestr,iprestr,filabl,eme,emn,een,iperturb,
834  f,fn,nactdof,iout,qa,vold,b,nodeboun,
835  ndirboun,xboun,nboun,ipompc,
836  nodempc,coefmpc,labmpc,nmpc,nmethod,cam,&neq[1],veold,accold,
837  bet,gam,dtime,time,ttime,plicon,nplicon,plkcon,nplkcon,
838  xstateini,xstiff,xstate,npmat_,epn,matname,mi,ielas,icmd,
839  ncmat_,nstate_,stiini,vini,ikboun,ilboun,ener,enern,emeini,
840  xstaten,eei,enerini,cocon,ncocon,set,nset,istartset,iendset,
841  ialset,nprint,prlab,prset,qfx,qfn,trab,inotr,ntrans,fmpc,
842  nelemload,nload,ikmpc,ilmpc,istep,iinc,springarea,
843  reltime,ne0,xforc,nforc,thicke,shcon,nshcon,
844  sideload,xload,xloadold,icfd,inomat,pslavsurf,pmastsurf,
845  mortar,islavact,cdn,islavnode,nslavnode,ntie,clearini,
846  islavsurf,ielprop,prop,energyini,energy,&kscale,
847  &nener,orname,&network,neapar,nebpar);
848 
849  *icmd=0;
850 
851  SFREE(v);SFREE(fn);SFREE(stx);SFREE(eei);
852 
853 
854  /* if the design variables are the coordinates:
855  check for the existence of a target node set */
856 
857  /* calculating the objective function */
858 
859  if(*icoordinate==1){
860  nodeset=0;
861  for(i=0;i<*nset;i++){
862  if(strcmp1(&objectset[m*324+162]," ")==0) continue;
863  if(strcmp2(&objectset[m*324+162],&set[i*81],81)==0){
864  nodeset=i+1;
865  break;
866  }
867  }
868  FORTRAN(objective_stress,(&nodeset,istartset,iendset,
869  ialset,nk,&idesvar,&iobject,mi,g0,
870  nobject,stn,objectset));
871  }
872 
873  if(*icoordinate!=1){
874 
875  /* orientation as design variables */
876 
877  NNEW(b,double,neq[1]);
878  NNEW(vnew,double,mt**nk);
879 
880  for(idesvar=0;idesvar<*ndesi;idesvar++){
881 
882  /* copying the RHS from field df */
883 
884  DMEMSET(b,0,neq[1],0.);
885  for(j=jqs[idesvar]-1;j<jqs[idesvar+1]-1;j++){
886  b[irows[j]-1]=df[j];
887  }
888 
889  /* solve the system */
890 
891  if(*isolver==0){
892 #ifdef SPOOLES
893  spooles_solve(b,&neq[1]);
894 #endif
895  }
896  else if(*isolver==4){
897 #ifdef SGI
898  sgi_solve(b,token);
899 #endif
900  }
901  else if(*isolver==5){
902 #ifdef TAUCS
903  tau_solve(b,&neq[1]);
904 #endif
905  }
906  else if(*isolver==7){
907 #ifdef PARDISO
908  pardiso_solve(b,&neq[1],&symmetryflag);
909 #endif
910  }
911 
912  /* calculating the perturbed displacements */
913 
914  FORTRAN(resultsnoddir,(nk,vnew,nactdof,b,ipompc,nodempc,
915  coefmpc,nmpc,mi));
916 
917  for(i=0;i<mt**nk;i++){vnew[i]=vold[i]+(*distmin)*vnew[i];}
918 
919  /* calculating the stress in the perturbed state */
920 
921  NNEW(v,double,mt**nk);
922  NNEW(fn,double,mt**nk);
923  NNEW(stx,double,6*mi[0]**ne);
924  NNEW(eei,double,6*mi[0]**ne);
925  NNEW(dstn,double,6**nk);
926 
927  memcpy(&v[0],&vnew[0],sizeof(double)*mt**nk);
928  *iout=2;
929  *icmd=3;
930 
931  /* calculate a delta in the orientation
932  in case the material orientation is the design variable */
933 
934  iorien=idesvar/3;
935 
936  /* save nominal orientation */
937 
938  memcpy(&orabsav[0],&orab[7*iorien],sizeof(double)*7);
939 
940  /* calculate the transformation matrix */
941 
942  FORTRAN(transformatrix,(&orab[7*iorien],pgauss,a));
943 
944  /* calculate the rotation vector from the transformation matrix */
945 
946  FORTRAN(rotationvector,(a,rotvec));
947  idir=idesvar-iorien*3;
948 
949  /* add a small variation to the rotation vector component */
950 
951  rotvec[idir]+=*distmin;
952 
953  /* determine the new transformation matrix */
954 
955  FORTRAN(rotationvectorinv,(a,rotvec));
956 
957  /* determine two new points in the x-y plane */
958 
959  for(i=0;i<6;i++){orab[7*iorien+i]=a[i];}
960 
961  resultsstr(co,nk,kon,ipkon,lakon,ne,v,dstn,inum,stx,
962  elcon,nelcon,rhcon,nrhcon,alcon,nalcon,alzero,ielmat,
963  ielorien,norien,orab,ntmat_,t0,t1,ithermal,
964  prestr,iprestr,filabl,eme,emn,een,iperturb,
965  f,fn,nactdof,iout,qa,vold,b,nodeboun,
966  ndirboun,xboun,nboun,ipompc,
967  nodempc,coefmpc,labmpc,nmpc,nmethod,cam,&neq[1],veold,accold,
968  bet,gam,dtime,time,ttime,plicon,nplicon,plkcon,nplkcon,
969  xstateini,xstiff,xstate,npmat_,epn,matname,mi,ielas,icmd,
970  ncmat_,nstate_,stiini,vini,ikboun,ilboun,ener,enern,emeini,
971  xstaten,eei,enerini,cocon,ncocon,set,nset,istartset,iendset,
972  ialset,nprint,prlab,prset,qfx,qfn,trab,inotr,ntrans,fmpc,
973  nelemload,nload,ikmpc,ilmpc,istep,iinc,springarea,
974  reltime,ne0,xforc,nforc,thicke,shcon,nshcon,
975  sideload,xload,xloadold,icfd,inomat,pslavsurf,pmastsurf,
976  mortar,islavact,cdn,islavnode,nslavnode,ntie,clearini,
977  islavsurf,ielprop,prop,energyini,energy,&kscale,
978  &nener,orname,&network,neapar,nebpar);
979 
980  *icmd=0;
981 
982  SFREE(v);SFREE(fn);SFREE(stx);SFREE(eei);
983 
984  /* calculate the stress sensitivity */
985 
986  for(i=0;i<6**nk;i++){dstn[i]=(dstn[i]-stn[i])/(*distmin);}
987 
988  /* restoring the nominal orientation */
989 
990 // if(idesvar>0){
991  memcpy(&orab[7*iorien],&orabsav[0],sizeof(double)*7);
992 // }
993 
994  /* storing the results to file */
995 
996  ++*kode;
997  frd_sen(co,nk,dstn,inum,nmethod,kode,filab,
998  &ptime,nstate_,
999  istep,iinc,&mode,&noddiam,description,mi,&ngraph,
1000  ne,cs,set,nset,istartset,iendset,ialset,
1001  jobnamec,output,temp,&iobject,objectset,ntrans,
1002  inotr,trab,&idesvar,orname,icoordinate,&inorm,
1003  &irand);
1004 
1005  SFREE(dstn);
1006 
1007  }
1008 
1009  SFREE(vnew);SFREE(b);
1010 
1011  }else{
1012 
1013  /* coordinates as design variables */
1014 
1015  lmax=*ndesi/num_cpus;
1016 
1017  /* deviding the design variables in sets of
1018  num_cpus variables */
1019 
1020  for(l=0;l<lmax+1;l++){
1021  if(l<lmax){
1023  }else{
1024  num_cpusd=*ndesi-lmax*num_cpus;
1025  if(num_cpusd==0){break;}
1026  }
1027 
1028  /* solving the system of equations for
1029  num_cpusd design variables */
1030 
1031  NNEW(b,double,num_cpusd*neq[1]);
1032 
1033  for(k=0;k<num_cpusd;k++){
1034 
1035  /* design variable at stake */
1036 
1037  idesvar=l*num_cpus+k;
1038 
1039  /* copying the RHS from field df */
1040 
1041  for(j=jqs[idesvar]-1;j<jqs[idesvar+1]-1;j++){
1042  b[k*neq[1]+irows[j]-1]=df[j];
1043  }
1044 
1045  /* solve the system */
1046 
1047  if(*isolver==0){
1048 #ifdef SPOOLES
1049  spooles_solve(&b[k*neq[1]],&neq[1]);
1050 #endif
1051  }
1052  else if(*isolver==4){
1053 #ifdef SGI
1054  sgi_solve(&b[k*neq[1]],token);
1055 #endif
1056  }
1057  else if(*isolver==5){
1058 #ifdef TAUCS
1059  tau_solve(&b[k*neq[1]],&neq[1]);
1060 #endif
1061  }
1062  else if(*isolver==7){
1063 #ifdef PARDISO
1064  pardiso_solve(&b[k*neq[1]],&neq[1],&symmetryflag);
1065 #endif
1066  }
1067  }
1068 
1069  /* last design variable treated (FORTRAN-notation) */
1070 
1071  idesvar=l*num_cpus;
1072 
1073  printf(" Using up to %" ITGFORMAT " cpu(s) for the stress sensitivity.\n\n", num_cpusd);
1074 
1075  co1=co;nk1=nk;kon1=kon;ipkon1=ipkon;lakon1=lakon;ne1=ne;stn1=stn;
1076  elcon1=elcon;nelcon1=nelcon;rhcon1=rhcon;nrhcon1=nrhcon;alcon1=alcon;
1077  nalcon1=nalcon;alzero1=alzero;ielmat1=ielmat;ielorien1=ielorien;norien1=norien;
1078  orab1=orab;ntmat1_=ntmat_;t01=t0;t11=t1;ithermal1=ithermal;prestr1=prestr;
1079  iprestr1=iprestr;filabl1=filabl;emn1=emn;een1=een;iperturb1=iperturb;
1080  f1=f;nactdof1=nactdof;vold1=vold;nodeboun1=nodeboun;
1081  ndirboun1=ndirboun;xboun1=xboun;nboun1=nboun;ipompc1=ipompc;nodempc1=nodempc;
1082  coefmpc1=coefmpc;labmpc1=labmpc;nmpc1=nmpc;nmethod1=nmethod;cam1=cam;neq1=neq;
1083  veold1=veold;accold1=accold;bet1=bet;gam1=gam;dtime1=dtime;time1=time;ttime1=ttime;
1084  plicon1=plicon;nplicon1=nplicon;plkcon1=plkcon;nplkcon1=nplkcon;xstateini1=xstateini;
1085  xstate1=xstate;npmat1_=npmat_;epn1=epn;matname1=matname;mi1=mi;
1086  ielas1=ielas;ncmat1_=ncmat_;nstate1_=nstate_;stiini1=stiini;vini1=vini;
1087  ikboun1=ikboun;ilboun1=ilboun;enern1=enern;emeini1=emeini;xstaten1=xstaten;
1088  enerini1=enerini;cocon1=cocon;ncocon1=ncocon;set1=set;nset1=nset;
1089  istartset1=istartset;iendset1=iendset;ialset1=ialset;nprint1=nprint;prlab1=prlab;
1090  prset1=prset;qfx1=qfx;qfn1=qfn;trab1=trab;inotr1=inotr;ntrans1=ntrans;fmpc1=fmpc;
1091  nelemload1=nelemload;nload1=nload;ikmpc1=ikmpc;ilmpc1=ilmpc;istep1=istep;iinc1=iinc;
1092  springarea1=springarea;reltime1=reltime;ne01=ne0;xforc1=xforc;nforc1=nforc;
1093  thicke1=thicke;shcon1=shcon;nshcon1=nshcon;sideload1=sideload;xload1=xload;
1094  xloadold1=xloadold;icfd1=icfd;inomat1=inomat;pslavsurf1=pslavsurf;pmastsurf1=pmastsurf;
1095  mortar1=mortar;islavact1=islavact;cdn1=cdn;islavnode1=islavnode;nslavnode1=nslavnode;
1096  ntie1=ntie;clearini1=clearini;islavsurf1=islavsurf;ielprop1=ielprop;prop1=prop;
1097  energyini1=energyini;energy1=energy;kscale1=kscale;orname1=orname;
1098  network1=network;nestart1=nestart;neend1=neend;jqs1=jqs;irows1=irows;
1099  nodedesi1=nodedesi;xdesi1=xdesi;ndesi1=ndesi;iobject1=iobject;nobject1=nobject;
1100  objectset1=objectset;g01=g0;dgdx1=dgdx;nasym1=nasym;isolver1=isolver;distmin1=distmin;
1101  nodeset1=nodeset;b1=b;idesvar1=idesvar;
1102 
1103  NNEW(ithread,ITG,num_cpusd);
1104 
1105  /* Total difference of the mass */
1106  /* create threads and wait */
1107 
1108  for(i=0;i<num_cpusd;i++) {
1109  ithread[i]=i;
1110  pthread_create(&tid[i], NULL, (void *)stress_senmt, (void *)&ithread[i]);
1111  }
1112 
1113  for(i=0;i<num_cpusd;i++) pthread_join(tid[i], NULL);
1114 
1115  SFREE(ithread);SFREE(b);
1116 
1117  }
1118 
1119  }
1120 
1121  /* reactivating all elements */
1122 
1123  for(i=0;i<*ne;i++){
1124  if(ipkon[i]<-1) ipkon[i]=-2-ipkon[i];
1125  }
1126 
1127  SFREE(inum);SFREE(stn);SFREE(filabl);
1128  SFREE(neapar);SFREE(nebpar);
1129 
1130  }else if(strcmp1(&objectset[m*324],"THICKNESS")==0){
1131  iobject=m+1;
1132 
1133  thicknessmain(co,dgdx,nobject,nk,nodedesi,ndesi,objectset,
1134  ipkon,kon,lakon,set,nset,istartset,iendset,ialset,
1135  &iobject,nodedesiinv,dgdxglob);
1136  }
1137  }
1138 
1139  if(*idisplacement==1){
1140 
1141  /* clean the system */
1142 
1143  if(*isolver==0){
1144 #ifdef SPOOLES
1145  spooles_cleanup();
1146 #endif
1147  }
1148  else if(*isolver==4){
1149 #ifdef SGI
1150  sgi_cleanup(token);
1151 #endif
1152  }
1153  else if(*isolver==5){
1154 #ifdef TAUCS
1155  tau_cleanup();
1156 #endif
1157  }
1158  else if(*isolver==7){
1159 #ifdef PARDISO
1160  pardiso_cleanup(&neq[1],&symmetryflag);
1161 #endif
1162  }
1163  }
1164 
1165  return;
1166 
1167 }
static double * g01
Definition: objectivemain_se.c:42
static double * emeini1
Definition: objectivemain_se.c:42
static ITG * ithermal1
Definition: objectivemain_se.c:29
#define ITGFORMAT
Definition: CalculiX.h:52
void spooles_solve(double *b, ITG *neq)
static ITG nener1
Definition: objectivemain_se.c:29
static ITG * nprint1
Definition: objectivemain_se.c:29
void * objectivemt_mass_dx(ITG *i)
Definition: objectivemain_se.c:1205
static double * pmastsurf1
Definition: objectivemain_se.c:42
static double * xener1
Definition: objectivemain_se.c:47
static double * co1
Definition: objectivemain_se.c:42
subroutine objective_disp_dx(nodeset, istartset, iendset, ialset, nk, idesvarc, iobject, mi, nactdof, dgdx, ndesi, nobject, vold, b)
Definition: objective_disp_dx.f:21
static double * xstateini1
Definition: objectivemain_se.c:42
static ITG * nstate1_
Definition: objectivemain_se.c:29
static ITG * icmd1
Definition: objectivemain_se.c:29
static double * dgdx1
Definition: objectivemain_se.c:42
static double * enerini1
Definition: objectivemain_se.c:42
static double * t01
Definition: objectivemain_se.c:42
static ITG * nmethod1
Definition: objectivemain_se.c:29
static double * coefmpc1
Definition: objectivemain_se.c:47
static double * qfx1
Definition: objectivemain_se.c:47
static ITG * nalcon1
Definition: objectivemain_se.c:29
static double * t11
Definition: objectivemain_se.c:42
static ITG * ielprop1
Definition: objectivemain_se.c:29
int pthread_create(pthread_t *thread_id, const pthread_attr_t *attributes, void *(*thread_function)(void *), void *arguments)
static double * xmass1
Definition: objectivemain_se.c:47
static double * ener1
Definition: objectivemain_se.c:42
ITG strcmp2(const char *s1, const char *s2, ITG length)
Definition: strcmp2.c:24
static ITG * nload1
Definition: objectivemain_se.c:29
subroutine objective_stress(nodeset, istartset, iendset, ialset, nk, idesvarc, iobject, mi, g0, nobject, stn, objectset)
Definition: objective_stress.f:21
static ITG num_cpus
Definition: biosav.c:27
static ITG calcul_qa1
Definition: objectivemain_se.c:29
static ITG * ndesi1
Definition: objectivemain_se.c:29
static double * accold1
Definition: objectivemain_se.c:47
static double * alzero1
Definition: objectivemain_se.c:42
subroutine df(x, u, uprime, rpar, nev)
Definition: subspace.f:133
static ITG neend1
Definition: objectivemain_se.c:29
subroutine objective_disp(nodeset, istartset, iendset, ialset, nk, idesvarc, iobject, mi, g0, nobject, vold)
Definition: objective_disp.f:21
static ITG * ialset1
Definition: objectivemain_se.c:29
static double * xboun1
Definition: objectivemain_se.c:47
subroutine objective_mass_dx(co, kon, ipkon, lakon, nelcon, rhcon, ielmat, ielorien, norien, ntmat_, matname, mi, thicke, mortar, nea, neb, ielprop, prop, distmin, ndesi, nodedesi, nobject, g0, dgdx, iobject, xmass, istartdesi, ialdesi, xdesi, idesvar)
Definition: objective_mass_dx.f:24
void sgi_solve(double *b, ITG token)
subroutine objective_shapeener_tot(ne, kon, ipkon, lakon, fint, vold, iperturb, mi, nactdof, dgdx, df, ndesi, iobject, jqs, irows, vec)
Definition: objective_shapeener_tot.f:22
static double * sti1
Definition: objectivemain_se.c:42
static ITG * ntmat1_
Definition: objectivemain_se.c:29
static double * xdesi1
Definition: objectivemain_se.c:42
static ITG * nplkcon1
Definition: objectivemain_se.c:29
static ITG * islavnode1
Definition: objectivemain_se.c:29
static ITG * nk1
Definition: objectivemain_se.c:29
static double * emn1
Definition: objectivemain_se.c:47
static ITG * ntie1
Definition: objectivemain_se.c:29
subroutine resultsnoddir(nk, v, nactdof, b, ipompc, nodempc, coefmpc, nmpc, mi)
Definition: resultsnoddir.f:21
void thicknessmain(double *co, double *dgdx, ITG *nobject, ITG *nk, ITG *nodedesi, ITG *ndesi, char *objectset, ITG *ipkon, ITG *kon, char *lakon, char *set, ITG *nset, ITG *istartset, ITG *iendset, ITG *ialset, ITG *iobject, ITG *nodedesiinv, double *dgdxglob)
Definition: thicknessmain.c:50
static ITG num_cpusd
Definition: objectivemain_se.c:29
static ITG * ntrans1
Definition: objectivemain_se.c:29
static ITG * ncmat1_
Definition: objectivemain_se.c:29
subroutine rotationvectorinv(c, v)
Definition: rotationvectorinv.f:20
ITG strcpy1(char *s1, const char *s2, ITG length)
Definition: strcpy1.c:24
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
static double * reltime1
Definition: objectivemain_se.c:42
static double * xloadold1
Definition: objectivemain_se.c:47
static ITG * ielas1
Definition: objectivemain_se.c:29
static double * cdn1
Definition: objectivemain_se.c:47
static double * clearini1
Definition: objectivemain_se.c:42
ITG strcmp1(const char *s1, const char *s2)
Definition: strcmp1.c:24
static double * energy1
Definition: objectivemain_se.c:47
static ITG idesvar1
Definition: objectivemain_se.c:29
static double * plicon1
Definition: objectivemain_se.c:42
static char * prset1
Definition: objectivemain_se.c:26
void pardiso_cleanup(ITG *neq, ITG *symmetryflag)
subroutine actideacti(set, nset, istartset, iendset, ialset, objectset, ipkon, iobject, ne)
Definition: actideacti.f:21
static ITG * isolver1
Definition: objectivemain_se.c:29
static ITG * inomat1
Definition: objectivemain_se.c:29
static ITG * iout1
Definition: objectivemain_se.c:29
static double * time1
Definition: objectivemain_se.c:42
static ITG * ialdesi1
Definition: objectivemain_se.c:29
static ITG * norien1
Definition: objectivemain_se.c:29
static ITG * istartset1
Definition: objectivemain_se.c:29
static ITG * jqs1
Definition: objectivemain_se.c:29
static double * fmpc1
Definition: objectivemain_se.c:47
static ITG * irows1
Definition: objectivemain_se.c:29
ITG getSystemCPUs()
Definition: getSystemCPUs.c:40
#define DMEMSET(a, b, c, d)
Definition: CalculiX.h:45
static ITG kscale1
Definition: objectivemain_se.c:29
static double * plkcon1
Definition: objectivemain_se.c:42
static double * veold1
Definition: objectivemain_se.c:42
static char * sideload1
Definition: objectivemain_se.c:26
subroutine stop()
Definition: stop.f:20
subroutine objective_freq_cs(dgdx, df, vold, ndesi, iobject, mi, nactdofinv, jqs, irows, nk, nzss)
Definition: objective_freq_cs.f:22
subroutine objective_shapeener_dx(co, kon, ipkon, lakon, ne, stx, elcon, nelcon, rhcon, nrhcon, alcon, nalcon, alzero, ielmat, ielorien, norien, orab, ntmat_, t0, t1, ithermal, prestr, iprestr, iperturb, iout, vold, nmethod, veold, dtime, time, ttime, plicon, nplicon, plkcon, nplkcon, xstateini, xstiff, xstate, npmat_, matname, mi, ielas, icmd, ncmat_, nstate_, stiini, vini, ener, enerini, istep, iinc, springarea, reltime, calcul_qa, nener, ikin, ne0, thicke, emeini, pslavsurf, pmastsurf, mortar, clearini, nea, neb, ielprop, prop, distmin, ndesi, nodedesi, nobject, g0, dgdx, iobject, sti, xener, istartdesi, ialdesi, xdesi, idesvar)
Definition: objective_shapeener_dx.f:30
static ITG * npmat1_
Definition: objectivemain_se.c:29
void sgi_cleanup(ITG token)
static double * cam1
Definition: objectivemain_se.c:47
static double * alcon1
Definition: objectivemain_se.c:42
static ITG * istep1
Definition: objectivemain_se.c:29
void tau_cleanup()
static double * cocon1
Definition: objectivemain_se.c:47
static ITG * iperturb1
Definition: objectivemain_se.c:29
void sgi_factor(double *ad, double *au, double *adb, double *aub, double *sigma, ITG *icol, ITG *irow, ITG *neq, ITG *nzs, ITG token)
void frd_sen(double *co, ITG *nk, double *dstn, ITG *inum, ITG *nmethod, ITG *kode, char *filab, double *time, ITG *nstate_, ITG *istep, ITG *iinc, ITG *mode, ITG *noddiam, char *description, ITG *mi, ITG *ngraph, ITG *ne, double *cs, char *set, ITG *nset, ITG *istartset, ITG *iendset, ITG *ialset, char *jobnamec, char *output, double *v, ITG *iobject, char *objectset, ITG *ntrans, ITG *inotr, double *trab, ITG *idesvar, char *orname, ITG *icoordinate, ITG *inorm, ITG *irand)
Definition: frd_sen.c:27
static ITG ikin1
Definition: objectivemain_se.c:29
static ITG * ikmpc1
Definition: objectivemain_se.c:29
void pardiso_factor(double *ad, double *au, double *adb, double *aub, double *sigma, ITG *icol, ITG *irow, ITG *neq, ITG *nzs, ITG *symmetryflag, ITG *inputformat, ITG *jq, ITG *nzs3)
static char * objectset1
Definition: objectivemain_se.c:26
static double * b1
Definition: objectivemain_se.c:47
static ITG nodeset1
Definition: objectivemain_se.c:29
static double * prestr1
Definition: objectivemain_se.c:42
subroutine objective_freq(dgdx, df, vold, ndesi, iobject, mi, nactdofinv, jqs, irows)
Definition: objective_freq.f:22
static double * een1
Definition: objectivemain_se.c:47
static double * xload1
Definition: objectivemain_se.c:47
static double * bet1
Definition: objectivemain_se.c:47
subroutine transformatrix(xab, p, a)
Definition: transformatrix.f:20
static double * ttime1
Definition: objectivemain_se.c:42
static double * enern1
Definition: objectivemain_se.c:47
static double * v1
Definition: objectivemain_se.c:42
static double * rhcon1
Definition: objectivemain_se.c:42
static double * orab1
Definition: objectivemain_se.c:42
static double * stiini1
Definition: objectivemain_se.c:42
static ITG * kon1
Definition: objectivemain_se.c:29
static char * set1
Definition: objectivemain_se.c:26
static ITG * nobject1
Definition: objectivemain_se.c:29
#define SFREE(a)
Definition: CalculiX.h:41
static char * orname1
Definition: objectivemain_se.c:26
static ITG * mi1
Definition: objectivemain_se.c:29
static double * stx1
Definition: objectivemain_se.c:42
static double * dtime1
Definition: objectivemain_se.c:42
static ITG * nplicon1
Definition: objectivemain_se.c:29
static ITG network1
Definition: objectivemain_se.c:29
static double * pslavsurf1
Definition: objectivemain_se.c:42
static ITG * ne1
Definition: objectivemain_se.c:29
static ITG * ilboun1
Definition: objectivemain_se.c:29
static double * trab1
Definition: objectivemain_se.c:47
static double * xstaten1
Definition: objectivemain_se.c:47
static ITG * iendset1
Definition: objectivemain_se.c:29
void resultsstr(double *co, ITG *nk, ITG *kon, ITG *ipkon, char *lakon, ITG *ne, double *v, double *stn, ITG *inum, double *stx, double *elcon, ITG *nelcon, double *rhcon, ITG *nrhcon, double *alcon, ITG *nalcon, double *alzero, ITG *ielmat, ITG *ielorien, ITG *norien, double *orab, ITG *ntmat_, double *t0, double *t1, ITG *ithermal, double *prestr, ITG *iprestr, char *filab, double *eme, double *emn, double *een, ITG *iperturb, double *f, double *fn, ITG *nactdof, ITG *iout, double *qa, double *vold, double *b, ITG *nodeboun, ITG *ndirboun, double *xboun, ITG *nboun, ITG *ipompc, ITG *nodempc, double *coefmpc, char *labmpc, ITG *nmpc, ITG *nmethod, double *vmax, ITG *neq, double *veold, double *accold, double *beta, double *gamma, double *dtime, double *time, double *ttime, double *plicon, ITG *nplicon, double *plkcon, ITG *nplkcon, double *xstateini, double *xstiff, double *xstate, ITG *npmat_, double *epl, char *matname, ITG *mi, ITG *ielas, ITG *icmd, ITG *ncmat_, ITG *nstate_, double *stiini, double *vini, ITG *ikboun, ITG *ilboun, double *ener, double *enern, double *emeini, double *xstaten, double *eei, double *enerini, double *cocon, ITG *ncocon, char *set, ITG *nset, ITG *istartset, ITG *iendset, ITG *ialset, ITG *nprint, char *prlab, char *prset, double *qfx, double *qfn, double *trab, ITG *inotr, ITG *ntrans, double *fmpc, ITG *nelemload, ITG *nload, ITG *ikmpc, ITG *ilmpc, ITG *istep, ITG *iinc, double *springarea, double *reltime, ITG *ne0, double *xforc, ITG *nforc, double *thicke, double *shcon, ITG *nshcon, char *sideload, double *xload, double *xloadold, ITG *icfd, ITG *inomat, double *pslavsurf, double *pmastsurf, ITG *mortar, ITG *islavact, double *cdn, ITG *islavnode, ITG *nslavnode, ITG *ntie, double *clearini, ITG *islavsurf, ITG *ielprop, double *prop, double *energyini, double *energy, ITG *kscale, ITG *nener, char *orname, ITG *network, ITG *neapar, ITG *nebpar)
Definition: resultsstr.c:40
static ITG * neq1
Definition: objectivemain_se.c:29
static ITG * nboun1
Definition: objectivemain_se.c:29
static double * f1
Definition: objectivemain_se.c:47
subroutine writedeigdx(iev, d, ndesi, orname, dgdx)
Definition: writedeigdx.f:20
void * stress_senmt(ITG *i)
Definition: objectivemain_se.c:1231
static ITG * ielmat1
Definition: objectivemain_se.c:29
static ITG * nasym1
Definition: objectivemain_se.c:29
static ITG * nshcon1
Definition: objectivemain_se.c:29
static double * vold1
Definition: objectivemain_se.c:42
static double * distmin1
Definition: objectivemain_se.c:42
static ITG * ikboun1
Definition: objectivemain_se.c:29
static ITG * iinc1
Definition: objectivemain_se.c:29
static double * xforc1
Definition: objectivemain_se.c:47
static ITG * icfd1
Definition: objectivemain_se.c:29
static double * eei1
Definition: objectivemain_se.c:42
static ITG * nmpc1
Definition: objectivemain_se.c:29
static ITG * nodempc1
Definition: objectivemain_se.c:29
static char * labmpc1
Definition: objectivemain_se.c:26
static ITG * nforc1
Definition: objectivemain_se.c:29
static double * qfn1
Definition: objectivemain_se.c:47
static char * lakon1
Definition: objectivemain_se.c:26
void tau_solve(double *b, ITG *neq)
static ITG * mortar1
Definition: objectivemain_se.c:29
subroutine createinum(ipkon, inum, kon, lakon, nk, ne, cflag, nelemload, nload, nodeboun, nboun, ndirboun, ithermal, co, vold, mi, ielmat)
Definition: createinum.f:21
void spooles_factor(double *ad, double *au, double *adb, double *aub, double *sigma, ITG *icol, ITG *irow, ITG *neq, ITG *nzs, ITG *symmetryflag, ITG *inputformat, ITG *nzs3)
static ITG * ndirboun1
Definition: objectivemain_se.c:29
static ITG * islavact1
Definition: objectivemain_se.c:29
static double * elcon1
Definition: objectivemain_se.c:42
int pthread_join(pthread_t thread, void **status_ptr)
static ITG * nelcon1
Definition: objectivemain_se.c:29
void spooles_cleanup()
static ITG * ne01
Definition: objectivemain_se.c:29
static ITG * ncocon1
Definition: objectivemain_se.c:29
static double * epn1
Definition: objectivemain_se.c:47
static ITG * nslavnode1
Definition: objectivemain_se.c:29
static ITG * ilmpc1
Definition: objectivemain_se.c:29
static ITG * inotr1
Definition: objectivemain_se.c:29
static ITG * nodeboun1
Definition: objectivemain_se.c:29
static double * vini1
Definition: objectivemain_se.c:42
static ITG * nactdof1
Definition: objectivemain_se.c:29
static ITG * iprestr1
Definition: objectivemain_se.c:29
#define ITG
Definition: CalculiX.h:51
static ITG nestart1
Definition: objectivemain_se.c:29
static ITG * istartdesi1
Definition: objectivemain_se.c:29
static double * prop1
Definition: objectivemain_se.c:42
static double * thicke1
Definition: objectivemain_se.c:42
static double * energyini1
Definition: objectivemain_se.c:47
static ITG * islavsurf1
Definition: objectivemain_se.c:29
static char * matname1
Definition: objectivemain_se.c:26
void tau_factor(double *ad, double **aup, double *adb, double *aub, double *sigma, ITG *icol, ITG **irowp, ITG *neq, ITG *nzs)
void pardiso_solve(double *b, ITG *neq, ITG *symmetryflag)
static ITG * ielorien1
Definition: objectivemain_se.c:29
static char * filabl1
Definition: objectivemain_se.c:26
static double * xstiff1
Definition: objectivemain_se.c:42
subroutine rotationvector(a, v)
Definition: rotationvector.f:20
#define NNEW(a, b, c)
Definition: CalculiX.h:39
static ITG * nset1
Definition: objectivemain_se.c:29
static ITG iobject1
Definition: objectivemain_se.c:29
static ITG * nelemload1
Definition: objectivemain_se.c:29
static ITG num_cpuse
Definition: objectivemain_se.c:29
static double * shcon1
Definition: objectivemain_se.c:47
static double * gam1
Definition: objectivemain_se.c:47
static double * stn1
Definition: objectivemain_se.c:47
static double * xstate1
Definition: objectivemain_se.c:42
static double * springarea1
Definition: objectivemain_se.c:42
static ITG * nrhcon1
Definition: objectivemain_se.c:29
subroutine actideactistr(set, nset, istartset, iendset, ialset, objectset, ipkon, iobject, ne, neinset, iponoel, inoel, nepar)
Definition: actideactistr.f:22
static ITG * ipompc1
Definition: objectivemain_se.c:29
static ITG * nodedesi1
Definition: objectivemain_se.c:29
void * objectivemt_shapeener_dx(ITG *i)
Definition: objectivemain_se.c:1173
static char * prlab1
Definition: objectivemain_se.c:26
static ITG * ipkon1
Definition: objectivemain_se.c:29

◆ objectivemt_mass_dx()

void* objectivemt_mass_dx ( ITG i)
1205  {
1206 
1207  ITG nea,neb,nedelta,indexg0,indexdgdx;
1208 
1209  indexg0=*i**nobject1;
1210  indexdgdx=*i**nobject1**ndesi1;
1211 
1212  nedelta=(ITG)floor(*ne1/(double)num_cpuse);
1213  nea=*i*nedelta+1;
1214  neb=(*i+1)*nedelta;
1215  if((*i==num_cpuse-1)&&(neb<*ne1)) neb=*ne1;
1216 
1219  thicke1,mortar1,&nea,&neb,ielprop1,prop1,distmin1,ndesi1,nodedesi1,
1220  nobject1,&g01[indexg0],&dgdx1[indexdgdx],&iobject1,xmass1,
1222 
1223  return NULL;
1224 }
static double * g01
Definition: objectivemain_se.c:42
static double * co1
Definition: objectivemain_se.c:42
static double * dgdx1
Definition: objectivemain_se.c:42
static ITG * ielprop1
Definition: objectivemain_se.c:29
static double * xmass1
Definition: objectivemain_se.c:47
static ITG * ndesi1
Definition: objectivemain_se.c:29
subroutine objective_mass_dx(co, kon, ipkon, lakon, nelcon, rhcon, ielmat, ielorien, norien, ntmat_, matname, mi, thicke, mortar, nea, neb, ielprop, prop, distmin, ndesi, nodedesi, nobject, g0, dgdx, iobject, xmass, istartdesi, ialdesi, xdesi, idesvar)
Definition: objective_mass_dx.f:24
static ITG * ntmat1_
Definition: objectivemain_se.c:29
static double * xdesi1
Definition: objectivemain_se.c:42
void FORTRAN(actideacti,(char *set, ITG *nset, ITG *istartset, ITG *iendset, ITG *ialset, char *objectset, ITG *ipkon, ITG *ibject, ITG *ne))
static ITG idesvar1
Definition: objectivemain_se.c:29
static ITG * ialdesi1
Definition: objectivemain_se.c:29
static ITG * norien1
Definition: objectivemain_se.c:29
static double * rhcon1
Definition: objectivemain_se.c:42
static ITG * kon1
Definition: objectivemain_se.c:29
static ITG * nobject1
Definition: objectivemain_se.c:29
static ITG * mi1
Definition: objectivemain_se.c:29
static ITG * ne1
Definition: objectivemain_se.c:29
static ITG * ielmat1
Definition: objectivemain_se.c:29
static double * distmin1
Definition: objectivemain_se.c:42
static char * lakon1
Definition: objectivemain_se.c:26
static ITG * mortar1
Definition: objectivemain_se.c:29
static ITG * nelcon1
Definition: objectivemain_se.c:29
#define ITG
Definition: CalculiX.h:51
static ITG * istartdesi1
Definition: objectivemain_se.c:29
static double * prop1
Definition: objectivemain_se.c:42
static double * thicke1
Definition: objectivemain_se.c:42
static char * matname1
Definition: objectivemain_se.c:26
static ITG * ielorien1
Definition: objectivemain_se.c:29
static ITG iobject1
Definition: objectivemain_se.c:29
static ITG num_cpuse
Definition: objectivemain_se.c:29
static ITG * nodedesi1
Definition: objectivemain_se.c:29
static ITG * ipkon1
Definition: objectivemain_se.c:29

◆ objectivemt_shapeener_dx()

void* objectivemt_shapeener_dx ( ITG i)
1173  {
1174 
1175  ITG nea,neb,nedelta,indexg0,indexdgdx;
1176 
1177  indexg0=*i**nobject1;
1178  indexdgdx=*i**nobject1**ndesi1;
1179 
1180  nedelta=(ITG)floor(*ne1/(double)num_cpuse);
1181  nea=*i*nedelta+1;
1182  neb=(*i+1)*nedelta;
1183  if((*i==num_cpuse-1)&&(neb<*ne1)) neb=*ne1;
1184 
1194  &nea,&neb,ielprop1,prop1,distmin1,ndesi1,nodedesi1,
1195  nobject1,&g01[indexg0],&dgdx1[indexdgdx],&iobject1,sti1,xener1,
1197 
1198  return NULL;
1199 }
static double * g01
Definition: objectivemain_se.c:42
static double * emeini1
Definition: objectivemain_se.c:42
static ITG * ithermal1
Definition: objectivemain_se.c:29
static ITG nener1
Definition: objectivemain_se.c:29
static double * pmastsurf1
Definition: objectivemain_se.c:42
static double * xener1
Definition: objectivemain_se.c:47
static double * co1
Definition: objectivemain_se.c:42
static double * xstateini1
Definition: objectivemain_se.c:42
static ITG * nstate1_
Definition: objectivemain_se.c:29
static ITG * icmd1
Definition: objectivemain_se.c:29
static double * dgdx1
Definition: objectivemain_se.c:42
static double * enerini1
Definition: objectivemain_se.c:42
static double * t01
Definition: objectivemain_se.c:42
static ITG * nmethod1
Definition: objectivemain_se.c:29
static ITG * nalcon1
Definition: objectivemain_se.c:29
static double * t11
Definition: objectivemain_se.c:42
static ITG * ielprop1
Definition: objectivemain_se.c:29
static double * ener1
Definition: objectivemain_se.c:42
static ITG calcul_qa1
Definition: objectivemain_se.c:29
static ITG * ndesi1
Definition: objectivemain_se.c:29
static double * alzero1
Definition: objectivemain_se.c:42
static double * sti1
Definition: objectivemain_se.c:42
static ITG * ntmat1_
Definition: objectivemain_se.c:29
static double * xdesi1
Definition: objectivemain_se.c:42
static ITG * nplkcon1
Definition: objectivemain_se.c:29
static ITG * ncmat1_
Definition: objectivemain_se.c:29
void FORTRAN(actideacti,(char *set, ITG *nset, ITG *istartset, ITG *iendset, ITG *ialset, char *objectset, ITG *ipkon, ITG *ibject, ITG *ne))
static double * reltime1
Definition: objectivemain_se.c:42
static ITG * ielas1
Definition: objectivemain_se.c:29
static double * clearini1
Definition: objectivemain_se.c:42
static ITG idesvar1
Definition: objectivemain_se.c:29
static double * plicon1
Definition: objectivemain_se.c:42
static ITG * iout1
Definition: objectivemain_se.c:29
static double * time1
Definition: objectivemain_se.c:42
static ITG * ialdesi1
Definition: objectivemain_se.c:29
static ITG * norien1
Definition: objectivemain_se.c:29
static double * plkcon1
Definition: objectivemain_se.c:42
static double * veold1
Definition: objectivemain_se.c:42
subroutine objective_shapeener_dx(co, kon, ipkon, lakon, ne, stx, elcon, nelcon, rhcon, nrhcon, alcon, nalcon, alzero, ielmat, ielorien, norien, orab, ntmat_, t0, t1, ithermal, prestr, iprestr, iperturb, iout, vold, nmethod, veold, dtime, time, ttime, plicon, nplicon, plkcon, nplkcon, xstateini, xstiff, xstate, npmat_, matname, mi, ielas, icmd, ncmat_, nstate_, stiini, vini, ener, enerini, istep, iinc, springarea, reltime, calcul_qa, nener, ikin, ne0, thicke, emeini, pslavsurf, pmastsurf, mortar, clearini, nea, neb, ielprop, prop, distmin, ndesi, nodedesi, nobject, g0, dgdx, iobject, sti, xener, istartdesi, ialdesi, xdesi, idesvar)
Definition: objective_shapeener_dx.f:30
static ITG * npmat1_
Definition: objectivemain_se.c:29
static double * alcon1
Definition: objectivemain_se.c:42
static ITG * istep1
Definition: objectivemain_se.c:29
static ITG * iperturb1
Definition: objectivemain_se.c:29
static ITG ikin1
Definition: objectivemain_se.c:29
static double * prestr1
Definition: objectivemain_se.c:42
static double * ttime1
Definition: objectivemain_se.c:42
static double * rhcon1
Definition: objectivemain_se.c:42
static double * orab1
Definition: objectivemain_se.c:42
static double * stiini1
Definition: objectivemain_se.c:42
static ITG * kon1
Definition: objectivemain_se.c:29
static ITG * nobject1
Definition: objectivemain_se.c:29
static ITG * mi1
Definition: objectivemain_se.c:29
static double * stx1
Definition: objectivemain_se.c:42
static double * dtime1
Definition: objectivemain_se.c:42
static ITG * nplicon1
Definition: objectivemain_se.c:29
static double * pslavsurf1
Definition: objectivemain_se.c:42
static ITG * ne1
Definition: objectivemain_se.c:29
static ITG * ielmat1
Definition: objectivemain_se.c:29
static double * vold1
Definition: objectivemain_se.c:42
static double * distmin1
Definition: objectivemain_se.c:42
static ITG * iinc1
Definition: objectivemain_se.c:29
static char * lakon1
Definition: objectivemain_se.c:26
static ITG * mortar1
Definition: objectivemain_se.c:29
static double * elcon1
Definition: objectivemain_se.c:42
static ITG * nelcon1
Definition: objectivemain_se.c:29
static ITG * ne01
Definition: objectivemain_se.c:29
static double * vini1
Definition: objectivemain_se.c:42
static ITG * iprestr1
Definition: objectivemain_se.c:29
#define ITG
Definition: CalculiX.h:51
static ITG * istartdesi1
Definition: objectivemain_se.c:29
static double * prop1
Definition: objectivemain_se.c:42
static double * thicke1
Definition: objectivemain_se.c:42
static char * matname1
Definition: objectivemain_se.c:26
static ITG * ielorien1
Definition: objectivemain_se.c:29
static double * xstiff1
Definition: objectivemain_se.c:42
static ITG iobject1
Definition: objectivemain_se.c:29
static ITG num_cpuse
Definition: objectivemain_se.c:29
static double * xstate1
Definition: objectivemain_se.c:42
static double * springarea1
Definition: objectivemain_se.c:42
static ITG * nrhcon1
Definition: objectivemain_se.c:29
static ITG * nodedesi1
Definition: objectivemain_se.c:29
static ITG * ipkon1
Definition: objectivemain_se.c:29

◆ stress_senmt()

void* stress_senmt ( ITG i)
1231  {
1232 
1233  ITG idesvara,idesvarb,indexb;
1234 
1235  /* next design variable to tread (FORTRAN-notation) */
1236 
1237  idesvara=idesvar1+(*i)+1;
1238  idesvarb=idesvara;
1239  indexb=*i*neq1[1];
1240 
1260  &idesvara,&idesvarb,nasym1,isolver1,distmin1,&nodeset1,
1261  &b1[indexb]);
1262 
1263  return NULL;
1264 }
static double * g01
Definition: objectivemain_se.c:42
static double * emeini1
Definition: objectivemain_se.c:42
static ITG * ithermal1
Definition: objectivemain_se.c:29
static ITG * nprint1
Definition: objectivemain_se.c:29
static double * pmastsurf1
Definition: objectivemain_se.c:42
static double * co1
Definition: objectivemain_se.c:42
static double * xstateini1
Definition: objectivemain_se.c:42
static ITG * nstate1_
Definition: objectivemain_se.c:29
static double * dgdx1
Definition: objectivemain_se.c:42
static double * enerini1
Definition: objectivemain_se.c:42
static double * t01
Definition: objectivemain_se.c:42
static ITG * nmethod1
Definition: objectivemain_se.c:29
static double * coefmpc1
Definition: objectivemain_se.c:47
static double * qfx1
Definition: objectivemain_se.c:47
static ITG * nalcon1
Definition: objectivemain_se.c:29
static double * t11
Definition: objectivemain_se.c:42
static ITG * ielprop1
Definition: objectivemain_se.c:29
void stress_sen(double *co, ITG *nk, ITG *kon, ITG *ipkon, char *lakon, ITG *ne, double *stn, double *elcon, ITG *nelcon, double *rhcon, ITG *nrhcon, double *alcon, ITG *nalcon, double *alzero, ITG *ielmat, ITG *ielorien, ITG *norien, double *orab, ITG *ntmat_, double *t0, double *t1, ITG *ithermal, double *prestr, ITG *iprestr, char *filab, double *emn, double *een, ITG *iperturb, double *f, ITG *nactdof, double *vold, ITG *nodeboun, ITG *ndirboun, double *xboun, ITG *nboun, ITG *ipompc, ITG *nodempc, double *coefmpc, char *labmpc, ITG *nmpc, ITG *nmethod, double *cam, ITG *neq, double *veold, double *accold, double *bet, double *gam, double *dtime, double *time, double *ttime, double *plicon, ITG *nplicon, double *plkcon, ITG *nplkcon, double *xstateini, double *xstate, ITG *npmat_, double *epn, char *matname, ITG *mi, ITG *ielas, ITG *ncmat_, ITG *nstate_, double *stiini, double *vini, ITG *ikboun, ITG *ilboun, double *enern, double *emeini, double *xstaten, double *enerini, double *cocon, ITG *ncocon, char *set, ITG *nset, ITG *istartset, ITG *iendset, ITG *ialset, ITG *nprint, char *prlab, char *prset, double *qfx, double *qfn, double *trab, ITG *inotr, ITG *ntrans, double *fmpc, ITG *nelemload, ITG *nload, ITG *ikmpc, ITG *ilmpc, ITG *istep, ITG *iinc, double *springarea, double *reltime, ITG *ne0, double *xforc, ITG *nforc, double *thicke, double *shcon, ITG *nshcon, char *sideload, double *xload, double *xloadold, ITG *icfd, ITG *inomat, double *pslavsurf, double *pmastsurf, ITG *mortar, ITG *islavact, double *cdn, ITG *islavnode, ITG *nslavnode, ITG *ntie, double *clearini, ITG *islavsurf, ITG *ielprop, double *prop, double *energyini, double *energy, ITG *kscale, char *orname, ITG *network, ITG *nestart, ITG *neend, ITG *jqs, ITG *irows, ITG *nodedesi, double *xdesi, ITG *ndesi, ITG *iobject, ITG *nobject, char *objectset, double *g0, double *dgdx, ITG *idesvara, ITG *idesvarb, ITG *nasym, ITG *isolver, double *distmin, ITG *nodeset, double *b)
Definition: stress_sen.c:26
static ITG * nload1
Definition: objectivemain_se.c:29
static ITG * ndesi1
Definition: objectivemain_se.c:29
static double * accold1
Definition: objectivemain_se.c:47
static double * alzero1
Definition: objectivemain_se.c:42
static ITG neend1
Definition: objectivemain_se.c:29
static ITG * ialset1
Definition: objectivemain_se.c:29
static double * xboun1
Definition: objectivemain_se.c:47
static ITG * ntmat1_
Definition: objectivemain_se.c:29
static double * xdesi1
Definition: objectivemain_se.c:42
static ITG * nplkcon1
Definition: objectivemain_se.c:29
static ITG * islavnode1
Definition: objectivemain_se.c:29
static ITG * nk1
Definition: objectivemain_se.c:29
static double * emn1
Definition: objectivemain_se.c:47
static ITG * ntie1
Definition: objectivemain_se.c:29
static ITG * ntrans1
Definition: objectivemain_se.c:29
static ITG * ncmat1_
Definition: objectivemain_se.c:29
static double * reltime1
Definition: objectivemain_se.c:42
static double * xloadold1
Definition: objectivemain_se.c:47
static ITG * ielas1
Definition: objectivemain_se.c:29
static double * cdn1
Definition: objectivemain_se.c:47
static double * clearini1
Definition: objectivemain_se.c:42
static double * energy1
Definition: objectivemain_se.c:47
static ITG idesvar1
Definition: objectivemain_se.c:29
static double * plicon1
Definition: objectivemain_se.c:42
static char * prset1
Definition: objectivemain_se.c:26
static ITG * isolver1
Definition: objectivemain_se.c:29
static ITG * inomat1
Definition: objectivemain_se.c:29
static double * time1
Definition: objectivemain_se.c:42
static ITG * norien1
Definition: objectivemain_se.c:29
static ITG * istartset1
Definition: objectivemain_se.c:29
static ITG * jqs1
Definition: objectivemain_se.c:29
static double * fmpc1
Definition: objectivemain_se.c:47
static ITG * irows1
Definition: objectivemain_se.c:29
static ITG kscale1
Definition: objectivemain_se.c:29
static double * plkcon1
Definition: objectivemain_se.c:42
static double * veold1
Definition: objectivemain_se.c:42
static char * sideload1
Definition: objectivemain_se.c:26
static ITG * npmat1_
Definition: objectivemain_se.c:29
static double * cam1
Definition: objectivemain_se.c:47
static double * alcon1
Definition: objectivemain_se.c:42
static ITG * istep1
Definition: objectivemain_se.c:29
static double * cocon1
Definition: objectivemain_se.c:47
static ITG * iperturb1
Definition: objectivemain_se.c:29
static ITG * ikmpc1
Definition: objectivemain_se.c:29
static char * objectset1
Definition: objectivemain_se.c:26
static double * b1
Definition: objectivemain_se.c:47
static ITG nodeset1
Definition: objectivemain_se.c:29
static double * prestr1
Definition: objectivemain_se.c:42
static double * een1
Definition: objectivemain_se.c:47
static double * xload1
Definition: objectivemain_se.c:47
static double * bet1
Definition: objectivemain_se.c:47
static double * ttime1
Definition: objectivemain_se.c:42
static double * enern1
Definition: objectivemain_se.c:47
static double * rhcon1
Definition: objectivemain_se.c:42
static double * orab1
Definition: objectivemain_se.c:42
static double * stiini1
Definition: objectivemain_se.c:42
static ITG * kon1
Definition: objectivemain_se.c:29
static char * set1
Definition: objectivemain_se.c:26
static ITG * nobject1
Definition: objectivemain_se.c:29
static char * orname1
Definition: objectivemain_se.c:26
static ITG * mi1
Definition: objectivemain_se.c:29
static double * dtime1
Definition: objectivemain_se.c:42
static ITG * nplicon1
Definition: objectivemain_se.c:29
static ITG network1
Definition: objectivemain_se.c:29
static double * pslavsurf1
Definition: objectivemain_se.c:42
static ITG * ne1
Definition: objectivemain_se.c:29
static ITG * ilboun1
Definition: objectivemain_se.c:29
static double * trab1
Definition: objectivemain_se.c:47
static double * xstaten1
Definition: objectivemain_se.c:47
static ITG * iendset1
Definition: objectivemain_se.c:29
static ITG * neq1
Definition: objectivemain_se.c:29
static ITG * nboun1
Definition: objectivemain_se.c:29
static double * f1
Definition: objectivemain_se.c:47
static ITG * ielmat1
Definition: objectivemain_se.c:29
static ITG * nasym1
Definition: objectivemain_se.c:29
static ITG * nshcon1
Definition: objectivemain_se.c:29
static double * vold1
Definition: objectivemain_se.c:42
static double * distmin1
Definition: objectivemain_se.c:42
static ITG * ikboun1
Definition: objectivemain_se.c:29
static ITG * iinc1
Definition: objectivemain_se.c:29
static double * xforc1
Definition: objectivemain_se.c:47
static ITG * icfd1
Definition: objectivemain_se.c:29
static ITG * nmpc1
Definition: objectivemain_se.c:29
static ITG * nodempc1
Definition: objectivemain_se.c:29
static char * labmpc1
Definition: objectivemain_se.c:26
static ITG * nforc1
Definition: objectivemain_se.c:29
static double * qfn1
Definition: objectivemain_se.c:47
static char * lakon1
Definition: objectivemain_se.c:26
static ITG * mortar1
Definition: objectivemain_se.c:29
static ITG * ndirboun1
Definition: objectivemain_se.c:29
static ITG * islavact1
Definition: objectivemain_se.c:29
static double * elcon1
Definition: objectivemain_se.c:42
static ITG * nelcon1
Definition: objectivemain_se.c:29
static ITG * ne01
Definition: objectivemain_se.c:29
static ITG * ncocon1
Definition: objectivemain_se.c:29
static double * epn1
Definition: objectivemain_se.c:47
static ITG * nslavnode1
Definition: objectivemain_se.c:29
static ITG * ilmpc1
Definition: objectivemain_se.c:29
static ITG * inotr1
Definition: objectivemain_se.c:29
static ITG * nodeboun1
Definition: objectivemain_se.c:29
static double * vini1
Definition: objectivemain_se.c:42
static ITG * nactdof1
Definition: objectivemain_se.c:29
static ITG * iprestr1
Definition: objectivemain_se.c:29
#define ITG
Definition: CalculiX.h:51
static ITG nestart1
Definition: objectivemain_se.c:29
static double * prop1
Definition: objectivemain_se.c:42
static double * thicke1
Definition: objectivemain_se.c:42
static double * energyini1
Definition: objectivemain_se.c:47
static ITG * islavsurf1
Definition: objectivemain_se.c:29
static char * matname1
Definition: objectivemain_se.c:26
static ITG * ielorien1
Definition: objectivemain_se.c:29
static char * filabl1
Definition: objectivemain_se.c:26
static ITG * nset1
Definition: objectivemain_se.c:29
static ITG iobject1
Definition: objectivemain_se.c:29
static ITG * nelemload1
Definition: objectivemain_se.c:29
static double * shcon1
Definition: objectivemain_se.c:47
static double * gam1
Definition: objectivemain_se.c:47
static double * stn1
Definition: objectivemain_se.c:47
static double * xstate1
Definition: objectivemain_se.c:42
static double * springarea1
Definition: objectivemain_se.c:42
static ITG * nrhcon1
Definition: objectivemain_se.c:29
static ITG * ipompc1
Definition: objectivemain_se.c:29
static ITG * nodedesi1
Definition: objectivemain_se.c:29
static char * prlab1
Definition: objectivemain_se.c:26
static ITG * ipkon1
Definition: objectivemain_se.c:29

Variable Documentation

◆ accold1

double * accold1
static

◆ alcon1

double * alcon1
static

◆ alzero1

double * alzero1
static

◆ b1

double * b1
static

◆ bet1

double * bet1
static

◆ calcul_qa1

ITG calcul_qa1
static

◆ cam1

double * cam1
static

◆ cdn1

double * cdn1
static

◆ clearini1

double * clearini1
static

◆ co1

double* co1
static

◆ cocon1

double * cocon1
static

◆ coefmpc1

double * coefmpc1
static

◆ dgdx1

double * dgdx1
static

◆ distmin1

double * distmin1
static

◆ dtime1

double * dtime1
static

◆ eei1

double * eei1
static

◆ een1

double * een1
static

◆ elcon1

double * elcon1
static

◆ emeini1

double * emeini1
static

◆ emn1

double * emn1
static

◆ ener1

double * ener1
static

◆ energy1

double * energy1
static

◆ energyini1

double * energyini1
static

◆ enerini1

double * enerini1
static

◆ enern1

double * enern1
static

◆ epn1

double * epn1
static

◆ f1

double * f1
static

◆ filabl1

char * filabl1
static

◆ fmpc1

double * fmpc1
static

◆ fn1

double * fn1
static

◆ g01

double * g01
static

◆ gam1

double * gam1
static

◆ ialdesi1

ITG * ialdesi1
static

◆ ialset1

ITG * ialset1
static

◆ icfd1

ITG * icfd1
static

◆ icmd1

ITG * icmd1
static

◆ idesvar1

ITG idesvar1
static

◆ ielas1

ITG * ielas1
static

◆ ielmat1

ITG * ielmat1
static

◆ ielorien1

ITG * ielorien1
static

◆ ielprop1

ITG * ielprop1
static

◆ iendset1

ITG * iendset1
static

◆ iinc1

ITG * iinc1
static

◆ ikboun1

ITG * ikboun1
static

◆ ikin1

ITG ikin1
static

◆ ikmpc1

ITG * ikmpc1
static

◆ ilboun1

ITG * ilboun1
static

◆ ilmpc1

ITG * ilmpc1
static

◆ inomat1

ITG * inomat1
static

◆ inotr1

ITG * inotr1
static

◆ iobject1

ITG iobject1
static

◆ iout1

ITG * iout1
static

◆ iperturb1

ITG * iperturb1
static

◆ ipkon1

ITG * ipkon1
static

◆ ipompc1

ITG * ipompc1
static

◆ iprestr1

ITG * iprestr1
static

◆ irows1

ITG * irows1
static

◆ islavact1

ITG * islavact1
static

◆ islavnode1

ITG * islavnode1
static

◆ islavsurf1

ITG * islavsurf1
static

◆ isolver1

ITG * isolver1
static

◆ istartdesi1

ITG * istartdesi1
static

◆ istartset1

ITG * istartset1
static

◆ istep1

ITG * istep1
static

◆ ithermal1

ITG * ithermal1
static

◆ jqs1

ITG * jqs1
static

◆ kon1

ITG* kon1
static

◆ kscale1

ITG kscale1
static

◆ labmpc1

char * labmpc1
static

◆ lakon1

char* lakon1
static

◆ matname1

char * matname1
static

◆ mi1

ITG * mi1
static

◆ mortar1

ITG * mortar1
static

◆ nactdof1

ITG * nactdof1
static

◆ nalcon1

ITG * nalcon1
static

◆ nasym1

ITG * nasym1
static

◆ nboun1

ITG * nboun1
static

◆ ncmat1_

ITG * ncmat1_
static

◆ ncocon1

ITG * ncocon1
static

◆ ndesi1

ITG * ndesi1
static

◆ ndirboun1

ITG * ndirboun1
static

◆ ne01

ITG * ne01
static

◆ ne1

ITG * ne1
static

◆ neend1

ITG neend1
static

◆ nelcon1

ITG * nelcon1
static

◆ nelemload1

ITG * nelemload1
static

◆ nener1

ITG nener1
static

◆ neq1

ITG * neq1
static

◆ nestart1

ITG nestart1
static

◆ network1

ITG network1
static

◆ nforc1

ITG * nforc1
static

◆ nk1

ITG * nk1
static

◆ nload1

ITG * nload1
static

◆ nmethod1

ITG * nmethod1
static

◆ nmpc1

ITG * nmpc1
static

◆ nobject1

ITG * nobject1
static

◆ nodeboun1

ITG * nodeboun1
static

◆ nodedesi1

ITG * nodedesi1
static

◆ nodempc1

ITG * nodempc1
static

◆ nodeset1

ITG nodeset1
static

◆ norien1

ITG * norien1
static

◆ nplicon1

ITG * nplicon1
static

◆ nplkcon1

ITG * nplkcon1
static

◆ npmat1_

ITG * npmat1_
static

◆ nprint1

ITG * nprint1
static

◆ nrhcon1

ITG * nrhcon1
static

◆ nset1

ITG * nset1
static

◆ nshcon1

ITG * nshcon1
static

◆ nslavnode1

ITG * nslavnode1
static

◆ nstate1_

ITG * nstate1_
static

◆ ntie1

ITG * ntie1
static

◆ ntmat1_

ITG * ntmat1_
static

◆ ntrans1

ITG * ntrans1
static

◆ num_cpusd

ITG num_cpusd
static

◆ num_cpuse

ITG num_cpuse
static

◆ objectset1

char * objectset1
static

◆ orab1

double * orab1
static

◆ orname1

char * orname1
static

◆ plicon1

double * plicon1
static

◆ plkcon1

double * plkcon1
static

◆ pmastsurf1

double * pmastsurf1
static

◆ prestr1

double * prestr1
static

◆ prlab1

char * prlab1
static

◆ prop1

double * prop1
static

◆ prset1

char * prset1
static

◆ pslavsurf1

double * pslavsurf1
static

◆ qfn1

double * qfn1
static

◆ qfx1

double * qfx1
static

◆ reltime1

double * reltime1
static

◆ rhcon1

double * rhcon1
static

◆ set1

char * set1
static

◆ shcon1

double * shcon1
static

◆ sideload1

char * sideload1
static

◆ springarea1

double * springarea1
static

◆ sti1

double * sti1
static

◆ stiini1

double * stiini1
static

◆ stn1

double * stn1
static

◆ stx1

double * stx1
static

◆ t01

double * t01
static

◆ t11

double * t11
static

◆ thicke1

double * thicke1
static

◆ time1

double * time1
static

◆ trab1

double * trab1
static

◆ ttime1

double * ttime1
static

◆ v1

double * v1
static

◆ veold1

double * veold1
static

◆ vini1

double * vini1
static

◆ vold1

double * vold1
static

◆ xboun1

double * xboun1
static

◆ xdesi1

double * xdesi1
static

◆ xener1

double * xener1 =NULL
static

◆ xforc1

double * xforc1
static

◆ xload1

double * xload1
static

◆ xloadold1

double * xloadold1
static

◆ xmass1

double * xmass1 =NULL
static

◆ xstate1

double * xstate1
static

◆ xstateini1

double * xstateini1
static

◆ xstaten1

double * xstaten1
static

◆ xstiff1

double * xstiff1
static
Hosted by OpenAircraft.com, (Michigan UAV, LLC)