diff --git a/src/diagnose.F90 b/src/diagnose.F90 index 5df1f8c087a13cc3c65500220c13282eb0ec7790..c76c7958901e7a47960a0df177dc9cb323ed65bb 100644 --- a/src/diagnose.F90 +++ b/src/diagnose.F90 @@ -296,14 +296,17 @@ SUBROUTINE diagnose_full(kstep) ! empty in our case - ! 2.3 2d profiles + ! 2.3 3d profiles IF (nsave_3d .GT. 0) THEN IF (MOD(cstep, nsave_3d) == 0) THEN CALL diagnose_3d - END IF - END IF + ! Looks at the folder if the file check_phi exists and spits a snapshot + ! of the current electrostatic potential in a basic text file + CALL spit_snapshot_check + ENDIF + ENDIF - ! 2.4 3d profiles + ! 2.4 5d profiles IF (nsave_5d .GT. 0 .AND. cstep .GT. 0) THEN IF (MOD(cstep, nsave_5d) == 0) THEN CALL diagnose_5d @@ -609,3 +612,35 @@ SUBROUTINE diagnose_5d END SUBROUTINE write_field5d_i END SUBROUTINE diagnose_5d + +SUBROUTINE spit_snapshot_check + USE fields, ONLY: phi + USE grid, ONLY: ikxs,ikxe,Nkx,ikys,ikye,Nky,izs,ize,Nz + USE parallel, ONLY: gather_xyz + USE basic + IMPLICIT NONE + LOGICAL :: file_exist + INTEGER :: fid_check, ikx, iky, iz + CHARACTER(256) :: check_filename + COMPLEX(dp), DIMENSION(1:Nky,1:Nkx,1:Nz) :: field_to_check + !! Spit a snapshot of PHI if requested (triggered by creating a file named "check_phi") + INQUIRE(file='check_phi', exist=file_exist) + IF( file_exist ) THEN + IF(my_id.EQ. 0) WRITE(*,*) 'Check file found -> gather phi..' + CALL gather_xyz(phi(ikys:ikye,ikxs:ikxe,izs:ize), field_to_check) + IF(my_id.EQ. 0) THEN + WRITE(check_filename,'(a16)') 'check_phi.out' + OPEN(fid_check, file=check_filename, form='formatted') + WRITE(*,*) 'Check file found -> output phi ..' + WRITE(fid_check,*) Nky, Nkx, Nz + DO iky = 1,Nky; DO ikx = 1, Nkx; DO iz = 1,Nz + WRITE(fid_check,*) real(field_to_check(iky,ikx,iz)), ',' , imag(field_to_check(iky,ikx,iz)) + ENDDO; ENDDO; ENDDO + CLOSE(fid_check) + WRITE(*,*) 'Check file found -> done.' + ! delete the check_phi flagfile + OPEN(fid_check, file='check_phi') + CLOSE(fid_check, status='delete') + ENDIF + ENDIF +END SUBROUTINE spit_snapshot_check