Partial implementation
This commit is contained in:
		@@ -517,6 +517,59 @@ pub fn RHS_trad(
 | 
			
		||||
    SAT_characteristics(op, k, y, metrics, boundaries);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[allow(non_snake_case)]
 | 
			
		||||
pub fn RHS_no_SAT(
 | 
			
		||||
    op: &dyn SbpOperator2d,
 | 
			
		||||
    k: &mut Diff,
 | 
			
		||||
    y: &Field,
 | 
			
		||||
    metrics: &Metrics,
 | 
			
		||||
    tmp: &mut (Field, Field, Field, Field, Field, Field),
 | 
			
		||||
) {
 | 
			
		||||
    let ehat = &mut tmp.0;
 | 
			
		||||
    let fhat = &mut tmp.1;
 | 
			
		||||
    fluxes((ehat, fhat), y, metrics, &mut tmp.2);
 | 
			
		||||
    let dE = &mut tmp.2;
 | 
			
		||||
    let dF = &mut tmp.3;
 | 
			
		||||
 | 
			
		||||
    op.diffxi(ehat.rho(), dE.rho_mut());
 | 
			
		||||
    op.diffxi(ehat.rhou(), dE.rhou_mut());
 | 
			
		||||
    op.diffxi(ehat.rhov(), dE.rhov_mut());
 | 
			
		||||
    op.diffxi(ehat.e(), dE.e_mut());
 | 
			
		||||
 | 
			
		||||
    op.diffeta(fhat.rho(), dF.rho_mut());
 | 
			
		||||
    op.diffeta(fhat.rhou(), dF.rhou_mut());
 | 
			
		||||
    op.diffeta(fhat.rhov(), dF.rhov_mut());
 | 
			
		||||
    op.diffeta(fhat.e(), dF.e_mut());
 | 
			
		||||
 | 
			
		||||
    if let Some(diss_op) = op.upwind() {
 | 
			
		||||
        let ad_xi = &mut tmp.4;
 | 
			
		||||
        let ad_eta = &mut tmp.5;
 | 
			
		||||
        upwind_dissipation(
 | 
			
		||||
            &*diss_op,
 | 
			
		||||
            (ad_xi, ad_eta),
 | 
			
		||||
            y,
 | 
			
		||||
            metrics,
 | 
			
		||||
            (&mut tmp.0, &mut tmp.1),
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        azip!((out in &mut k.0,
 | 
			
		||||
                        eflux in &dE.0,
 | 
			
		||||
                        fflux in &dF.0,
 | 
			
		||||
                        ad_xi in &ad_xi.0,
 | 
			
		||||
                        ad_eta in &ad_eta.0,
 | 
			
		||||
                        detj in &metrics.detj().broadcast((4, y.ny(), y.nx())).unwrap()) {
 | 
			
		||||
            *out = (-eflux - fflux + ad_xi + ad_eta)/detj
 | 
			
		||||
        });
 | 
			
		||||
    } else {
 | 
			
		||||
        azip!((out in &mut k.0,
 | 
			
		||||
                        eflux in &dE.0,
 | 
			
		||||
                        fflux in &dF.0,
 | 
			
		||||
                        detj in &metrics.detj().broadcast((4, y.ny(), y.nx())).unwrap()) {
 | 
			
		||||
            *out = (-eflux - fflux )/detj
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[allow(non_snake_case)]
 | 
			
		||||
pub fn RHS_upwind(
 | 
			
		||||
    op: &dyn SbpOperator2d,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user