From 8e0481e93e07c94b9d6e2e1706b552058257cb12 Mon Sep 17 00:00:00 2001 From: Geoffroy Lesur Date: Mon, 14 Apr 2025 21:01:52 +0200 Subject: [PATCH] make divB check diemsionless --- src/fluid/checkDivB.hpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/fluid/checkDivB.hpp b/src/fluid/checkDivB.hpp index f9aac45c2..c78f6b3e0 100644 --- a/src/fluid/checkDivB.hpp +++ b/src/fluid/checkDivB.hpp @@ -30,14 +30,30 @@ real Fluid::CheckDivB() { data->beg[IDIR], data->end[IDIR], KOKKOS_LAMBDA (int k, int j, int i, real &divBmax) { [[maybe_unused]] real dB1,dB2,dB3; + [[maybe_unused]] real d1, d2, d3; + [[maybe_unused]] real B1,B2,B3; dB1=dB2=dB3=ZERO_F; + d1=d2=d3=ZERO_F; + B1=B2=B3=ZERO_F; + D_EXPAND( dB1=(Ax1(k,j,i+1)*Vs(BX1s,k,j,i+1)-Ax1(k,j,i)*Vs(BX1s,k,j,i)); , dB2=(Ax2(k,j+1,i)*Vs(BX2s,k,j+1,i)-Ax2(k,j,i)*Vs(BX2s,k,j,i)); , dB3=(Ax3(k+1,j,i)*Vs(BX3s,k+1,j,i)-Ax3(k,j,i)*Vs(BX3s,k,j,i)); ) - divBmax=FMAX(FABS(D_EXPAND(dB1, +dB2, +dB3))/dV(k,j,i),divBmax); + D_EXPAND( d1=0.5*(Ax1(k,j,i+1) + Ax1(k,j,i)); , + d2=0.5*(Ax2(k,j+1,i) + Ax2(k,j,i)); , + d3=0.5*(Ax3(k+1,j,i) + Ax3(k,j,i)); ) + + D_EXPAND( B1=0.5*(Vs(BX1s,k,j,i+1) + Vs(BX1s,k,j,i)); , + B2=0.5*(Vs(BX2s,k,j+1,i) + Vs(BX2s,k,j,i)); , + B3=0.5*(Vs(BX3s,k+1,j,i) + Vs(BX3s,k,j,i)); ) + + real amplitude = 1e-40; + amplitude += D_EXPAND( std::fabs(B1)*d1, + std::fabs(B2)*d2, + std::fabs(B3)*d3 ); + + divBmax=FMAX(FABS(D_EXPAND(dB1, +dB2, +dB3))/amplitude,divBmax); }, Kokkos::Max(divB) // reduction );