OpenMCTDHB v2.3

V_ext.F90

Go to the documentation of this file.
00001 ! vim:fdm=marker:
00002 !------------------------------------------------------------------------------------------
00003 !
00004 !                                create_V_ext
00005 !
00006 !------------------------------------------------------------------------------------------
00007 
00008 
00009 PROGRAM create_V_ext
00010 !
00011 !       Purpose: writes a file V_ext<tag>.inp  containing an 
00012 !                external one-body potential that can be read in  by openMCTDHB.
00013 !                reads the file V_ext.nml. Add whatever potential you like.
00014 !       
00015 !       Record of revisions:
00016 !               Date            Programmer              Description of change
00017 !               ====            ==========              ===================== 
00018 !               16.02.2011      K. Sakmann              Original code
00019 !
00020         
00021 USE   moduleparameters
00022 USE   moduleinputvariables
00023 USE   moduleallocatables
00024 USE   modulecreate_V_ext
00025 USE   modulegrid
00026 
00027 IMPLICIT NONE
00028 CHARACTER(255)       :: filename
00029 CHARACTER(70)        :: potName
00030 REAL*8  :: x0                   =       0.d0
00031 REAL*8  :: y0                   =       0.d0
00032 REAL*8  :: z0                   =       0.d0
00033 REAL*8  :: w_x                  =       0.d0
00034 REAL*8  :: w_y                  =       0.d0
00035 REAL*8  :: w_z                  =       0.d0
00036 
00037 
00038 
00039 !------------- READ INPUT PARAMETERS --------------------------------- 
00040 
00041 NAMELIST /GeneralPars/ xi,xf,yi,yf,zi,zf,NDX,NDY,NDZ,Dims
00042 NAMELIST /PotentialName/ potName
00043 NAMELIST /TagName/ tag
00044 NAMELIST /HarmonicParameters/ x0,y0,z0,w_x,w_y,w_z  
00045 
00046 
00047 open(110,FILE='V_ext.nml',DELIM='APOSTROPHE')
00048   read(110,NML=GeneralPars)
00049   read(110,NML=TagName)
00050   read(110,NML=PotentialName)
00051 close(110)
00052 
00053 !------------- CONSISTENCY CHECKS OF THE INPUT PARAMETERS -----------------
00054 
00055 call check_grid(Dims,NDX,NDY,NDZ)  ! CHECK THE GRID AND DIMENSIONS
00056 
00057 !------------- INITIALIZE VARIABLES THAT DEPEND ON THE INPUT VARIABLES
00058 
00059 tag = TRIM(ADJUSTL(tag))
00060 filename = trim('V_ext'//trim(tag)//'.inp')
00061 
00062 
00063 !------------- ALLOCATE AND (INITIALIZE TO ZERO) ALL SYSTEM SIZE DEPENDENT ARRAYS --------------------
00064 !              ADD MORE ALLOCATABLE ARRAYS TO MODULEALLOCATABLES 
00065 
00066 CALL allocate_systemArrays(NDX,NDY,NDZ,Morb=1,nConf=1,nSuperDiags=0)
00067 CALL get_positionGrid(xi,xf,NDX,gridx)
00068 CALL get_positionGrid(yi,yf,NDY,gridy)
00069 CALL get_positionGrid(zi,zf,NDZ,gridz)
00070 
00071 !------------ CHOOSE THE EXTERNAL POTENTIAL HERE DEPENDING ON THE INPUT
00072 IF (TRIM(ADJUSTL(potName)) =='HARMONIC') THEN 
00073 
00074   open(110,FILE='V_ext.nml',DELIM='APOSTROPHE')
00075     read(110,NML=HarmonicParameters)
00076   close(110)
00077 
00078   WRITE(*,*)"USE A HARMONIC POTENTIAL"
00079   WRITE(*,*)"x0=",x0,"y0=",y0,"z0",z0
00080   CALL get_harmonicPotential(NDX,NDY,NDZ,gridx,gridy,gridz,x0,y0,z0,&
00081                              w_x,w_y,w_z,V_ext) 
00082 
00083   WRITE(*,*)"SAVE THE INPUT FILE IN  ",'V_ext'//trim(adjustl(tag))//'.nml'
00084   OPEN(113,FILE='V_ext'//trim(adjustl(tag))//'.nml',DELIM='APOSTROPHE',status='REPLACE')
00085     WRITE(113,NML=GeneralPars)
00086     WRITE(113,NML=TagName)
00087     WRITE(113,NML=PotentialName)
00088     WRITE(113,NML=HarmonicParameters)
00089   CLOSE(113)
00090 
00091 ELSE IF (TRIM(ADJUSTL(potName)) == 'BJJ')  THEN
00092 
00093   WRITE(*,*)"USE THE BJJ-LETTER POTENTIAL"
00094   CALL get_bjjLetterPotential(NDX,NDY,NDZ,gridx,gridy,gridz,Dims,V_ext) 
00095 
00096   open(113,FILE='V_ext'//trim(adjustl(tag))//'.nml',DELIM='APOSTROPHE',status='REPLACE')
00097     write(113,NML=GeneralPars)
00098     write(113,NML=TagName)
00099     write(113,NML=PotentialName)
00100   close(113)
00101 
00102 ELSE 
00103 
00104   WRITE(*,*)"ERROR WRITE UNKNOWN POTENTIAL", potName
00105   STOP
00106 
00107 END IF
00108 
00109 WRITE(*,*)"WRITE THE  POTENTIAL TO ",filename
00110 CALL write_potentialToFile(NDX,NDY,NDZ,gridx,gridy,gridz,V_ext,filename)
00111 
00112 CALL deallocate_systemArrays
00113 
00114 END PROGRAM create_V_ext
 All Namespaces Files Functions Variables