From 0014b1e03206a5ca357f6935fe8ad59634f62b98 Mon Sep 17 00:00:00 2001
From: lucieb92 <lucie.bakels@univie.ac.at>
Date: Thu, 2 May 2024 09:23:17 +0200
Subject: [PATCH] settling threshold only for forward runs

Former-commit-id: 7297d1263e4a8983f69d58c08be80aa649fb0150
---
 src/advance_mod.f90 | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/advance_mod.f90 b/src/advance_mod.f90
index 98e94423..e9691ab9 100644
--- a/src/advance_mod.f90
+++ b/src/advance_mod.f90
@@ -410,14 +410,14 @@ subroutine adv_above_pbl(itime,itimec,dxsave,dysave,ux,vy,tropop,nrand,ipart)
         call get_settling(xts,yts,zts,nsp,part(ipart)%settling)
 #ifdef ETA
         call update_zeta_to_z(itime,ipart)
-        if (part(ipart)%z+part(ipart)%settling*dt.lt.0) then
+        if ((ldirect.eq.1).and.(part(ipart)%z+part(ipart)%settling*dt.lt.0.)) then
           part(ipart)%settling=-part(ipart)%z/dt
         endif
         call w_to_weta(itime,dt,part(ipart)%xlon,part(ipart)%ylat, &
           part(ipart)%z,part(ipart)%zeta,part(ipart)%settling,weta_settling)
         weta=weta+weta_settling
 #else
-        if (part(ipart)%z+part(ipart)%settling*dt.lt.0) then
+        if ((ldirect.eq.1).and.(part(ipart)%z+part(ipart)%settling*dt.lt.0.)) then
           part(ipart)%settling=-part(ipart)%z/dt
         endif
         w=w+part(ipart)%settling
@@ -592,7 +592,7 @@ subroutine adv_in_pbl(itime,itimec, dxsave,dysave,dawsave,dcwsave, abovePBL,  &
         endif
         if (density(nsp).gt.0.) then
           call get_settling(xts,yts,zts,nsp,part(ipart)%settling)  !bugfix
-          if (part(ipart)%z+part(ipart)%settling*dt.lt.0) then
+          if ((ldirect.eq.1).and.(part(ipart)%z+part(ipart)%settling*dt.lt.0.)) then
             part(ipart)%settling=-part(ipart)%z/dt
           endif
           w=w+part(ipart)%settling
@@ -721,7 +721,8 @@ subroutine petterssen_corr(itime,ipart)
         call update_z_to_zeta(itime+part(ipart)%idt,ipart)
         zts=real(part(ipart)%z)
         call get_settling(xts,yts,zts,nsp,part(ipart)%settling) !bugfix
-        if (part(ipart)%z+part(ipart)%settling*part(ipart)%idt.lt.0) then
+        if ((ldirect.eq.1).and. &
+          (part(ipart)%z+part(ipart)%settling*part(ipart)%idt.lt.0)) then
           part(ipart)%settling=-part(ipart)%z/part(ipart)%idt
         endif
         call w_to_weta( &
@@ -733,7 +734,8 @@ subroutine petterssen_corr(itime,ipart)
    !real(part(ipart)%zeta-part(ipart)%zeta_prev)/real(part(ipart)%idt*ldirect)
 #else
         call get_settling(xts,yts,zts,nsp,part(ipart)%settling)
-        if (part(ipart)%z+part(ipart)%settling*part(ipart)%idt.lt.0) then
+        if ((ldirect.eq.1).and. &
+          (part(ipart)%z+part(ipart)%settling*part(ipart)%idt.lt.0)) then
           part(ipart)%settling=-part(ipart)%z/part(ipart)%idt
         endif
         w=w+part(ipart)%settling
-- 
GitLab