revisit SBP Traits
This commit is contained in:
		@@ -62,7 +62,7 @@ pub struct System {
 | 
			
		||||
    fnext: Field,
 | 
			
		||||
    x: (Float, Float, usize),
 | 
			
		||||
    y: (Float, Float, usize),
 | 
			
		||||
    op: Box<dyn operators::UpwindOperator2d>,
 | 
			
		||||
    op: Box<dyn operators::SbpOperator2d>,
 | 
			
		||||
    k: [Field; 4],
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -175,35 +175,37 @@ impl System {
 | 
			
		||||
 | 
			
		||||
            // Upwind dissipation
 | 
			
		||||
            if false {
 | 
			
		||||
                let mut temp_dx = temp_dy;
 | 
			
		||||
                azip!((dest in &mut temp, eta in now.eta(), etau in now.etau()) {
 | 
			
		||||
                    *dest = -(eta.powf(3.0/2.0)*G.sqrt() + etau.abs())/eta
 | 
			
		||||
                });
 | 
			
		||||
                op.dissxi(temp.view(), temp_dx.view_mut());
 | 
			
		||||
                azip!((dest in &mut next_eta, eta in now.eta(), diss in &temp_dx) {
 | 
			
		||||
                    *dest -= eta*diss;
 | 
			
		||||
                });
 | 
			
		||||
                azip!((dest in &mut next_etau, etau in now.etau(), diss in &temp_dx) {
 | 
			
		||||
                    *dest -= etau*diss;
 | 
			
		||||
                });
 | 
			
		||||
                azip!((dest in &mut next_etav, etav in now.etav(), diss in &temp_dx) {
 | 
			
		||||
                    *dest -= etav*diss;
 | 
			
		||||
                });
 | 
			
		||||
                if let Some(op) = op.upwind() {
 | 
			
		||||
                    let mut temp_dx = temp_dy;
 | 
			
		||||
                    azip!((dest in &mut temp, eta in now.eta(), etau in now.etau()) {
 | 
			
		||||
                        *dest = -(eta.powf(3.0/2.0)*G.sqrt() + etau.abs())/eta
 | 
			
		||||
                    });
 | 
			
		||||
                    op.dissxi(temp.view(), temp_dx.view_mut());
 | 
			
		||||
                    azip!((dest in &mut next_eta, eta in now.eta(), diss in &temp_dx) {
 | 
			
		||||
                        *dest -= eta*diss;
 | 
			
		||||
                    });
 | 
			
		||||
                    azip!((dest in &mut next_etau, etau in now.etau(), diss in &temp_dx) {
 | 
			
		||||
                        *dest -= etau*diss;
 | 
			
		||||
                    });
 | 
			
		||||
                    azip!((dest in &mut next_etav, etav in now.etav(), diss in &temp_dx) {
 | 
			
		||||
                        *dest -= etav*diss;
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                let mut temp_dy = temp_dx;
 | 
			
		||||
                azip!((dest in &mut temp, eta in now.eta(), etav in now.etav()) {
 | 
			
		||||
                    *dest = -(eta.powf(3.0/2.0)*G.sqrt() + etav.abs())/eta
 | 
			
		||||
                });
 | 
			
		||||
                op.disseta(temp.view(), temp_dy.view_mut());
 | 
			
		||||
                azip!((dest in &mut next_eta, eta in now.eta(), diss in &temp_dy) {
 | 
			
		||||
                    *dest -= eta*diss;
 | 
			
		||||
                });
 | 
			
		||||
                azip!((dest in &mut next_etau, etau in now.etau(), diss in &temp_dy) {
 | 
			
		||||
                    *dest -= etau*diss;
 | 
			
		||||
                });
 | 
			
		||||
                azip!((dest in &mut next_etav, etav in now.etav(), diss in &temp_dy) {
 | 
			
		||||
                    *dest -= etav*diss;
 | 
			
		||||
                });
 | 
			
		||||
                    let mut temp_dy = temp_dx;
 | 
			
		||||
                    azip!((dest in &mut temp, eta in now.eta(), etav in now.etav()) {
 | 
			
		||||
                        *dest = -(eta.powf(3.0/2.0)*G.sqrt() + etav.abs())/eta
 | 
			
		||||
                    });
 | 
			
		||||
                    op.disseta(temp.view(), temp_dy.view_mut());
 | 
			
		||||
                    azip!((dest in &mut next_eta, eta in now.eta(), diss in &temp_dy) {
 | 
			
		||||
                        *dest -= eta*diss;
 | 
			
		||||
                    });
 | 
			
		||||
                    azip!((dest in &mut next_etau, etau in now.etau(), diss in &temp_dy) {
 | 
			
		||||
                        *dest -= etau*diss;
 | 
			
		||||
                    });
 | 
			
		||||
                    azip!((dest in &mut next_etav, etav in now.etav(), diss in &temp_dy) {
 | 
			
		||||
                        *dest -= etav*diss;
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // SAT boundaries
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user