86 ITG nhrs=1,info=0,i,j,iin=0,icntrl,icutb=0,iin_abs=0,mt=mi[1]+1,im,
87 symmetryflag=2,inputformat=1,node,channel,*ithread=NULL,iplausi;
89 static ITG ifactorization=0;
91 double camt[2],camf[2],camp[2],qat,qaf,ramt,ramf,ramp,
92 cam1t=0.,cam1f=0.,cam1p=0.,sidemean,qa0,qau,ea,*prop_store=NULL,
93 cam2t=0.,cam2f=0.,cam2p=0.,dtheta=1.,*v=NULL,cama[2],cam1a=0.,
94 cam2a=0.,vamt=0.,vamf=0.,vamp=0.,vama=0.,cam0t=0.,cam0f=0.,
95 cam0p=0.,cam0a=0.,sigma=0.,*adbrad=NULL,*aubrad=NULL,*q=NULL,
96 *area=NULL,*pmid=NULL,*e1=NULL,*e2=NULL,*e3=NULL,
97 qamt,qamf,qamtold,qamfold;
101 qa0=ctrl[20];qau=ctrl[21];ea=ctrl[23];
108 NNEW(v,
double,mt**nk);
114 NNEW(prop_store,
double,*nprop);
115 memcpy(&prop_store[0],&prop[0],
sizeof(
double)**nprop);
117 prop_store,ttime,time,nam,amname,namta,amta));
127 memcpy(&v[0],&vold[0],
sizeof(
double)*mt**nk);
135 if(iin_abs==0)
DMEMSET(ineighe,0,*ntg,0);
145 ikboun,nboun,prop,ielprop,nactdog,ndirboun,
146 nodeboun,xbounact,ielmat,ntmat_,shcon,nshcon,
147 physcon,ipiv,nteq,rhcon,nrhcon,ipobody,ibody,
148 xbodyact,co,nbody,network,&iin_abs,vold,
set,
149 istep,iit,mi,ineighe,ilboun,&channel,iaxial,
150 nmpc,labmpc,ipompc,nodempc,coefmpc,ttime,time,
158 ikboun,nboun,prop,ielprop,nactdog,ndirboun,
159 nodeboun,xbounact,ielmat,ntmat_,shcon,nshcon,
160 physcon,ipiv,nteq,rhcon,nrhcon,ipobody,ibody,
161 xbodyact,co,nbody,network,&iin_abs,vold,
set,
162 istep,iit,mi,ineighe,ilboun,ttime,time,iaxial));
169 lakon,ntmat_,v,shcon,nshcon,ipkon,kon,co,nflow,
170 iinc,istep,dtime,ttime,time,
171 ikforc,ilforc,xforcact,
172 nforc,ielmat,nteq,prop,ielprop,nactdog,nacteq,&iin,
173 physcon,camt,camf,camp,rhcon,nrhcon,ipobody,
174 ibody,xbodyact,nbody,&dtheta,vold,xloadold,
175 reltime,nmethod,
set,mi,ineighe,cama,&vamt,
176 &vamf,&vamp,&vama,nmpc,nodempc,ipompc,coefmpc,
177 labmpc,iaxial,&qat,&qaf,&ramt,&ramf,&ramp,
178 cocon,ncocon,iponoel,inoel,&iplausi));
183 if(qau>1.e-10){qamt=qau;}
184 else if(qa0>1.e-10){qamt=qa0;}
185 else if(qat>1.e-10){qamt=qat;}
188 if(qau>1.e-10){qamf=qau;}
189 else if(qa0>1.e-10){qamf=qa0;}
190 else if(qaf>1.e-10){qamf=qaf;}
196 printf(
" gas iteration %" ITGFORMAT " \n \n",iin);
207 nelemload,xloadact,lakon,ntmat_,v,
208 shcon,nshcon,ipkon,kon,co,nflow,iinc,
209 istep,dtime,ttime,time,
210 ielmat,nteq,prop,ielprop,nactdog,nacteq,
211 physcon,rhcon,nrhcon,ipobody,ibody,xbodyact,
212 nbody,vold,xloadold,reltime,nmethod,
set,mi,
213 nmpc,nodempc,ipompc,coefmpc,labmpc,iaxial,
214 cocon,ncocon,iponoel,inoel));
226 printf(
" *WARNING in radflowload: singular matrix\n");
229 nelemload,xloadact,lakon,ntmat_,v,
230 shcon,nshcon,ipkon,kon,co,nflow,iinc,
231 istep,dtime,ttime,time,
232 ielmat,nteq,prop,ielprop,nactdog,nacteq,
233 physcon,rhcon,nrhcon,ipobody,ibody,xbodyact,
234 nbody,vold,xloadold,reltime,nmethod,
set,mi,
235 nmpc,nodempc,ipompc,coefmpc,labmpc,iaxial,
236 cocon,ncocon,iponoel,inoel));
248 xloadact,lakon,ntmat_,v,shcon,nshcon,ipkon,kon,co,
249 nflow,iinc,istep,dtime,ttime,time,ikforc,ilforc,xforcact,
250 nforc,ielmat,nteq,prop,ielprop,nactdog,nacteq,
251 &iin,physcon,camt,camf,camp,rhcon,nrhcon,ipobody,
252 ibody,xbodyact,nbody,&dtheta,vold,xloadold,
253 reltime,nmethod,
set,mi,ineighe,cama,&vamt,
254 &vamf,&vamp,&vama,nmpc,nodempc,ipompc,coefmpc,labmpc,
255 iaxial,&qat,&qaf,&ramt,&ramf,&ramp,cocon,ncocon,iponoel,
261 if(qat>ea*qamt){qamt=(qamtold*iin+qat)/(iin+1);}
263 if(qaf>ea*qamf){qamf=(qamfold*iin+qaf)/(iin+1);}
274 (
" mean typical energy flow since start of network iterations= %e\n",qamt);
276 (
" largest energy flow residual in present network iteration= %e\n",ramt);
278 (
" largest change of gas temperature since start of network iteratons= %e\n",vamt);
281 (
" largest correction to gas temperature in present network iteration= %e\n\n",
285 (
" largest correction to gas temperature= %e in node %" ITGFORMAT "\n\n",
286 camt[0],(
ITG)camt[1]);
295 (
" mean typical mass flow since start of network iterations= %e\n",qamf);
297 (
" largest mass flow residual in present network iteration= %e\n",ramf);
298 printf(
" largest change of gas massflow since start of network iterations= %e\n",vamf);
300 printf(
" largest correction to gas massflow in present network iteration= %e\n\n",
303 printf(
" largest correction to gas massflow= %e in node %" ITGFORMAT "\n\n",
304 camf[0],(
ITG)camf[1]);
311 (
" largest element equation residual in present network iteration= %e\n",ramp);
312 printf(
" largest change of gas pressure since start of network iterations= %e\n",vamp);
314 printf(
" largest correction to gas pressure in present network iteration= %e\n\n",
317 printf(
" largest correction to gas pressure= %e in node %" ITGFORMAT "\n\n",
318 camp[0],(
ITG)camp[1]);
324 printf(
" largest change of geometry since start of network iterations= %e\n",vama);
326 printf(
" largest correction to geometry in present network iteration= %e\n",
329 printf(
" largest correction to geometry= %e in node %" ITGFORMAT "\n",
330 cama[0],(
ITG)cama[1]);
340 if(*network<=2) {icntrl=1;}
346 &cam1t,&cam1f,&cam1p,&cam2t,&cam2f,&cam2p,&cam0t,&cam0f,
347 &cam0p,&icntrl,&dtheta,ctrl,&cam1a,&cam2a,&cam0a,
348 &vamt,&vamf,&vamp,&vama,qa,&qamt,&qamf,&ramt,&ramf,&ramp,
357 nelemload,xloadact,nactdog,network,mi,ne,ipkon,lakon,kon));
364 v,shcon,nshcon,ipkon,kon,co,nflow, dtime,ttime,time,
365 ielmat,prop,ielprop,nactdog,nacteq,&iin,physcon,
366 camt,camf,camp,rhcon,nrhcon,
367 vold,jobnamef,
set,istartset,iendset,ialset,nset,
368 mi,iaxial,istep,iit));
372 memcpy(&prop[0],&prop_store[0],
sizeof(
double)**nprop);
384 char *env,*envloc,*envsys;
391 envsys=getenv(
"NUMBER_OF_CPUS");
393 sys_cpus=atoi(envsys);
394 if(sys_cpus<0) sys_cpus=0;
401 if(sys_cpus<1) sys_cpus=1;
406 envloc = getenv(
"CCX_NPROC_VIEWFACTOR");
419 env = getenv(
"OMP_NUM_THREADS");
440 node=nelemload[2*nloadtr[i]-1];
442 tenv[i]=vold[mt*(node-1)]-physcon[0];
444 tenv[i]=xloadact[2*nloadtr[i]-1]-physcon[0];
453 if(((*ithermal==3)&&(*iviewfile>=0))||(*iit==-1)){
465 NNEW(area,
double,*ntrit);
466 NNEW(pmid,
double,3**ntrit);
467 NNEW(e1,
double,3**ntrit);
468 NNEW(e2,
double,3**ntrit);
469 NNEW(e3,
double,4**ntrit);
472 cs,mcs,inocs,ntrit,nk,mi,&sidemean));
499 printf(
" Using up to %" ITGFORMAT " cpu(s) for the viewfactor calculation.\n\n",
num_cpus);
517 for(i=0;i<2**nzsrad;i++){
563 xloadact,lakon,vold,ipkon,kon,co,nloadtr,tarea,tenv,physcon,
564 erad,
adview,
auview,ithermal,iinc,iit,fenv,istep,dtime,ttime,
565 time,iviewfile,xloadold,reltime,nmethod,mi,iemchange,nam,
566 iamload,jqrad,irowrad,nzsrad));
580 if(((*ithermal==3)&&(*iviewfile>=0))||
581 ((*iit==-1)&&(*iviewfile!=-2))||(*iemchange==1)||((*iit==0)&&(abs(*nmethod)==1))){
584 if(ifactorization==1) pardiso_cleanup_as(ntr,&symmetryflag);
585 pardiso_factor_as(adrad,aurad,adbrad,aubrad,&sigma,icolrad,
586 irowrad,ntr,nzsrad,jqrad);
588 #elif defined(SPOOLES) 591 icolrad,irowrad,ntr,nzsrad,
592 &symmetryflag,&inputformat);
595 printf(
"*ERROR in radflowload: the SPOOLES library is not linked\n\n");
604 pardiso_solve_as(bcr,ntr);
606 #elif defined(SPOOLES) 611 printf(
"*ERROR IN RADFLOWLOAD: SINGULAR MATRIX*\n");}
616 tenv,physcon,erad,
auview,fenv,
617 irowrad,jqrad,nzsrad,q));
static ITG * mi1
Definition: radflowload.c:39
#define ITGFORMAT
Definition: CalculiX.h:52
static double * co1
Definition: radflowload.c:42
subroutine initialchannel(itg, ieg, ntg, ac, bc, lakon, v, ipkon, kon, nflow, ikboun, nboun, prop, ielprop, nactdog, ndirboun, nodeboun, xbounact, ielmat, ntmat_, shcon, nshcon, physcon, ipiv, nteq, rhcon, nrhcon, ipobody, ibody, xbodyact, co, nbody, network, iin_abs, vold, set, istep, iit, mi, ineighe, ilboun, ttime, time, iaxial)
Definition: initialchannel.f:33
static ITG ng1
Definition: radflowload.c:39
int pthread_create(pthread_t *thread_id, const pthread_attr_t *attributes, void *(*thread_function)(void *), void *arguments)
static double * pmid1
Definition: radflowload.c:42
subroutine postview(ntr, sideload, nelemload, kontri, ntri, nloadtr, tenv, adview, auview, area, fenv, jqrad, irowrad, nzsrad)
Definition: postview.f:28
static ITG * ntri1
Definition: radflowload.c:39
static char * covered1
Definition: radflowload.c:37
void checkconvnet(ITG *icutb, ITG *iin, double *cam1t, double *cam1f, double *cam1p, double *cam2t, double *cam2f, double *cam2p, double *camt, double *camf, double *camp, ITG *icntrl, double *dtheta, double *ctrl, double *cam1a, double *cam2a, double *cama, double *vamt, double *vamf, double *vamp, double *vama, double *qa, double *qamt, double *qamf, double *ramt, double *ramf, double *ramp, ITG *iplausi)
Definition: checkconvnet.c:32
void spooles_factor_rad(double *ad, double *au, double *adb, double *aub, double *sigma, ITG *icol, ITG *irow, ITG *neq, ITG *nzs, ITG *symmetryflag, ITG *inputformat)
subroutine resultnet(itg, ieg, ntg, bc, nload, sideload, nelemload, xloadact, lakon, ntmat_, v, shcon, nshcon, ipkon, kon, co, nflow, iinc, istep, dtime, ttime, time, ikforc, ilforc, xforcact, nforc, ielmat, nteq, prop, ielprop, nactdog, nacteq, iin, physcon, camt, camf, camp, rhcon, nrhcon, ipobody, ibody, xbodyact, nbody, dtheta, vold, xloadold, reltime, nmethod, set, mi, ineighe, cama, vamt, vamf, vamp, vama, nmpc, nodempc, ipompc, coefmpc, labmpc, iaxial, qat, qaf, ramt, ramf, ramp, cocon, ncocon, iponoel, inoel, iplausi)
Definition: resultnet.f:31
static ITG * ntrit1
Definition: radflowload.c:39
subroutine propertynet(ieg, nflow, prop, ielprop, lakon, iin, prop_store, ttime, time, nam, amname, namta, amta)
Definition: propertynet.f:21
void FORTRAN(actideacti,(char *set, ITG *nset, ITG *istartset, ITG *iendset, ITG *ialset, char *objectset, ITG *ipkon, ITG *ibject, ITG *ne))
subroutine geomview(vold, co, pmid, e1, e2, e3, kontri, area, cs, mcs, inocs, ntrit, nk, mi, sidemean)
Definition: geomview.f:28
static ITG * nloadtr1
Definition: radflowload.c:39
subroutine radmatrix(ntr, adrad, aurad, bcr, sideload, nelemload, xloadact, lakon, vold, ipkon, kon, co, nloadtr, tarea, tenv, physcon, erad, adview, auview, ithermal, iinc, iit, fenv, istep, dtime, ttime, time, iviewfile, xloadold, reltime, nmethod, mi, iemchange, nam, iamload, jqrad, irowrad, nzsrad)
Definition: radmatrix.f:31
subroutine equationcheck(ac, nteq, nactdog, itg, ntg, nacteq, network)
Definition: equationcheck.f:23
static ITG * ntr1
Definition: radflowload.c:39
void spooles_solve_rad(double *b, ITG *neq)
ITG getSystemCPUs()
Definition: getSystemCPUs.c:40
#define DMEMSET(a, b, c, d)
Definition: CalculiX.h:45
subroutine dgesv(N, NRHS, A, LDA, IPIV, B, LDB, INFO)
Definition: dgesv.f:58
subroutine stop()
Definition: stop.f:20
static double * e31
Definition: radflowload.c:42
subroutine mafillnet(itg, ieg, ntg, ac, nload, sideload, nelemload, xloadact, lakon, ntmat_, v, shcon, nshcon, ipkon, kon, co, nflow, iinc, istep, dtime, ttime, time, ielmat, nteq, prop, ielprop, nactdog, nacteq, physcon, rhcon, nrhcon, ipobody, ibody, xbodyact, nbody, vold, xloadold, reltime, nmethod, set, mi, nmpc, nodempc, ipompc, coefmpc, labmpc, iaxial, cocon, ncocon, iponoel, inoel)
Definition: mafillnet.f:28
void * calcviewmt(ITG *i)
Definition: radflowload.c:633
static ITG * idist
Definition: radflowload.c:39
static double sidemean1
Definition: radflowload.c:42
static char * sideload1
Definition: radflowload.c:37
static double * dist
Definition: radflowload.c:42
#define RENEW(a, b, c)
Definition: CalculiX.h:40
#define SFREE(a)
Definition: CalculiX.h:41
static double * area1
Definition: radflowload.c:42
static double * vold1
Definition: radflowload.c:42
subroutine radresult(ntr, xloadact, bcr, nloadtr, tarea, tenv, physcon, erad, auview, fenv, irowrad, jqrad, nzsrad, q)
Definition: radresult.f:22
static double * e21
Definition: radflowload.c:42
static double * adview
Definition: radflowload.c:42
static ITG * jqrad1
Definition: radflowload.c:39
static double * e11
Definition: radflowload.c:42
void spooles_cleanup_rad()
static ITG * nzsrad1
Definition: radflowload.c:39
subroutine flowresult(ntg, itg, cam, vold, v, nload, sideload, nelemload, xloadact, nactdog, network, mi, ne, ipkon, lakon, kon)
Definition: flowresult.f:21
int pthread_join(pthread_t thread, void **status_ptr)
subroutine writeview(ntr, adview, auview, fenv, nzsrad, jobnamef)
Definition: writeview.f:28
static ITG * kontri1
Definition: radflowload.c:39
subroutine flowoutput(itg, ieg, ntg, nteq, bc, lakon, ntmat_, v, shcon, nshcon, ipkon, kon, co, nflow, dtime, ttime, time, ielmat, prop, ielprop, nactdog, nacteq, iin, physcon, camt, camf, camp, rhcon, nrhcon, vold, jobnamef, set, istartset, iendset, ialset, nset, mi, iaxial, istep, iit)
Definition: flowoutput.f:28
static ITG num_cpus
Definition: radflowload.c:39
#define ITG
Definition: CalculiX.h:51
subroutine readview(ntr, adview, auview, fenv, nzsrad, ithermal, jobnamef)
Definition: readview.f:28
subroutine initialnet(itg, ieg, ntg, ac, bc, lakon, v, ipkon, kon, nflow, ikboun, nboun, prop, ielprop, nactdog, ndirboun, nodeboun, xbounact, ielmat, ntmat_, shcon, nshcon, physcon, ipiv, nteq, rhcon, nrhcon, ipobody, ibody, xbodyact, co, nbody, network, iin_abs, vold, set, istep, iit, mi, ineighe, ilboun, channel, iaxial, nmpc, labmpc, ipompc, nodempc, coefmpc, ttime, time, iponoel, inoel)
Definition: initialnet.f:34
#define NNEW(a, b, c)
Definition: CalculiX.h:39
static ITG * irowrad1
Definition: radflowload.c:39
static double * auview
Definition: radflowload.c:42