Ejemplo n.º 1
0
void XtFree(xlist **xt)
{
  xlist *r=*xt;
  
  if (r) {
    if (r->loca) {
      iFree(&r->head);
      iFree(&r->port);
      iFree(&r->fwrd);
      iFree(&r->bwrd);
    }
    free(r);
    *xt=NULL;
  }
} /* XtFree */
Ejemplo n.º 2
0
int GetOrder(order *od,
             int   *p)
{
  int   ierr=0,bbufs=2,*bbuf[2]={0},
        ibufs=9,*ibuf[9]={0},
        n,*iwmd;
  xlist *xt;

  n=od->nnod;

  ierr=XtAlloc(n,n+1,"xt, GetOrder",&xt); if(ierr) return FALSE;
  ierr=iAlloc(n,"ibuf21, GetOrder",&iwmd); if(ierr) return FALSE;
  
  IptAlloc(ibufs,n,ibuf,"ibuf, GetOrder");
  IptAlloc(bbufs,n,bbuf,"bbuf, GetOrder");
  
  OdProc(od,xt,ibuf[0],ibuf[1],ibuf[2],ibuf[3],ibuf[4],ibuf[5],
         ibuf[6],ibuf[7],ibuf[8],iwmd,bbuf[0],bbuf[1],p);
    

  /*
    XtFree(&xt);
  */

  free(xt->head);
  free(xt->port);
  free(xt->fwrd);
  free(xt->bwrd);
  free(xt);

  iFree(&iwmd);
  IptFree(ibufs,ibuf);
  IptFree(bbufs,bbuf); 
  return TRUE;
} /* GetOrder */
Ejemplo n.º 3
0
void SyoFree(syoff **a) 
{ 
  syoff *r=*a; 
   
  if (r) { 
    if (r->roff) { 
      iFree(&r->roff->ja); 
      dFree(&r->roff->an); 
      free(r->roff); 
      r->roff=NULL; 
    } 
    r->nrow=0; 
    free(r); 
    *a=NULL; 
  } 
} /* SyoFree */ 
Ejemplo n.º 4
0
void SymFree(symat **a)
{
  symat *r=*a;
  
  if (r) {
    dFree(&r->diag);
    if (r->roff) {
      iFree(&r->roff->ja);
      dFree(&r->roff->an);
      free(r->roff);
      r->roff=NULL;
    }
    r->nrow=0;
    free(r);
    *a=NULL;
  }
} /* SymFree */
Ejemplo n.º 5
0
void SmtFree(smatx **a)
{
  smatx *r=*a;
  
  if (r) {
    if (r->rows) {
      iFree(&r->rows->ja);
      dFree(&r->rows->an);
      free(r->rows);
      r->rows=NULL;
    }
    
    r->maxnrow=0;
    r->nrow=0;
    free(r);
    *a=NULL;
  }
} /* SmatFree */
Ejemplo n.º 6
0
void OdFree(order **od)
{
  order *r;
  
  if (*od) {
    r=*od;
    iFree(&r->adjn);
    iFree(&r->rbeg);
    iFree(&r->rexs);
    iFree(&r->rlen);
    iFree(&r->rend);
    iFree(&r->pres);
    iFree(&r->succ);
    free(*od);
    *od=NULL;  
  }
} /* OdFree */
Ejemplo n.º 7
0
void ShutDown(void)
{
  clock_t tim;
  double  rtmp;
  
  rtmp=fabs(sdat->pobj-sdat->dobj)/(1.0+fabs(sdat->dobj));
  if (rtmp>sdat->par.tolgap) {
    tim=GetTime()-stim[START];
  
#ifdef PCMACHINE
    printf(" time=%.2f\n\n",(double)tim/CLOCKS_PER_SEC);
#else
    printf(" time=%.2f\n\n",(double)0.01*tim);
#endif

    fclose(fout);
  }

  dFree(&sdat->y);
  dFree(&sdat->dy);
  dFree(&sdat->s);
  dFree(&sdat->sinv);

  SmtFree(&sdat->c);
  SymFree(&sdat->cy);
  SyoFree(&sdat->st);
  
  if (sdat->mf)
	sdat->mf->uval=NULL;
  CfcFree(&sdat->mf);
  CfcFree(&sdat->sf);
  
  dPtFree(&sdat->u);
  dPtFree(&sdat->v);
  
  iFree(&sdat->iw);
  dFree(&sdat->rw);
  
} /* ShutDown */
Ejemplo n.º 8
0
static void copyChl(chfac *af,
                    chfac *bf)
{
  iFree(&af->shead);
  iFree(&af->ssize);
  iFree(&af->ssub);
  
  iFree(&bf->shead);
  iFree(&bf->ssize);
  iFree(&bf->ssub);
  
  bf->unnz =af->unnz;
  bf->ujnz =af->ujnz;
  bf->nsnds=af->nsnds;
  bf->ndens=af->ndens;
  bf->nsndn=af->nsndn;
  bf->sdens=af->sdens;
  bf->upst =af->upst;
  
  bf->usub =iAlloc(bf->ujnz,"usub, copyChl");
  bf->uval =dAlloc(bf->unnz,"uval, copyChl");
  
  iCopy(af->ujnz,af->usub,bf->usub);
  iCopy(af->nrow,af->ujbeg,bf->ujbeg);
  iCopy(af->nrow,af->uhead,bf->uhead);
  iCopy(af->nrow,af->ujsze,bf->ujsze);
  iCopy(af->nrow,af->perm,bf->perm);
  iCopy(af->nrow,af->invp,bf->invp);
  iCopy(af->nrow+1,af->subg,bf->subg);
  
  bf->dhead=iAlloc(af->ndens+1,"dhead, copyChl");
  iCopy(af->ndens+1,af->dhead,bf->dhead);
  
  if (af->nsnds) {
    bf->dbeg=iAlloc(af->nsnds,"dbeg, copyChl");
    bf->dsub=iAlloc(af->nsnds,"dsub, copyChl");
    iCopy(af->nsnds,af->dbeg,bf->dbeg);
    iCopy(af->nsnds,af->dsub,bf->dsub);
  }
} /* copyChl */
Ejemplo n.º 9
0
void CfcFree(chfac **sf)
{
  chfac *r=*sf;
  
  if (*sf) {
    iFree(&r->shead);
    iFree(&r->ssize);
    iFree(&r->ssub);
    dFree(&r->diag);
    iFree(&r->ujbeg);
    iFree(&r->uhead);
    iFree(&r->ujsze);
    iFree(&r->usub);
    dFree(&r->uval);
    iFree(&r->perm);
    iFree(&r->invp);
    iFree(&r->subg);
    iFree(&r->dhead);
    iFree(&r->dbeg);
    iFree(&r->dsub);
    free(r);
  }
  *sf=NULL;
} /* CfcFree */
Ejemplo n.º 10
0
void CfcFree(chfac **sf)
{
  chfac *r=*sf;
  
  if (*sf) {
    iFree(&r->shead);
    iFree(&r->ssize);
    iFree(&r->ssub);
    dFree(&r->diag);
    dFree(&r->sqrtdiag);
    iFree(&r->uhead);
    iFree(&r->ujsze);
    dFree(&r->uval);
    iFree(&r->perm);
    iFree(&r->subg);
    iFree(&r->dhead);
    iFree(&r->dbeg);
    iFree(&r->dsub);
    iFree(&r->iw);
    dFree(&r->rw);
    if (r->alldense){
      r->invp=0;
      r->ujbeg=0;
      r->usub=0;
    }else{
      iFree(&r->invp);
      iFree(&r->ujbeg);
      iFree(&r->usub);
    }
    free(r);
  }
  *sf=NULL;
} /* CfcFree */