Skip to content

Commit 154bc6a

Browse files
author
Jekabs Nelsons
committed
test commit
1 parent e20fdaf commit 154bc6a

1 file changed

Lines changed: 111 additions & 0 deletions

File tree

src/mod_pos_tanalytical.F90

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ MODULE mod_pos
2828
!! - gser (P)
2929
!! - gcf (P)
3030
!! - gammln (P)
31+
!! - update_bounce (copy paste from mod_pos_tstep)
3132
!!
3233
!!------------------------------------------------------------------------------
3334

@@ -2032,6 +2033,116 @@ FUNCTION gammln(xx)
20322033

20332034
END FUNCTION gammln
20342035

2036+
SUBROUTINE update_bounce(ia, iam, ja, ka, x0, y0, z0)
2037+
! --------------------------------------------------
2038+
!
2039+
! Purpose:
2040+
! Update the indexes of the trajectory in case of
2041+
! a sudden change of fluxes sign
2042+
!
2043+
! --------------------------------------------------
2044+
2045+
! Position indexes
2046+
INTEGER, INTENT(INOUT) :: ia, iam, ja, ka
2047+
INTEGER :: tmpia, tmpiam, tmpja, tmpka
2048+
2049+
! Real positions
2050+
REAL(DP), INTENT(INOUT) :: x0, y0, z0
2051+
2052+
! Fluxes
2053+
REAL(DP) :: uu, um ! Fluxes
2054+
2055+
! Temporal storage of indexes
2056+
tmpia = ia
2057+
tmpiam = iam
2058+
tmpja = ja
2059+
tmpka = ka
2060+
2061+
! Zonal walls
2062+
IF (x0 == DBLE(ia)) THEN
2063+
2064+
uu = (intrpg*uflux(ia,ja,ka,nsp) + intrpr*uflux(ia,ja,ka,nsm))
2065+
2066+
IF (uu .GT. 0.d0) THEN
2067+
! Redifine the indexes
2068+
tmpiam = ia
2069+
tmpia = ia + 1
2070+
IF ( (tmpia .EQ. IMT + 1) .AND. (iperio .EQ. 1)) tmpia = 1
2071+
END IF
2072+
2073+
ELSE IF (x0 == DBLE(iam)) THEN
2074+
2075+
um = (intrpg*uflux(iam,ja,ka,nsp) + intrpr*uflux(iam,ja,ka,nsm))
2076+
2077+
IF (um .LT. 0.d0) THEN
2078+
! Redifine the indexes
2079+
tmpia = iam
2080+
tmpiam = tmpia - 1
2081+
IF( (tmpiam .EQ. 0) .AND. (iperio .EQ. 1) ) tmpiam = IMT
2082+
END IF
2083+
2084+
END IF
2085+
2086+
! Meridional wall
2087+
IF (y0 == DBLE(ja)) THEN
2088+
2089+
uu = (intrpg*vflux(ia,ja,ka,nsp) + intrpr*vflux(ia,ja,ka,nsm))
2090+
2091+
IF (uu .GT. 0.d0) THEN
2092+
! Redifine the indexes
2093+
tmpja = ja + 1
2094+
END IF
2095+
2096+
ELSE IF (y0 == DBLE(ja-1)) THEN
2097+
2098+
um = (intrpg*vflux(ia,ja-1,ka,nsp) + intrpr*vflux(ia,ja-1,ka,nsm))
2099+
2100+
IF (um .LT. 0.d0) THEN
2101+
! Redifine the indexes
2102+
tmpja = ja - 1
2103+
END IF
2104+
2105+
END IF
2106+
2107+
! Vertical wall
2108+
IF (z0 == DBLE(ka)) THEN
2109+
2110+
! Recalculate the fluxes
2111+
#if defined w_explicit
2112+
uu = (intrpg*wflux(ia,ja,ka ,nsp) + intrpr*wflux(ia,ja,ka ,nsm))
2113+
#else
2114+
CALL vertvel(ia,iam,ja,ka)
2115+
uu = (intrpg*wflux(ka ,nsp) + intrpr*wflux(ka ,nsm))
2116+
#endif
2117+
IF (uu .GT. 0.d0) THEN
2118+
! Redifine the indexes
2119+
tmpka = ka + 1
2120+
END IF
2121+
2122+
ELSE IF (z0 == DBLE(ka-1)) THEN
2123+
2124+
#if defined w_explicit
2125+
um = (intrpg*wflux(ia,ja,ka-1,nsp) + intrpr*wflux(ia,ja,ka-1,nsm))
2126+
#else
2127+
CALL vertvel(ia,iam,ja,ka)
2128+
um = (intrpg*wflux(ka-1,nsp) + intrpr*wflux(ka-1,nsm))
2129+
#endif
2130+
2131+
IF (um .LT. 0.d0) THEN
2132+
! Redifine the indexes
2133+
tmpka = ka - 1
2134+
END IF
2135+
2136+
END IF
2137+
2138+
! Reassign indexes
2139+
ia = tmpia
2140+
iam = tmpiam
2141+
ja = tmpja
2142+
ka = tmpka
2143+
2144+
END SUBROUTINE update_bounce
2145+
20352146
END MODULE mod_pos
20362147

20372148
#endif

0 commit comments

Comments
 (0)