Пример #1
0
void mis2(int niter         /* number of iterations */, 
	  int nx            /* model size */, 
	  float *xx         /* model */, 
	  sf_filter aa      /* helix filter */, 
	  const bool *known /* mask for known data */,
	  float eps         /* regularization parameter */,
	  bool doprec       /* to apply preconditioning */) 
/*< interpolate >*/
{
    int ix;
    float *dd;

    if (doprec) {                          /*  preconditioned */
	sf_mask_init(known);
	sf_polydiv_init(nx, aa);
	sf_solver_prec(sf_mask_lop, sf_cgstep, sf_polydiv_lop, 
		       nx, nx, nx, xx, xx, niter, eps, "end");
	sf_polydiv_close();
    } else {                               /*  regularized */
	dd = sf_floatalloc(nx);
	for (ix=0; ix < nx; ix++) {
	    dd[ix]=0.;
	}

	sf_helicon_init(aa);
	sf_solver (sf_helicon_lop, sf_cgstep, nx, nx, xx, dd, niter, 
		   "known", known, "x0", xx, "end");
	free(dd);
    }
    sf_cgstep_close();
}
Пример #2
0
void wilson2_close( void) 
/*< free allocated storage >*/
{
    sf_polydiv_close();
    free (au);
    free (bb);
    free (cc);
    free (b);
    free (c);
}
Пример #3
0
void laplacian_close(void)
/*< free allocated storage >*/
{
    switch(type) {
	case 2:
	    sf_tridiagonal_close(tri1);
	    free(work1);

	    sf_tridiagonal_close(tri2);
	    free(work2);
	    break;
	case 3:
	    sf_polydiv_close();
	    free(work1);
	    break;
	default:
	    break;
    }
}
Пример #4
0
void signoi_close(void)
/*< free allocated storage >*/
{
    free(dd);
    sf_polydiv_close();
}