aboutsummaryrefslogtreecommitdiff
path: root/src/include/upwind_first.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/upwind_first.h')
-rw-r--r--src/include/upwind_first.h190
1 files changed, 89 insertions, 101 deletions
diff --git a/src/include/upwind_first.h b/src/include/upwind_first.h
index 1f8c309..366da99 100644
--- a/src/include/upwind_first.h
+++ b/src/include/upwind_first.h
@@ -1,105 +1,93 @@
! Calculate first order upwinded differences.
! $Header$
-idx = one / cctk_delta_space(1)
-idy = one / cctk_delta_space(2)
-idz = one / cctk_delta_space(3)
+if ( eh_mask(i,j,k,l) .ge. 0 ) then
+ if ( ( .not. btest(eh_mask(i,j,k,l),0) ) .and. &
+ ( .not. btest(eh_mask(i,j,k,l),1) ) ) then
+ al = idx * ( f(i,j,k,l) - f(i-1,j,k,l) )
+ ar = idx * ( f(i+1,j,k,l) - f(i,j,k,l) )
+ else if ( btest(eh_mask(i,j,k,l),0) ) then
+ al = zero
+ ar = idx * ( f(i+1,j,k,l) - f(i,j,k,l) )
+ else
+ al = idx * ( f(i,j,k,l) - f(i-1,j,k,l) )
+ ar = zero
+ end if
+ if ( ( .not. btest(eh_mask(i,j,k,l),2) ) .and. &
+ ( .not. btest(eh_mask(i,j,k,l),3) ) ) then
+ bl = idy * ( f(i,j,k,l) - f(i,j-1,k,l) )
+ br = idy * ( f(i,j+1,k,l) - f(i,j,k,l) )
+ else if ( btest(eh_mask(i,j,k,l),2) ) then
+ bl = zero
+ br = idy * ( f(i,j+1,k,l) - f(i,j,k,l) )
+ else
+ bl = idy * ( f(i,j,k,l) - f(i,j-1,k,l) )
+ br = zero
+ end if
+ if ( ( .not. btest(eh_mask(i,j,k,l),4) ) .and. &
+ ( .not. btest(eh_mask(i,j,k,l),5) ) ) then
+ cl = idz * ( f(i,j,k,l) - f(i,j,k-1,l) )
+ cr = idz * ( f(i,j,k+1,l) - f(i,j,k,l) )
+ else if ( btest(eh_mask(i,j,k,l),4) ) then
+ cl = zero
+ cr = idz * ( f(i,j,k+1,l) - f(i,j,k,l) )
+ else
+ cl = idz * ( f(i,j,k,l) - f(i,j,k-1,l) )
+ cr = zero
+ end if
-do l = 1, eh_number_level_sets
- do k = 1, nz
- do j = 1, ny
- do i = 1, nx
- if ( eh_mask(i,j,k,l) .ge. 0 ) then
- if ( ( .not. btest(eh_mask(i,j,k,l),0) ) .and. &
- ( .not. btest(eh_mask(i,j,k,l),1) ) ) then
- al = idx * ( f(i,j,k,l) - f(i-1,j,k,l) )
- ar = idx * ( f(i+1,j,k,l) - f(i,j,k,l) )
- else if ( btest(eh_mask(i,j,k,l),0) ) then
- al = zero
- ar = idx * ( f(i+1,j,k,l) - f(i,j,k,l) )
- else
- al = idx * ( f(i,j,k,l) - f(i-1,j,k,l) )
- ar = zero
- end if
- if ( ( .not. btest(eh_mask(i,j,k,l),2) ) .and. &
- ( .not. btest(eh_mask(i,j,k,l),3) ) ) then
- bl = idy * ( f(i,j,k,l) - f(i,j-1,k,l) )
- br = idy * ( f(i,j+1,k,l) - f(i,j,k,l) )
- else if ( btest(eh_mask(i,j,k,l),2) ) then
- bl = zero
- br = idy * ( f(i,j+1,k,l) - f(i,j,k,l) )
- else
- bl = idy * ( f(i,j,k,l) - f(i,j-1,k,l) )
- br = zero
- end if
- if ( ( .not. btest(eh_mask(i,j,k,l),4) ) .and. &
- ( .not. btest(eh_mask(i,j,k,l),5) ) ) then
- cl = idz * ( f(i,j,k,l) - f(i,j,k-1,l) )
- cr = idz * ( f(i,j,k+1,l) - f(i,j,k,l) )
- else if ( btest(eh_mask(i,j,k,l),4) ) then
- cl = zero
- cr = idz * ( f(i,j,k+1,l) - f(i,j,k,l) )
- else
- cl = idz * ( f(i,j,k,l) - f(i,j,k-1,l) )
- cr = zero
- end if
-
- alminus = half*(al-abs(al))
- alplus = half*(al+abs(al))
- arminus = half*(ar-abs(ar))
- arplus = half*(ar+abs(ar))
-
- blminus = half*(bl-abs(bl))
- blplus = half*(bl+abs(bl))
- brminus = half*(br-abs(br))
- brplus = half*(br+abs(br))
-
- clminus = half*(cl-abs(cl))
- clplus = half*(cl+abs(cl))
- crminus = half*(cr-abs(cr))
- crplus = half*(cr+abs(cr))
-
- if ( f(i,j,k,l) .gt. 0 ) then
- if ( abs(alplus) .gt. abs(arminus) ) then
- dfx(i,j,k,l) = alplus
- else
- dfx(i,j,k,l) = arminus
- end if
- if ( abs(blplus) .gt. abs(brminus) ) then
- dfy(i,j,k,l) = blplus
- else
- dfy(i,j,k,l) = brminus
- end if
- if ( abs(clplus) .gt. abs(crminus) ) then
- dfz(i,j,k,l) = clplus
- else
- dfz(i,j,k,l) = crminus
- end if
- endif
-
- if ( f(i,j,k,l) .lt. 0 ) then
- if ( abs(alminus) .gt. abs(arplus) ) then
- dfx(i,j,k,l) = alminus
- else
- dfx(i,j,k,l) = arplus
- end if
- if ( abs(blminus) .gt. abs(brplus) ) then
- dfy(i,j,k,l) = blminus
- else
- dfy(i,j,k,l) = brplus
- end if
- if ( abs(clminus) .gt. abs(crplus) ) then
- dfz(i,j,k,l) = clminus
- else
- dfz(i,j,k,l) = crplus
- end if
- end if
- else
- dfx(i,j,k,l) = zero
- dfy(i,j,k,l) = zero
- dfz(i,j,k,l) = zero
- end if
- end do
- end do
- end do
-end do
+ alminus = half*(al-abs(al))
+ alplus = half*(al+abs(al))
+ arminus = half*(ar-abs(ar))
+ arplus = half*(ar+abs(ar))
+
+ blminus = half*(bl-abs(bl))
+ blplus = half*(bl+abs(bl))
+ brminus = half*(br-abs(br))
+ brplus = half*(br+abs(br))
+
+ clminus = half*(cl-abs(cl))
+ clplus = half*(cl+abs(cl))
+ crminus = half*(cr-abs(cr))
+ crplus = half*(cr+abs(cr))
+
+ if ( f(i,j,k,l) .gt. 0 ) then
+ if ( abs(alplus) .gt. abs(arminus) ) then
+ dfx(i,j,k,l) = alplus
+ else
+ dfx(i,j,k,l) = arminus
+ end if
+ if ( abs(blplus) .gt. abs(brminus) ) then
+ dfy(i,j,k,l) = blplus
+ else
+ dfy(i,j,k,l) = brminus
+ end if
+ if ( abs(clplus) .gt. abs(crminus) ) then
+ dfz(i,j,k,l) = clplus
+ else
+ dfz(i,j,k,l) = crminus
+ end if
+ endif
+
+ if ( f(i,j,k,l) .lt. 0 ) then
+ if ( abs(alminus) .gt. abs(arplus) ) then
+ dfx(i,j,k,l) = alminus
+ else
+ dfx(i,j,k,l) = arplus
+ end if
+ if ( abs(blminus) .gt. abs(brplus) ) then
+ dfy(i,j,k,l) = blminus
+ else
+ dfy(i,j,k,l) = brplus
+ end if
+ if ( abs(clminus) .gt. abs(crplus) ) then
+ dfz(i,j,k,l) = clminus
+ else
+ dfz(i,j,k,l) = crplus
+ end if
+ end if
+else
+ dfx(i,j,k,l) = zero
+ dfy(i,j,k,l) = zero
+ dfz(i,j,k,l) = zero
+end if