aboutsummaryrefslogtreecommitdiff
path: root/src/Derivatives_2_1.F90
diff options
context:
space:
mode:
Diffstat (limited to 'src/Derivatives_2_1.F90')
-rw-r--r--src/Derivatives_2_1.F9024
1 files changed, 24 insertions, 0 deletions
diff --git a/src/Derivatives_2_1.F90 b/src/Derivatives_2_1.F90
index 62a12a5..489fc1d 100644
--- a/src/Derivatives_2_1.F90
+++ b/src/Derivatives_2_1.F90
@@ -41,17 +41,21 @@ subroutine deriv_gf_2_1 ( var, ni, nj, nk, dir, bb, gsize, delta, dvar )
if ( bb(1) == 0 ) then
il = 1 + gsize
else
+!$omp parallel workshare
dvar(1,:,:) = ( q(1,1) * var(1,:,:) + q(2,1) * var(2,:,:) ) * idel
dvar(2,:,:) = ( q(1,2) * var(1,:,:) + q(3,2) * var(3,:,:) ) * idel
+!$omp end parallel workshare
il = 3
end if
if ( bb(2) == 0 ) then
ir = ni - gsize
else
+!$omp parallel workshare
dvar(ni-1,:,:) = - ( q(1,2) * var(ni,:,:) + &
q(3,2) * var(ni-2,:,:) ) * idel
dvar(ni,:,:) = - ( q(1,1) * var(ni,:,:) + &
q(2,1) * var(ni-1,:,:) ) * idel
+!$omp end parallel workshare
ir = ni - 2
end if
if (il > ir+1) call CCTK_WARN (0, "domain too small")
@@ -65,17 +69,21 @@ subroutine deriv_gf_2_1 ( var, ni, nj, nk, dir, bb, gsize, delta, dvar )
if ( bb(1) == 0 ) then
jl = 1 + gsize
else
+!$omp parallel workshare
dvar(:,1,:) = ( q(1,1) * var(:,1,:) + q(2,1) * var(:,2,:) ) * idel
dvar(:,2,:) = ( q(1,2) * var(:,1,:) + q(3,2) * var(:,3,:) ) * idel
+!$omp end parallel workshare
jl = 3
end if
if ( bb(2) == 0 ) then
jr = nj - gsize
else
+!$omp parallel workshare
dvar(:,nj-1,:) = - ( q(1,2) * var(:,nj,:) + &
q(3,2) * var(:,nj-2,:) ) * idel
dvar(:,nj,:) = - ( q(1,1) * var(:,nj,:) + &
q(2,1) * var(:,nj-1,:) ) * idel
+!$omp end parallel workshare
jr = nj - 2
end if
if (jl > jr+1) call CCTK_WARN (0, "domain too small")
@@ -91,17 +99,21 @@ subroutine deriv_gf_2_1 ( var, ni, nj, nk, dir, bb, gsize, delta, dvar )
if ( bb(1) == 0 ) then
kl = 1 + gsize
else
+!$omp parallel workshare
dvar(:,:,1) = ( q(1,1) * var(:,:,1) + q(2,1) * var(:,:,2) ) * idel
dvar(:,:,2) = ( q(1,2) * var(:,:,1) + q(3,2) * var(:,:,3) ) * idel
+!$omp end parallel workshare
kl = 3
end if
if ( bb(2) == 0 ) then
kr = nk - gsize
else
+!$omp parallel workshare
dvar(:,:,nk-1) = - ( q(1,2) * var(:,:,nk) + &
q(3,2) * var(:,:,nk-2) ) * idel
dvar(:,:,nk) = - ( q(1,1) * var(:,:,nk) + &
q(2,1) * var(:,:,nk-1) ) * idel
+!$omp end parallel workshare
kr = nk - 2
end if
if (kl > kr+1) call CCTK_WARN (0, "domain too small")
@@ -153,6 +165,7 @@ subroutine up_deriv_gf_2_1 ( var, ni, nj, nk, dir, bb, gsize, delta, up, dvar )
if ( bb(1) == 0 ) then
il = 1 + gsize
else
+!$omp parallel workshare
where ( up(1,:,:) < zero )
dvar(1,:,:) = ( q1(1,1) * var(1,:,:) + q1(2,1) * var(2,:,:) ) * idel
elsewhere
@@ -165,11 +178,13 @@ subroutine up_deriv_gf_2_1 ( var, ni, nj, nk, dir, bb, gsize, delta, up, dvar )
dvar(2,:,:) = ( q2(1,2) * var(1,:,:) + q2(2,2) * var(2,:,:) + &
q2(3,2) * var(3,:,:) ) * idel
end where
+!$omp end parallel workshare
il = 3
end if
if ( bb(2) == 0 ) then
ir = ni - gsize
else
+!$omp parallel workshare
where ( up(ni-1,:,:) < zero )
dvar(ni-1,:,:) = - ( q2(1,2) * var(ni,:,:) + &
q2(2,2) * var(ni-1,:,:) + &
@@ -186,6 +201,7 @@ subroutine up_deriv_gf_2_1 ( var, ni, nj, nk, dir, bb, gsize, delta, up, dvar )
dvar(ni,:,:) = - ( q1(1,1) * var(ni,:,:) + &
q1(2,1) * var(ni-1,:,:) ) * idel
end where
+!$omp end parallel workshare
ir = ni - 2
end if
if (il > ir+1) call CCTK_WARN (0, "domain too small")
@@ -207,6 +223,7 @@ subroutine up_deriv_gf_2_1 ( var, ni, nj, nk, dir, bb, gsize, delta, up, dvar )
if ( bb(1) == 0 ) then
jl = 1 + gsize
else
+!$omp parallel workshare
where ( up(:,1,:) < zero )
dvar(:,1,:) = ( q1(1,1) * var(:,1,:) + q1(2,1) * var(:,2,:) ) * idel
elsewhere
@@ -219,11 +236,13 @@ subroutine up_deriv_gf_2_1 ( var, ni, nj, nk, dir, bb, gsize, delta, up, dvar )
dvar(:,2,:) = ( q2(1,2) * var(:,1,:) + q2(2,2) * var(:,2,:) + &
q2(3,2) * var(:,3,:) ) * idel
end where
+!$omp end parallel workshare
jl = 3
end if
if ( bb(2) == 0 ) then
jr = nj - gsize
else
+!$omp parallel workshare
where ( up(:,nj-1,:) < zero )
dvar(:,nj-1,:) = - ( q2(1,2) * var(:,nj,:) + &
q2(2,2) * var(:,nj-1,:) + &
@@ -240,6 +259,7 @@ subroutine up_deriv_gf_2_1 ( var, ni, nj, nk, dir, bb, gsize, delta, up, dvar )
dvar(:,nj,:) = - ( q1(1,1) * var(:,nj,:) + &
q1(2,1) * var(:,nj-1,:) ) * idel
end where
+!$omp end parallel workshare
jr = nj - 2
end if
if (jl > jr+1) call CCTK_WARN (0, "domain too small")
@@ -262,6 +282,7 @@ subroutine up_deriv_gf_2_1 ( var, ni, nj, nk, dir, bb, gsize, delta, up, dvar )
if ( bb(1) == 0 ) then
kl = 1 + gsize
else
+!$omp parallel workshare
where ( up(:,:,1) < zero )
dvar(:,:,1) = ( q1(1,1) * var(:,:,1) + q1(2,1) * var(:,:,2) ) * idel
elsewhere
@@ -274,11 +295,13 @@ subroutine up_deriv_gf_2_1 ( var, ni, nj, nk, dir, bb, gsize, delta, up, dvar )
dvar(:,:,2) = ( q2(1,2) * var(:,:,1) + q2(2,2) * var(:,:,2) + &
q2(3,2) * var(:,:,3) ) * idel
end where
+!$omp end parallel workshare
kl = 3
end if
if ( bb(2) == 0 ) then
kr = nk - gsize
else
+!$omp parallel workshare
where ( up(:,:,nk-1) < zero )
dvar(:,:,nk-1) = - ( q2(1,2) * var(:,:,nk) + &
q2(2,2) * var(:,:,nk-1) + &
@@ -295,6 +318,7 @@ subroutine up_deriv_gf_2_1 ( var, ni, nj, nk, dir, bb, gsize, delta, up, dvar )
dvar(:,:,nk) = - ( q1(1,1) * var(:,:,nk) + &
q1(2,1) * var(:,:,nk-1) ) * idel
end where
+!$omp end parallel workshare
kr = nk - 2
end if
if (kl > kr+1) call CCTK_WARN (0, "domain too small")