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
2837b818
Commit
2837b818
authored
3 years ago
by
Antoine Cyril David Hoffmann
Browse files
Options
Downloads
Patches
Plain Diff
Added a flag to know if the process has kr=0 data or not
parent
65812b94
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/grid_mod.F90
+20
-4
20 additions, 4 deletions
src/grid_mod.F90
src/inital.F90
+7
-6
7 additions, 6 deletions
src/inital.F90
src/stepon.F90
+24
-24
24 additions, 24 deletions
src/stepon.F90
with
51 additions
and
34 deletions
src/grid_mod.F90
+
20
−
4
View file @
2837b818
...
@@ -49,8 +49,10 @@ MODULE grid
...
@@ -49,8 +49,10 @@ MODULE grid
REAL
(
dp
),
DIMENSION
(:),
ALLOCATABLE
,
PUBLIC
::
kparray
! kperp array
REAL
(
dp
),
DIMENSION
(:),
ALLOCATABLE
,
PUBLIC
::
kparray
! kperp array
REAL
(
dp
),
PUBLIC
,
PROTECTED
::
deltakr
,
deltakz
REAL
(
dp
),
PUBLIC
,
PROTECTED
::
deltakr
,
deltakz
INTEGER
,
PUBLIC
,
PROTECTED
::
ikrs
,
ikre
,
ikzs
,
ikze
,
ikps
,
ikpe
INTEGER
,
PUBLIC
,
PROTECTED
::
ikrs
,
ikre
,
ikzs
,
ikze
,
ikps
,
ikpe
INTEGER
,
PUBLIC
,
PROTECTED
::
ikr_0
,
ikz_0
! Indices of k-grid origin
INTEGER
,
PUBLIC
,
PROTECTED
::
ikr_0
,
ikz_0
,
ikr_max
,
ikz_max
! Indices of k-grid origin
and max
INTEGER
,
PUBLIC
::
ikr
,
ikz
,
ip
,
ij
,
ikp
! counters
INTEGER
,
PUBLIC
::
ikr
,
ikz
,
ip
,
ij
,
ikp
! counters
LOGICAL
,
PUBLIC
,
PROTECTED
::
contains_kr0
=
.false.
! rank of the proc containing kr=0 indices
LOGICAL
,
PUBLIC
,
PROTECTED
::
contains_krmax
=
.false.
! rank of the proc containing kr=max indices
! Grid containing the polynomials degrees
! Grid containing the polynomials degrees
INTEGER
,
DIMENSION
(:),
ALLOCATABLE
,
PUBLIC
::
parray_e
INTEGER
,
DIMENSION
(:),
ALLOCATABLE
,
PUBLIC
::
parray_e
...
@@ -164,10 +166,19 @@ CONTAINS
...
@@ -164,10 +166,19 @@ CONTAINS
deltakr
=
2._dp
*
PI
/
Lr
deltakr
=
2._dp
*
PI
/
Lr
ENDIF
ENDIF
!
Disc
reti
zed kr positions
ordered as dk*(0 1 2 3)
!
C
re
a
ti
ng a grid
ordered as dk*(0 1 2 3)
DO
ikr
=
ikrs
,
ikre
DO
ikr
=
ikrs
,
ikre
krarray
(
ikr
)
=
REAL
(
ikr
-1
,
dp
)
*
deltakr
krarray
(
ikr
)
=
REAL
(
ikr
-1
,
dp
)
*
deltakr
IF
(
krarray
(
ikr
)
.EQ.
0
)
ikr_0
=
ikr
! Finding kr=0
IF
(
krarray
(
ikr
)
.EQ.
0
)
THEN
ikr_0
=
ikr
contains_kr0
=
.true.
ENDIF
! Finding krmax
IF
(
krarray
(
ikr
)
.EQ.
(
Nr
/
2+1
)
*
deltakr
)
THEN
ikr_max
=
ikr
contains_krmax
=
.true.
ENDIF
END
DO
END
DO
! Orszag 2/3 filter
! Orszag 2/3 filter
...
@@ -193,18 +204,23 @@ CONTAINS
...
@@ -193,18 +204,23 @@ CONTAINS
ikze
=
Nkz
ikze
=
Nkz
ALLOCATE
(
kzarray
(
ikzs
:
ikze
))
ALLOCATE
(
kzarray
(
ikzs
:
ikze
))
! Grid spacings and discretized kz positions ordered as dk*(0 1 2 3 -2 -1)
IF
(
Lz
.EQ.
0
)
THEN
! 1D linear case
IF
(
Lz
.EQ.
0
)
THEN
! 1D linear case
deltakz
=
1._dp
deltakz
=
1._dp
kzarray
(
1
)
=
0
kzarray
(
1
)
=
0
ikz_0
=
1
ikz_0
=
1
ikz_max
=
1
ELSE
ELSE
deltakz
=
2._dp
*
PI
/
Lz
deltakz
=
2._dp
*
PI
/
Lz
! Creating a grid ordered as dk*(0 1 2 3 -2 -1)
DO
ikz
=
ikzs
,
ikze
DO
ikz
=
ikzs
,
ikze
kzarray
(
ikz
)
=
deltakz
*
(
MODULO
(
ikz
-1
,
Nkz
/
2
)
-
Nkz
/
2
*
FLOOR
(
2.
*
real
(
ikz
-1
)/
real
(
Nkz
)))
kzarray
(
ikz
)
=
deltakz
*
(
MODULO
(
ikz
-1
,
Nkz
/
2
)
-
Nkz
/
2
*
FLOOR
(
2.
*
real
(
ikz
-1
)/
real
(
Nkz
)))
if
(
ikz
.EQ.
Nz
/
2+1
)
kzarray
(
ikz
)
=
-
kzarray
(
ikz
)
if
(
ikz
.EQ.
Nz
/
2+1
)
kzarray
(
ikz
)
=
-
kzarray
(
ikz
)
! Finding kz=0
IF
(
kzarray
(
ikz
)
.EQ.
0
)
ikz_0
=
ikz
IF
(
kzarray
(
ikz
)
.EQ.
0
)
ikz_0
=
ikz
! Finding kzmax
IF
(
kzarray
(
ikr
)
.EQ.
(
Nz
/
2
)
*
deltakr
)
ikr_max
=
ikr
END
DO
END
DO
IF
(
my_id
.EQ.
0
)
write
(
*
,
*
)
kzarray
ENDIF
ENDIF
! Orszag 2/3 filter
! Orszag 2/3 filter
...
...
This diff is collapsed.
Click to expand it.
src/inital.F90
+
7
−
6
View file @
2837b818
...
@@ -100,9 +100,9 @@ SUBROUTINE init_moments
...
@@ -100,9 +100,9 @@ SUBROUTINE init_moments
END
DO
END
DO
END
DO
END
DO
IF
(
ikrs
.EQ.
1
)
THEN
IF
(
contains_kr0
)
THEN
DO
ikz
=
2
,
Nkz
/
2
!symmetry at kr = 0
DO
ikz
=
2
,
Nkz
/
2
!symmetry at kr = 0
moments_e
(
ip
,
ij
,
1
,
ikz
,
:)
=
moments_e
(
ip
,
ij
,
1
,
Nkz
+2
-
ikz
,
:)
moments_e
(
ip
,
ij
,
ikr_0
,
ikz
,
:)
=
moments_e
(
ip
,
ij
,
ikr_0
,
Nkz
+2
-
ikz
,
:)
END
DO
END
DO
ENDIF
ENDIF
...
@@ -119,9 +119,9 @@ SUBROUTINE init_moments
...
@@ -119,9 +119,9 @@ SUBROUTINE init_moments
END
DO
END
DO
END
DO
END
DO
IF
(
ikrs
.EQ.
1
)
THEN
IF
(
contains_kr0
)
THEN
DO
ikz
=
2
,
Nkz
/
2
!symmetry at kr = 0
DO
ikz
=
2
,
Nkz
/
2
!symmetry at kr = 0
moments_i
(
ip
,
ij
,
1
,
ikz
,
:)
=
moments_i
(
ip
,
ij
,
1
,
Nkz
+2
-
ikz
,
:)
moments_i
(
ip
,
ij
,
ikr_0
,
ikz
,
:)
=
moments_i
(
ip
,
ij
,
ikr_0
,
Nkz
+2
-
ikz
,
:)
END
DO
END
DO
ENDIF
ENDIF
...
@@ -184,10 +184,11 @@ SUBROUTINE init_phi
...
@@ -184,10 +184,11 @@ SUBROUTINE init_phi
END
DO
END
DO
!symmetry at kr = 0 to keep real inverse transform
!symmetry at kr = 0 to keep real inverse transform
IF
(
ikrs
.EQ.
1
)
THEN
IF
(
contains_kr0
)
THEN
DO
ikz
=
2
,
Nkz
/
2
DO
ikz
=
2
,
Nkz
/
2
phi
(
1
,
ikz
)
=
phi
(
1
,
Nkz
+2
-
ikz
)
phi
(
ikr_0
,
ikz
)
=
phi
(
ikr_0
,
Nkz
+2
-
ikz
)
END
DO
END
DO
phi
(
ikr_0
,
Nz
/
2
)
=
REAL
(
phi
(
ikr_0
,
Nz
/
2
))
!origin must be real
ENDIF
ENDIF
!**** Cancel previous moments initialization
!**** Cancel previous moments initialization
...
...
This diff is collapsed.
Click to expand it.
src/stepon.F90
+
24
−
24
View file @
2837b818
...
@@ -129,34 +129,34 @@ SUBROUTINE stepon
...
@@ -129,34 +129,34 @@ SUBROUTINE stepon
END
SUBROUTINE
anti_aliasing
END
SUBROUTINE
anti_aliasing
SUBROUTINE
enforce_symetry
! Force X(k) = X(N-k)* complex conjugate symmetry
SUBROUTINE
enforce_symetry
! Force X(k) = X(N-k)* complex conjugate symmetry
! Electron moments
IF
(
contains_kr0
)
THEN
DO
ip
=
ips_e
,
ipe_e
! Electron moments
DO
ij
=
ijs_e
,
ije_e
DO
ip
=
ips_e
,
ipe_e
DO
ikz
=
2
,
Nkz
/
2
!symmetry at kr = 0
DO
ij
=
ijs_e
,
ije_e
moments_e
(
ip
,
ij
,
1
,
ikz
,
:)
=
CONJG
(
moments_e
(
ip
,
ij
,
1
,
Nkz
+2
-
ikz
,
:))
DO
ikz
=
2
,
Nkz
/
2
!symmetry at kr = 0
moments_e
(
ip
,
ij
,
ikr_0
,
ikz
,
:)
=
CONJG
(
moments_e
(
ip
,
ij
,
ikr_0
,
Nkz
+2
-
ikz
,
:))
END
DO
! must be real at origin
moments_e
(
ip
,
ij
,
ikr_0
,
ikz_0
,
:)
=
REAL
(
moments_e
(
ip
,
ij
,
ikr_0
,
ikz_0
,
:))
END
DO
END
DO
! must be real at origin and top right
moments_e
(
ip
,
ij
,
ikr_0
,
ikz_0
,
:)
=
REAL
(
moments_e
(
ip
,
ij
,
ikr_0
,
ikz_0
,
:))
moments_e
(
ip
,
ij
,
Nr
/
2
,
Nz
/
2
,
:)
=
REAL
(
moments_e
(
ip
,
ij
,
Nr
/
2
,
Nz
/
2
,
:))
END
DO
END
DO
END
DO
! Ion moments
! Ion moments
DO
ip
=
ips_i
,
ipe_i
DO
ip
=
ips_i
,
ipe_i
DO
ij
=
ijs_i
,
ije_i
DO
ij
=
ijs_i
,
ije_i
DO
ikz
=
2
,
Nkz
/
2
!symmetry at kr = 0
DO
ikz
=
2
,
Nkz
/
2
!symmetry at kr = 0
moments_i
(
ip
,
ij
,
ikr_0
,
ikz
,
:)
=
CONJG
(
moments_i
(
ip
,
ij
,
ikr_0
,
Nkz
+2
-
ikz
,
:))
moments_i
(
ip
,
ij
,
1
,
ikz
,
:)
=
CONJG
(
moments_i
(
ip
,
ij
,
1
,
Nkz
+2
-
ikz
,
:))
END
DO
! must be real at origin and top right
moments_i
(
ip
,
ij
,
ikr_0
,
ikz_0
,
:)
=
REAL
(
moments_i
(
ip
,
ij
,
ikr_0
,
ikz_0
,
:))
END
DO
END
DO
! must be real at origin and top right
moments_i
(
ip
,
ij
,
ikr_0
,
ikz_0
,
:)
=
REAL
(
moments_i
(
ip
,
ij
,
ikr_0
,
ikz_0
,
:))
moments_i
(
ip
,
ij
,
Nr
/
2
,
Nz
/
2
,
:)
=
REAL
(
moments_i
(
ip
,
ij
,
Nr
/
2
,
Nz
/
2
,
:))
END
DO
END
DO
END
DO
! Phi
! Phi
DO
ikz
=
2
,
Nkz
/
2
!symmetry at kr = 0
DO
ikz
=
2
,
Nkz
/
2
!symmetry at kr = 0
phi
(
ikr_0
,
ikz
)
=
phi
(
ikr_0
,
Nkz
+2
-
ikz
)
phi
(
1
,
ikz
)
=
phi
(
1
,
Nkz
+2
-
ikz
)
END
DO
END
DO
! must be real at origin
! must be real at origin and top right
phi
(
ikr_0
,
ikz_0
)
=
REAL
(
phi
(
ikr_0
,
ikz_0
))
phi
(
ikr_0
,
ikz_0
)
=
REAL
(
phi
(
ikr_0
,
ikz_0
))
ENDIF
END
SUBROUTINE
enforce_symetry
END
SUBROUTINE
enforce_symetry
END
SUBROUTINE
stepon
END
SUBROUTINE
stepon
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