Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Gyacomo
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Antoine Cyril David Hoffmann
Gyacomo
Commits
cbaf51c1
Commit
cbaf51c1
authored
2 years ago
by
Antoine Cyril David Hoffmann
Browse files
Options
Downloads
Patches
Plain Diff
Improved blob init and added a phi ppj init
parent
ecb4ab8e
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/inital.F90
+69
-11
69 additions, 11 deletions
src/inital.F90
with
69 additions
and
11 deletions
src/inital.F90
+
69
−
11
View file @
cbaf51c1
...
@@ -33,6 +33,10 @@ SUBROUTINE inital
...
@@ -33,6 +33,10 @@ SUBROUTINE inital
IF
(
my_id
.EQ.
0
)
WRITE
(
*
,
*
)
'Init noisy phi'
IF
(
my_id
.EQ.
0
)
WRITE
(
*
,
*
)
'Init noisy phi'
CALL
init_phi
CALL
init_phi
CALL
update_ghosts_EM
CALL
update_ghosts_EM
CASE
(
'phi_ppj'
)
IF
(
my_id
.EQ.
0
)
WRITE
(
*
,
*
)
'Init noisy phi'
CALL
init_phi_ppj
CALL
update_ghosts_EM
! set moments_00 (GC density) with noise and compute phi afterwards
! set moments_00 (GC density) with noise and compute phi afterwards
CASE
(
'mom00'
)
CASE
(
'mom00'
)
IF
(
my_id
.EQ.
0
)
WRITE
(
*
,
*
)
'Init noisy gyrocenter density'
IF
(
my_id
.EQ.
0
)
WRITE
(
*
,
*
)
'Init noisy gyrocenter density'
...
@@ -325,6 +329,54 @@ SUBROUTINE init_phi
...
@@ -325,6 +329,54 @@ SUBROUTINE init_phi
END
SUBROUTINE
init_phi
END
SUBROUTINE
init_phi
!******************************************************************************!
!******************************************************************************!
!******************************************************************************!
!!!!!!! Initialize a ppj ES potential and cancel the moments
!******************************************************************************!
SUBROUTINE
init_phi_ppj
USE
basic
USE
grid
USE
fields
USE
prec_const
USE
initial_par
USE
model
,
ONLY
:
KIN_E
,
LINEARITY
USE
geometry
,
ONLY
:
Jacobian
,
iInt_Jacobian
IMPLICIT
NONE
REAL
(
dp
)
::
kx
,
ky
,
z
,
amp
amp
=
1.0_dp
!**** ppj initialization *******************************************
DO
ikx
=
ikxs
,
ikxe
kx
=
kxarray
(
ikx
)
DO
iky
=
ikys
,
ikye
ky
=
kyarray
(
iky
)
DO
iz
=
izs
,
ize
z
=
zarray
(
iz
,
0
)
IF
(
ky
.NE.
0
)
THEN
phi
(
iky
,
ikx
,
iz
)
=
0._dp
ELSE
phi
(
iky
,
ikx
,
iz
)
=
0.5_dp
*
amp
*
(
deltakx
/(
ABS
(
kx
)
+
deltakx
))
ENDIF
! z-dep and noise
phi
(
iky
,
ikx
,
iz
)
=
phi
(
iky
,
ikx
,
iz
)
*
&
(
Jacobian
(
iz
,
0
)
*
iInt_Jacobian
)
**
2
END
DO
END
DO
END
DO
!symmetry at ky = 0 to keep real inverse transform
IF
(
contains_ky0
)
THEN
DO
ikx
=
2
,
Nkx
/
2
phi
(
iky_0
,
ikx
,
izs
:
ize
)
=
phi
(
iky_0
,
Nkx
+2
-
ikx
,
izs
:
ize
)
END
DO
phi
(
iky_0
,
ikx_0
,
izs
:
ize
)
=
REAL
(
phi
(
iky_0
,
ikx_0
,
izs
:
ize
))
!origin must be real
ENDIF
!**** ensure no previous moments initialization
IF
(
KIN_E
)
moments_e
=
0._dp
moments_i
=
0._dp
END
SUBROUTINE
init_phi_ppj
!******************************************************************************!
!******************************************************************************!
!******************************************************************************!
!******************************************************************************!
!******************************************************************************!
!!!!!!! Initialize an ionic Gaussian blob on top of the preexisting modes
!!!!!!! Initialize an ionic Gaussian blob on top of the preexisting modes
...
@@ -332,23 +384,28 @@ END SUBROUTINE init_phi
...
@@ -332,23 +384,28 @@ END SUBROUTINE init_phi
SUBROUTINE
initialize_blob
SUBROUTINE
initialize_blob
USE
fields
USE
fields
USE
grid
USE
grid
USE
geometry
,
ONLY
:
shear
,
Jacobian
,
iInt_Jacobian
USE
model
,
ONLY
:
KIN_E
,
LINEARITY
USE
model
,
ONLY
:
KIN_E
,
LINEARITY
IMPLICIT
NONE
IMPLICIT
NONE
REAL
(
dp
)
::
kx
,
ky
,
sigma
,
gain
REAL
(
dp
)
::
kx
,
ky
,
z
,
sigma_x
,
sigma_y
,
gain
sigma
=
0.5_dp
sigma_y
=
1.0
gain
=
5e2_dp
sigma_x
=
sigma_y
gain
=
10.0
DO
ikx
=
ikxs
,
ikxe
kx
=
kxarray
(
ikx
)
DO
iky
=
ikys
,
ikye
DO
iky
=
ikys
,
ikye
ky
=
kyarray
(
iky
)
ky
=
kyarray
(
iky
)
DO
iz
=
izs
,
ize
DO
iz
=
izs
,
ize
z
=
zarray
(
iz
,
0
)
DO
ikx
=
ikxs
,
ikxe
kx
=
kxarray
(
ikx
)
+
z
*
shear
*
ky
DO
ip
=
ips_i
,
ipe_i
DO
ip
=
ips_i
,
ipe_i
DO
ij
=
ijs_i
,
ije_i
DO
ij
=
ijs_i
,
ije_i
IF
(
(
iky
.NE.
iky_0
)
.AND.
(
ip
.EQ.
1
)
.AND.
(
ij
.EQ.
1
))
THEN
IF
(
(
iky
.NE.
iky_0
)
.AND.
(
ip
.EQ.
1
)
.AND.
(
ij
.EQ.
1
))
THEN
moments_i
(
ip
,
ij
,
iky
,
ikx
,
iz
,
:)
=
moments_i
(
ip
,
ij
,
iky
,
ikx
,
iz
,
:)
&
moments_i
(
ip
,
ij
,
iky
,
ikx
,
iz
,
:)
=
moments_i
(
ip
,
ij
,
iky
,
ikx
,
iz
,
:)
&
+
gain
*
sigma
/
SQRT2
*
exp
(
-
(
kx
**
2
+
ky
**
2
)
*
sigma
**
2
/
4._dp
)
&
+
gain
*
exp
(
-
((
kx
/
sigma_x
)
**
2
+
(
ky
/
sigma_y
)
**
2
))
&
*
AA_x
(
ikx
)
*
AA_y
(
iky
)
!&
*
AA_x
(
ikx
)
*
AA_y
(
iky
)
*
&
(
Jacobian
(
iz
,
0
)
*
iInt_Jacobian
)
**
2
!&
! * exp(sigmai2_taui_o2*(kx**2+ky**2))
! * exp(sigmai2_taui_o2*(kx**2+ky**2))
ENDIF
ENDIF
ENDDO
ENDDO
...
@@ -358,8 +415,9 @@ SUBROUTINE initialize_blob
...
@@ -358,8 +415,9 @@ SUBROUTINE initialize_blob
DO
ij
=
ijs_e
,
ije_e
DO
ij
=
ijs_e
,
ije_e
IF
(
(
iky
.NE.
iky_0
)
.AND.
(
ip
.EQ.
1
)
.AND.
(
ij
.EQ.
1
))
THEN
IF
(
(
iky
.NE.
iky_0
)
.AND.
(
ip
.EQ.
1
)
.AND.
(
ij
.EQ.
1
))
THEN
moments_e
(
ip
,
ij
,
iky
,
ikx
,
iz
,
:)
=
moments_e
(
ip
,
ij
,
iky
,
ikx
,
iz
,
:)
&
moments_e
(
ip
,
ij
,
iky
,
ikx
,
iz
,
:)
=
moments_e
(
ip
,
ij
,
iky
,
ikx
,
iz
,
:)
&
+
gain
*
sigma
/
SQRT2
*
exp
(
-
(
kx
**
2
+
ky
**
2
)
*
sigma
**
2
/
4._dp
)
&
+
gain
*
exp
(
-
((
kx
/
sigma_x
)
**
2
+
(
ky
/
sigma_y
)
**
2
))
&
*
AA_x
(
ikx
)
*
AA_y
(
iky
)
!&
*
AA_x
(
ikx
)
*
AA_y
(
iky
)
*
&
(
Jacobian
(
iz
,
0
)
*
iInt_Jacobian
)
**
2
!&
! * exp(sigmai2_taui_o2*(kx**2+ky**2))
! * exp(sigmai2_taui_o2*(kx**2+ky**2))
ENDIF
ENDIF
ENDDO
ENDDO
...
@@ -423,7 +481,7 @@ SUBROUTINE init_ppj
...
@@ -423,7 +481,7 @@ SUBROUTINE init_ppj
(
Jacobian
(
iz
,
0
)
*
iInt_Jacobian
)
**
2
(
Jacobian
(
iz
,
0
)
*
iInt_Jacobian
)
**
2
! divide by kernel_0 to adjust to particle density (n = kernel_0 N00)
! divide by kernel_0 to adjust to particle density (n = kernel_0 N00)
moments_e
(
ip
,
ij
,
iky
,
ikx
,
iz
,:)
=
moments_e
(
ip
,
ij
,
iky
,
ikx
,
iz
,:)/
kernel_e
(
ij
,
iky
,
ikx
,
iz
,
0
)
!
moments_e(ip,ij,iky,ikx,iz,:) = moments_e(ip,ij,iky,ikx,iz,:)/kernel_e(ij,iky,ikx,iz,0)
END
DO
END
DO
END
DO
END
DO
END
DO
END
DO
...
@@ -467,7 +525,7 @@ SUBROUTINE init_ppj
...
@@ -467,7 +525,7 @@ SUBROUTINE init_ppj
moments_i
(
ip
,
ij
,
iky
,
ikx
,
iz
,:)
=
moments_i
(
ip
,
ij
,
iky
,
ikx
,
iz
,:)
*
&
moments_i
(
ip
,
ij
,
iky
,
ikx
,
iz
,:)
=
moments_i
(
ip
,
ij
,
iky
,
ikx
,
iz
,:)
*
&
(
Jacobian
(
iz
,
0
)
*
iInt_Jacobian
)
**
2
(
Jacobian
(
iz
,
0
)
*
iInt_Jacobian
)
**
2
! divide by kernel_0 to adjust to particle density (n = kernel_0 N00)
! divide by kernel_0 to adjust to particle density (n = kernel_0 N00)
moments_i
(
ip
,
ij
,
iky
,
ikx
,
iz
,:)
=
moments_i
(
ip
,
ij
,
iky
,
ikx
,
iz
,:)/
kernel_i
(
ij
,
iky
,
ikx
,
iz
,
0
)
!
moments_i(ip,ij,iky,ikx,iz,:) = moments_i(ip,ij,iky,ikx,iz,:)/kernel_i(ij,iky,ikx,iz,0)
END
DO
END
DO
END
DO
END
DO
END
DO
END
DO
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment