OpenMCTDHB v2.3
|
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