! program read_data implicit none call read_potential('W05scEpot.dat') call read_potential('W05scBpot.dat') call read_schatable('SCHAtable.dat') call read_bndy('W05scBndy.dat') end program read_data !----------------------------------------------------------------------- subroutine read_potential(infile) ! ! Read ascii data file W05scEpot.dat, written by ! ! AB BYTE = Array[28] ! ALSCHFITS DOUBLE = Array[18, 28] ! CSIZE INT = 28 ! D1 INT = 15 ! D2 INT = 18 ! EX FLOAT = Array[2] ! LS INT = Array[28] ! MAXL INT = 12 ! MAXM INT = 2 ! MS INT = Array[28] ! SCHFITS DOUBLE = Array[15, 28] ! ! printf,lu,format="(a)",outfile ! printf,lu,format="(28i3)",ab ! printf,lu,format="(3i3)",csize,d1,d2 ! for i=0,csize-1 do printf,lu,format="(6e20.9)",alschfits[*,i] ! printf,lu,format="(2f10.3)",ex ! printf,lu,format="(28i3)",ls ! printf,lu,format="(2i3)",maxl,maxm ! printf,lu,format="(28i3)",ms ! for i=0,csize-1 do printf,lu,format="(6e20.9)",schfits[*,i] ! implicit none ! ! Args: character(len=*),intent(in) :: infile ! ! For weimer05: ! integer,parameter :: csize=28, d1=15, d2=18 integer :: ab(csize), ls(csize), ms(csize) real :: alschfits(d2,csize), schfits(d1,csize), ex(2) integer :: maxl,maxm ! ! Local: ! character(len=16) :: fname integer :: i,lu=20 integer :: rd_csize,rd_d1,rd_d2 ! open(lu,file=infile,status='old') read(lu,"(a)") fname if (trim(fname) /= trim(infile)) then write(6,"('>>> read_potential: incompatable file name: infile=',a,& &' fname=',a)") trim(infile),trim(fname) stop 'read_potential' endif read(lu,"(28i3)") ab read(lu,"(3i3)") rd_csize,rd_d1,rd_d2 if (rd_csize /= csize) then write(6,"('>>> read_potential: file ',a,': incompatable csize: ',& &'rd_csize=',i4,' csize=',i4)") fname,rd_csize,csize stop 'csize' endif if (rd_d1 /= d1) then write(6,"('>>> read_potential: file ',a,': incompatable d1: ',& &'rd_d1=',i4,' d1=',i4)") fname,rd_d1,d1 stop 'd1' endif if (rd_d2 /= d2) then write(6,"('>>> read_potential: file ',a,': incompatable d2: ',& &'rd_d2=',i4,' d2=',i4)") fname,rd_d2,d2 stop 'd2' endif do i=1,csize read(lu,"(6e20.9)") alschfits(:,i) enddo read(lu,"(2f10.3)") ex read(lu,"(28i3)") ls read(lu,"(2i3)") maxl,maxm read(lu,"(28i3)") ms do i=1,csize read(lu,"(6e20.9)") schfits(:,i) enddo write(6,"(/,'fname=',a)") fname write(6,"('ab=',28i3)") ab write(6,"('csize=',i4,' d1=',i4,' d2=',i4)") csize,d1,d2 do i=1,csize write(6,"('i=',i3,' alschfits(:,i)=',/,(6e20.9))") i,alschfits(:,i) enddo write(6,"('ex=',2f10.3)") ex write(6,"('ls=',28i3)") ls write(6,"('maxl,maxm=',2i4)") maxl,maxm write(6,"('ms=',28i3)") ms do i=1,csize write(6,"('i=',i3,' schfits(:,i)=',/,(6e20.9))") i,schfits(:,i) enddo write(6,"('read_potential: Closing file ',a)") infile close(lu) end subroutine read_potential !----------------------------------------------------------------------- subroutine read_schatable(infile) ! ! IDL> restore,'SCHAtable.xdr' ! IDL> help ! % At $MAIN$ ! ALLNKM DOUBLE = Array[19, 7, 68] ! MAXK INT = 18 ! MAXM INT = 6 ! TH0S FLOAT = Array[68] ! ! printf,lu,format="(a)",outfile ! printf,lu,format="(2i3)",maxk,maxm ! d1=19 & d2=7 & d3=68 ! for i=0,d3-1 do begin ! for j=0,d2-1 do begin ! printf,lu,format="(6e20.9)",allnkm[*,j,i] ! endfor ! endfor ! printf,lu,format="(8f10.4)",th0s ! implicit none ! ! Args: character(len=*),intent(in) :: infile ! ! For weimer05: ! integer,parameter :: d1=19, d2=7, d3=68 real :: allnkm(d1,d2,d3) integer :: maxk,maxm real :: th0s(d3) ! ! Local: ! character(len=16) :: fname integer :: i,j,lu=20 ! open(lu,file=infile,status='old') read(lu,"(a)") fname if (trim(fname) /= trim(infile)) then write(6,"('>>> read_schatable: incompatable file name: infile=',a,& &' fname=',a)") trim(infile),trim(fname) stop 'read_schatable' endif read(lu,"(2i3)") maxk,maxm do i=1,d3 do j=1,d2 read(lu,"(6e20.9)") allnkm(:,j,i) enddo enddo read(lu,"(8f10.4)") th0s ! write(6,"(/,'read_schatable: fname=',a)") fname write(6,"('maxk=',i4,' maxm=',i4)") maxk,maxm do i=1,d3 do j=1,d2 write(6,"('i=',i3,' j=',i3,' allnkm(:,j,i)=',/,(6e20.9))") & i,j,allnkm(:,j,i) enddo enddo write(6,"('th0s=',/,(8f10.4))") th0s write(6,"('read_schatable: Closing file ',a)") infile close(lu) end subroutine read_schatable !----------------------------------------------------------------------- subroutine read_bndy(infile) ! ! IDL> restore,'W05scBndy.xdr' ! IDL> help ! % At $MAIN$ ! BNDYA DOUBLE = Array[6] ! BNDYB DOUBLE = Array[7] ! EX FLOAT = Array[2] ! NA LONG = 6 ! NB LONG = 7 ! ! printf,lu,format="(a)",outfile ! printf,lu,format="(2i3)",na,nb ! printf,lu,format="(8e20.9)",bndya ! printf,lu,format="(8e20.9)",bndyb ! printf,lu,format="(8e20.9)",ex ! implicit none ! ! Args: character(len=*),intent(in) :: infile ! ! For weimer05: ! integer,parameter :: na=6, nb=7 real :: bndya(na),bndyb(nb),ex(2) ! ! Local: ! character(len=16) :: fname integer :: rd_na,rd_nb,lu=20 ! open(lu,file=infile,status='old') read(lu,"(a)") fname if (trim(fname) /= trim(infile)) then write(6,"('>>> read_bndy: incompatable file name: infile=',a,& &' fname=',a)") trim(infile),trim(fname) stop 'read_bndy' endif read(lu,"(2i3)") rd_na,rd_nb if (rd_na /= na) then write(6,"('>>> read_potential: file ',a,': incompatable na: ',& &'rd_na=',i4,' na=',i4)") fname,rd_na,na stop 'na' endif if (rd_nb /= nb) then write(6,"('>>> read_potential: file ',a,': incompatable nb: ',& &'rd_nb=',i4,' nb=',i4)") fname,rd_nb,nb stop 'nb' endif read(lu,"(8e20.9)") bndya read(lu,"(8e20.9)") bndyb read(lu,"(8e20.9)") ex ! write(6,"(/,'read_bndy: fname=',a)") fname write(6,"('na=',i3,' nb=',i3)") na,nb write(6,"('bndya=',/,(8e20.9))") bndya write(6,"('bndyb=',/,(8e20.9))") bndyb write(6,"('ex=',(8e20.9))") ex write(6,"('read_bndy: Closing file ',a)") infile close(lu) end subroutine read_bndy