Skip to content
Snippets Groups Projects
Commit b3ed954b authored by Holger Grosshans's avatar Holger Grosshans
Browse files

modified: src/electrostatics.f90

	modified:   src/makefile
parent 429d0042
No related branches found
No related tags found
No related merge requests found
...@@ -215,51 +215,74 @@ ...@@ -215,51 +215,74 @@
use var use var
real(kind=pr) :: dis,dis3,disx,disy,disz, & real(kind=pr) :: dis,dis3,disx,disy,disz, &
Extot,Eytot,Eztot,partmass Extot,Eytot,Eztot,partmass
integer :: n1,n2,ip,jp,lp integer :: n1,n2,ip,jp,lp,m1,m2,n1end
if (elforceScheme.eq.2) then select case (elforceScheme)
case (2)
fx_el=0._pr fx_el=0._pr
fy_el=0._pr fy_el=0._pr
fz_el=0._pr fz_el=0._pr
endif
do 1 n1=2,np do 1 n1=2,np
do 2 n2=1,(n1-1) do 2 n2=1,(n1-1)
if (n1.eq.n2) cycle
if (n1.eq.n2) cycle call forcesCoulombN1N2(n1,n2)
if ((elforceScheme.eq.3).and. & 2 enddo
((ip(n1).lt.ip(n2)-1.or.ip(n1).gt.ip(n2)+1).or. & 1 enddo
(jp(n1).lt.jp(n2)-1.or.jp(n1).gt.jp(n2)+1).or. &
(lp(n1).lt.lp(n2)-1.or.lp(n1).gt.lp(n2)+1))) cycle case (3)
do 3 i=1,ii
! force of n2 acting on n1 do 3 j=1,jj
disx=xp(n1)-xp(n2) do 3 l=1,ll
disy=yp(n1)-yp(n2)
disz=zp(n1)-zp(n2) do 4 m1=2,npic(i,j,l)
dis=(disx**2+disy**2+disz**2)**0.5 do 5 m2=1,(m1-1)
dis3=dis**3 n1=nic(i,j,l,m1)
n2=nic(i,j,l,m2)
partmass=4._pr/3._pr*pi*rhop*partn(n1)*radp(n1)**3 call forcesCoulombN1N2(n1,n2)
5 enddo
4 enddo
3 enddo
fx_el(n1)= fx_el(n1) & end select
+ q_el(n1)*q_el(n2)*disx/4._pr/pi/eps_el/dis3/partmass
fy_el(n1)= fy_el(n1) &
+ q_el(n1)*q_el(n2)*disy/4._pr/pi/eps_el/dis3/partmass
fz_el(n1)= fz_el(n1) &
+ q_el(n1)*q_el(n2)*disz/4._pr/pi/eps_el/dis3/partmass
partmass=4._pr/3._pr*pi*rhop*partn(n2)*radp(n2)**3 return
end
fx_el(n2)= fx_el(n2) &
- q_el(n1)*q_el(n2)*disx/4._pr/pi/eps_el/dis3/partmass
fy_el(n2)= fy_el(n2) &
- q_el(n1)*q_el(n2)*disy/4._pr/pi/eps_el/dis3/partmass
fz_el(n2)= fz_el(n2) &
- q_el(n1)*q_el(n2)*disz/4._pr/pi/eps_el/dis3/partmass
2 enddo !####################################################################
1 enddo !> @author Holger Grosshans
!> @brief compute Coulomb force of n2 acting on n1
subroutine forcesCoulombN1N2(n1,n2)
use var
real(kind=pr) :: dis,dis3,disx,disy,disz,partmass
integer :: n1,n2,ip,jp,lp
disx=xp(n1)-xp(n2)
disy=yp(n1)-yp(n2)
disz=zp(n1)-zp(n2)
dis=(disx**2+disy**2+disz**2)**0.5
dis3=dis**3
partmass=4._pr/3._pr*pi*rhop*partn(n1)*radp(n1)**3
fx_el(n1)= fx_el(n1) &
+ q_el(n1)*q_el(n2)*disx/4._pr/pi/eps_el/dis3/partmass
fy_el(n1)= fy_el(n1) &
+ q_el(n1)*q_el(n2)*disy/4._pr/pi/eps_el/dis3/partmass
fz_el(n1)= fz_el(n1) &
+ q_el(n1)*q_el(n2)*disz/4._pr/pi/eps_el/dis3/partmass
partmass=4._pr/3._pr*pi*rhop*partn(n2)*radp(n2)**3
fx_el(n2)= fx_el(n2) &
- q_el(n1)*q_el(n2)*disx/4._pr/pi/eps_el/dis3/partmass
fy_el(n2)= fy_el(n2) &
- q_el(n1)*q_el(n2)*disy/4._pr/pi/eps_el/dis3/partmass
fz_el(n2)= fz_el(n2) &
- q_el(n1)*q_el(n2)*disz/4._pr/pi/eps_el/dis3/partmass
return return
......
...@@ -15,7 +15,7 @@ INC = ...@@ -15,7 +15,7 @@ INC =
# gcc: # gcc:
CMP = mpifort CMP = mpifort
#O3: optimization #O3: optimization
FLAGS = -O3 -mcmodel=medium FLAGS = -O3 -mcmodel=medium -pg
#debugging: #debugging:
#FLAGS = -g3 -O0 -fbounds-check -mcmodel=medium -fimplicit-none -fcheck=all -fbacktrace -floop-nest-optimize -ffpe-trap=invalid,zero,overflow -Wconversion -fno-tree-vectorize #FLAGS = -g3 -O0 -fbounds-check -mcmodel=medium -fimplicit-none -fcheck=all -fbacktrace -floop-nest-optimize -ffpe-trap=invalid,zero,overflow -Wconversion -fno-tree-vectorize
FFLAGS = -c $(FLAGS) FFLAGS = -c $(FLAGS)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment