spectral_cutoff.C

00001 
00002 // Header Lorene:
00003 #include "nbr_spx.h"
00004 #include "utilitaires.h"
00005 #include "graphique.h"
00006 #include "math.h"
00007 #include "metric.h"
00008 #include "param.h"
00009 #include "param_elliptic.h"
00010 #include "vector.h"
00011 #include "scalar.h"
00012 #include "spheroid.h"
00013 #include "diff.h"
00014 #include "proto.h"
00015 #include "unites.h"
00016 #include "tensor.h"
00017 #include "sym_tensor.h"
00018 
00019 // Spectral cutoff used in tensor elliptic solvers, and solving for stationary black hole spacetimes
00020 
00021 
00022 void coupe_l_tous( Sym_tensor& hij,Sym_tensor& aa, Scalar& nn,Scalar& ppsi,Vector& bb, int ntt, int cutoff){
00023 
00024   nn.annule_l(2*(ntt-1) - cutoff, 2*(ntt-1));
00025   ppsi.annule_l(2*(ntt-1) - cutoff, 2*(ntt-1)); // Warning! only true for SYMMETRY in theta and phi.
00026   Scalar bb1 = bb.set(1);
00027   bb1.annule_l(2*(ntt-1) - cutoff, 2*(ntt-1));
00028   Scalar mmu = bb.mu();
00029   Scalar etta = bb.eta();
00030  
00031   mmu.annule_l(2*(ntt-1) - cutoff, 2*(ntt-1));
00032   etta.annule_l(2*(ntt-1) - cutoff, 2*(ntt-1));
00033   
00034   bb.set_vr_eta_mu(bb1, etta, mmu);
00035   
00036   tensor_coupe_l(aa, ntt, cutoff);
00037   tensor_coupe_l(hij, ntt, cutoff);
00038 
00039   // hij_new.set_auxiliary(hrrBC, tilde_etaBC, mmuAsr, wwBC, xxA, hh -hrrBC);
00040 
00041 
00042   return;
00043 
00044 }
00045 
00046 void tensor_coupe_l( Sym_tensor& ten, int ntt, int cutoff){
00047 
00048   Scalar ten1 = ten.set(1,1); 
00049   ten1.annule_l(2*(ntt-1) - cutoff, 2*(ntt-1));  // Warning! only true for SYMMETRY in theta and phi.
00050   int dzp = ten1.get_dzpuis();
00051 
00052   Scalar eta = ten.eta();
00053   Scalar mmu = ten.mu();
00054   Scalar xxx = ten.xxx();
00055   Scalar www = ten.www();
00056   Scalar smalltrace = ten.set(2,2) + ten.set(3,3);
00057  
00058   eta.annule_l(2*(ntt-1) - cutoff, 2*(ntt-1));
00059   mmu.annule_l(2*(ntt-1) - cutoff, 2*(ntt-1));
00060   xxx.annule_l(2*(ntt-1) - cutoff, 2*(ntt-1));
00061   www.annule_l(2*(ntt-1) - cutoff, 2*(ntt-1));
00062   smalltrace.annule_l(2*(ntt-1) - cutoff, 2*(ntt-1));
00063 
00064   eta.div_r_dzpuis(dzp);
00065   mmu.div_r_dzpuis(dzp); // set_auxiliary needs quantities rescaled over r
00066 
00067 
00068   
00069   ten.set_auxiliary(ten1, eta, mmu, www, xxx, smalltrace);
00070   
00071   return;
00072 }
00073   

Generated on Tue Feb 7 01:35:19 2012 for LORENE by  doxygen 1.4.6