Dears, I am trying to compile a code linking against the lapack.a library but I get this error:
/tmp/ifort9ePIqt.o(.text+0x492a): In function `MAIN__':
: undefined reference to `zgetri_'
several times.
I tried to compile and recompile my lapack changing some configurations on the make.inc
OPTS = -O3 -mp -tpp6
NOOPT = -O3 -mp -fltconsistency -fp_port
FORTRAN = ifort
#OPTS = -funroll-all-loops -O3
DRVOPTS = $(OPTS)
#NOOPT =
LOADER = ifort
LOADOPTS =
and
FORTRAN = /opt/intel/fc/9.1.043/bin/ifort
OPTS = -O2 -mtune=pentium4
DRVOPTS = $(OPTS)
NOOPT = -O0
LOADER = /opt/intel/fc/9.1.043/bin/ifort
LOADOPTS = -O2 -mtune=pentium4
but I still get those errors.
could somebody help me?
My machines are Xeon 64, running CentOS 4 and below is a copy of the code I'm trying to compile. ( I tried to attachm but I got a "the extention "whatever I renamed" is not allowed"
Thanks in advance
!********************* OPEN QUANTUM DOT PERTURBADO ***********************
!***************************************************************************
!***************************************************************************
! TRANSPORTE BALISTICO EM SISTEMAS MESOSCOPICOS 2D CONFINADOS
!***************************************************************************
!***************************************************************************
!Programa principal(METODO RECURSIVO 2D)
!Calcula a probabilidade de transmissao en sistemas mesoscopicos ideais (2D)
!usando un hamiltoniano tipo tight binding (que emula o espa�o continuo) e
!funcoes de Green (propagador do sistema). Aqui usamos cadeias transversais
!para simplificar os calculos (inversao de matrizes e simetrias).
!***************************************************************************
!***************************************************************************
!N:sitios transversais e M:sitios longitudinais)
!PARAMETER (NDX=11,MCX=10,MQPC1X=3,NMX=2*MCX+MQPC1X)
PARAMETER (NDX=115,NDXA=NDX*7,MCX=20,MQPC1X=20,MQPC2X=20,MOQDX=115,NMX=2*MCX+MQPC1X+MOQDX+MQPC2X,NWX=31)
!PARAMETER (NDX=11,MCX=10,MQPC1X=5,MQPC2X=5,MOQDX=11,NMX=2*MCX+MQPC1X+MOQDX+MQPC2X,NWX=3)
implicit real*8 (a-h,o-y)
IMPLICIT COMPLEX*16(z)
integer ixxm1,ixxn1,NIX
integer ibx,jyx,vvx,vv1x,vx,ux,inx,jnx,ivx,imx,ixx,yyx,IKX,IK1X,yy1x,ixxn,ixxm,xxi
integer WBX,WBXX,rny,rmx,cc
integer jxx,J
REAL*8 EAX,EBX,VAX,VBX,EX,VHX,nxx,mxx,azx,sx,pix,Evx,Eux,CC1x,CF1x,CF2x,TX,EIX,impureza1,a1,b1,fx1,fy1
REAL*8 fx1n,fx1d,fy1n,fy1d,fx2n,fx2d,fy2n,fy2d,impureza2,a2,b2,fx2,fy2
REAL*8 TTuvx,Ev1x,TTX
REAL*8 RRuvx
!REAL*8 YMINI
REAL*8 YMAX,EEXX
REAL*8 pz,aa,bb,hh,aax,hhx,bbx,xx,xy
complex*16 tuvx,CAX
!DIMENSION EMINI(52),TMINI(52)
!DIMENSION EMAX(52),TMAX(52)
REAL*8,DIMENSION (1:31)::EMAX
REAL*8,DIMENSION (1:31)::TMAX
REAL*8,DIMENSION (1:NMX,1:NDX)::DISPOX
REAL*8,DIMENSION (1:16,1:16)::MFO
!REAL*8,DIMENSION (1:9,1:9)::MFO
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::HCX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::QWC
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::QWQPC
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::HQPC1X
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::HQPC2X
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::HOQDX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::HGX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::MDUXX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::CLX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::UUX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::GUX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::CLXX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::CRXX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::VHXX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::GTX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::GRX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::GIX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::XXX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::XX1x
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::XXAX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::XX1AX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::HIX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::XIX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::GTvx
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::GRvx
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::HICX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::HIXX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::XIXX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::GIICX
COMPLEX*16,DIMENSION (1:NDX,1:NDX)::GIXX
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
!***************subroutine lapack*******************
integer, dimension ( NDX ) :: ipiv
integer :: mm , nn , lda , info, lwork
complex*16 , dimension(NDXA) :: work
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
mm = NDX
nn = NDX
lda = NDX
lwork = NDXA
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
open(10,file='EEXvsTTX2',status='old')
!open(140,file='DISPOXX2',status='new')
!open(120,file='TT+RRX2',status='new')
open(130,file='DISPO1X2',status='old')
open(131,file='DISPO3DX2',status='old')
open(7,file='MFO2DX2',status='old')
zrx=(1.d0,0.d0)
zix=(0.d0,1.d0)
z0x=(0.d0,0.d0)
!DEFINICAO DA HETEROESTRUTURA:
!PARAMETRO DE REDE: "azx" (Amgstrons)
azx=20.d0
!Largura L=(ni-1)*azx
!Largura medio da parte imaginaria da energia
!*********************************************
sx=0.0000001d0
!******************************************************************************
!******************************************************************************
!PARAMETROS TIGHT BINDING USADOS (fundo da banda de conducao do GaAs)
!******************************************************************************
!******************************************************************************
!Energia do sitio (GaAs): EA; Energia do sitio (AlGaAs): EB
!Energia hopping (GaAs): VA; Energia hopping (AlGaAs): VB
!Energia hopping GaAs/AlGaAs: V
VAX=DABS(-56.86608298d0/(azx*azx))
VBX=DABS(-56.86608298d0/(azx*azx))
!VBX=-41.45840653d0/(azx*azx)
!EIX=1000*VAX
EAX=2*(VAX)*(2)
EIX=EAX+0.5d0
EBX=2*(VBX)*(2)+0.1d0
VHX=DABS(-SQRT((VAX*VBX)))
!******************************************************************************
!HC: hamiltoniano tipo tight binding da cadeia transversal do contato.
!HC(i,j):elementos de matriz do hamiltoniano. i:columna, j:fila.
!******************************************************************************
do ixx=1,NDX
do jxx=1,NDX
HCX(jxx,ixx)=z0x
end do
end do
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
do imx=1,1
HCX((imx-1)*NDX+1,(imx-1)*NDX+1)=(EAX)*zrx
HCX(imx*NDX,imx*NDX)=(EAX)*zrx
HCX((imx-1)*NDX+2,(imx-1)*NDX+1)=-VAX*zrx;HCX(imx*NDX-1,imx*NDX)=-VAX*zrx
do ixx=(imx-1)*NDX+2,imx*NDX-1
HCX(ixx,ixx)=(EAX)*zrx;HCX(ixx+1,ixx)=-VAX*zrx;HCX(ixx-1,ixx)=-VAX*zrx
end do
end do
!XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
do ixx=1,NDX
do jxx=1,NDX
HQPC1X(jxx,ixx)=z0x
end do
end do
do ixx=1,NDX
do jxx=1,NDX
HQPC2X(jxx,ixx)=z0x
end do
end do
do ixx=1,NDX
do jxx=1,NDX
HOQDX(jxx,ixx)=z0x
end do
end do
do ixx=1,NDX
do jxx=1,NDX
HICX(jxx,ixx)=z0x
end do
end do
!******************************************************************************
do ixx=1,NDX
do jxx=1,NDX
HGX(jxx,ixx)=z0x
end do
end do
do imx=1,1
HGX((imx-1)*NDX+1,(imx-1)*NDX+1)=(EIX)*zrx
HGX(imx*NDX,imx*NDX)=(EIX)*zrx
HGX((imx-1)*NDX+2,(imx-1)*NDX+1)=-VAX*zrx;HGX(imx*NDX-1,imx*NDX)=-VAX*zrx
do ixx=(imx-1)*NDX+2,imx*NDX-1
HGX(ixx,ixx)=(EIX)*zrx;HGX(ixx+1,ixx)=-VAX*zrx;HGX(ixx-1,ixx)=-VAX*zrx
end do
end do
!************************************************
!************** QPC1 ****************
!************************************************
HQPC1X=HGX
WBX=NWX
bb=EAX
hh=(WBX+1)/2
aa=(EIX-EAX)/((WBX-hh)*(WBX-hh))
yyx=42
!yyx=4
do iyx=1,WBX
xx=iyx-hh
yy1x=yyx+iyx
do imx=1,1
!HQPC1X((yy1x)+(imx-1)*NDX,(yy1x)+(imx-1)*NDX)=(aa*xx*xx+EAX)*zrx
HQPC1X((yy1x)+(imx-1)*NDX,(yy1x)+(imx-1)*NDX)=(EAX)*zrx
end do
end do
!************************************************
!************** QPC2 ****************
!************************************************
HQPC2X=HQPC1X
!************************************************
!************** OQD ****************
!************************************************
HOQDX=HGX
WBX=NDX
bb=EAX
hh=(WBX+1)/2
aa=(EIX-EAX)/((WBX-hh)*(WBX-hh))
yyx=0
do iyx=1,WBX
xx=iyx-hh
yy1x=yyx+iyx
do imx=1,1
!HOQDX((yy1x)+(imx-1)*NDX,(yy1x)+(imx-1)*NDX)=(aa*xx*xx+EAX)*zrx
end do
end do
!25(rnymax=75) e 15(rnymax=83)
!rny=45
!rmx=20
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
!ixxn=0
!ixxm=0
do ixxn=1,16
rny=3*ixxn+4
!rx=ixxn+6
!1-27
do ixxm=1,16
rmx=3*ixxm+4
!ry=ixxm+6
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!@@@@@@@@@@@@@ IMPUREZA CONTROLAVEL @@@@@@@@@@@@@@
HICX=HGX
WBX=NDX
bb=EAX
hh=(WBX+1)/2
aa=(EIX-EAX)/((WBX-hh)*(WBX-hh))
yyx=0
do iyx=1,WBX
xx=iyx-hh
yy1x=yyx+iyx
do imx=1,1
!HICX((yy1x)+(imx-1)*NDX,(yy1x)+(imx-1)*NDX)=(EAX)*zrx
end do
end do
!***************** IMPUREZAS ********************
!**************************************************
!****************** CADEIA 1 ********************
!****************** CENTRO ********************
!NIX=11
!do iyx=1,NIX
!HICX(75+iyx,75+iyx)=(EAX+0.00d0)*zrx
!end do
!NIX=3
do iyx=1,NIX
!HICX(rny+iyx,rny+iyx)=(EAX+0.1d0)*zrx
end do
!******************************************************************************
!******************************************************************************
do iax=1,NDX
do jx=1,NDX
MDUXX(jx,iax)=z0x
end do
end do
do ibx=1,NDX
MDUXX(ibx,ibx)=zrx
end do
!******************************************************************************
YMAX=0.d0
!!YMINI=8.d0
do ixx=1,31
vv1x=1
Ev1x=2.d0*VAX-2.d0*VAX*dcos(pix*vv1x/(NDX+1))
!EX=1e-20+ixx*((4)*VAX+Ev1x-0.00001d0)/100000
EX=0.0028d0+ixx*0.000008d0
!EX=0.0633d0
!******************************************************************************
!******************************************************************************
!*************** CONTATOS SEMI-INFINITOS: CL,CR (CL=CR) ******************
!******************************************************************************
!******************************************************************************
do inx=1,NDX
vvx=0
do jnx=1,NDX
vvx=1+vvx
CC1x=dsqrt((2.d0/(NDX+1)))
pix=3.141592654d0
UUX(jnx,inx)=CC1x*dsin(pix*vvx*inx/(NDX+1))
end do
end do
do ivx=1,NDX
Evx=2.d0*VAX-2.d0*VAX*dcos(pix*ivx/(NDX+1))
if((EX.GE.(0)).AND.(EX.LT.Evx)) then
CAX=dcos(dacos((EX-Evx)/(2.d0*VAX)+1.d0))*zrx-dsin(dacos((EX-Evx)/(2.d0*VAX)+1.d0))*zix
else
CAX=dcos(dacos((EX-Evx)/(2.d0*VAX)-1.d0))*zrx-dsin(dacos((EX-Evx)/(2.d0*VAX)-1.d0))*zix
end if
GUX(ivx,ivx)=(1.d0/VAX)*CAX
end do
CLX=MATMUL(UUX,MATMUL(GUX,transpose(UUX)))
!******************************************************************************
!******************************************************************************
! METODO RECURSIVO PARA CALCULAR GT=Gm'm(n'n) e GR=Gmm(n'n)
!******************************************************************************
!******************************************************************************
VHXX=-VAX*MDUXX
!******************
CLXX=CLX
CRXX=CLX
!******************
GTX=CRXX
GRX=CRXX
!******************************************************************************
!************* CONTATO1 ***************
!******************************************************************************
HIX=HCX
XIX=1E+30*(EX*MDUXX-HIX+sx*MDUXX*zix)
!call invxx(XIX)
call zgetrf( mm, nn, XIX, lda, ipiv, info ) ! LU factoriza
call zgetri( nn, XIX, lda, ipiv, work, lwork, info ) ! LU inver
GIX=1E+30*XIX
QWC=GIX
jxx=0
do imx=MCX,1,-1
!*****************************************************
!**************** DISPOSITIVO ******************
jyx=0
jxx=jxx+1
do nxx=1,NDX
jyx=jyx+1
DISPOX(jxx,nxx)=HIX(jyx,jyx)
end do
!*****************************************************
!*****************************************************
XXAX=1E+30*(MDUXX-MATMUL(GIX,MATMUL(VHXX,MATMUL(GRX,VHXX))))
!call invxx(XXAX)
call zgetrf( mm, nn, XXAX, lda, ipiv, info ) ! LU factoriza
call zgetri( nn, XXAX, lda, ipiv, work, lwork, info ) ! LU inver
XXX=1E+30*XXAX
GTX=MATMUL(GTX,MATMUL(VHXX,MATMUL(XXX,GIX)))
GRX=MATMUL(XXX,GIX)
end do
!******************************************************************************
!************ QPC1 **********
!******************************************************************************
HIX=HQPC1X
XIX=1E+30*(EX*MDUXX-HIX+sx*MDUXX*zix)
!call invxx(XIX)
call zgetrf( mm, nn, XIX, lda, ipiv, info ) ! LU factoriza
call zgetri( nn, XIX, lda, ipiv, work, lwork, info ) ! LU inver
GIX=1E+30*XIX
QWQPC=GIX
jxx=MCX
do imx=MQPC1X,1,-1
!*****************************************************
!*************** DISPOSITIVO ********************
jyx=0
jxx=jxx+1
do nxx=1,NDX
jyx=jyx+1
DISPOX(jxx,nxx)=HIX(jyx,jyx)
end do
!*****************************************************
!*****************************************************
XXAX=1E+30*(MDUXX-MATMUL(GIX,MATMUL(VHXX,MATMUL(GRX,VHXX))))
!call invxx(XXAX)
call zgetrf( mm, nn, XXAX, lda, ipiv, info ) ! LU factoriza
call zgetri( nn, XXAX, lda, ipiv, work, lwork, info ) ! LU inver
XXX=1E+30*XXAX
GTX=MATMUL(GTX,MATMUL(VHXX,MATMUL(XXX,GIX)))
GRX=MATMUL(XXX,GIX)
end do
!******************************************************************************
!************ OQD **********
!******************************************************************************
!HIX=HOQDX
!XIX=1E+30*(EX*MDUXX-HIX+sx*MDUXX*zix)
!call invxx(XIX)
!GIX=1E+30*XIX
!********* CADEIA 1 **********
!HIXX=HICX
!XIXX=1E+30*(EX*MDUXX-HIXX+sx*MDUXX*zix)
!call invxx(XIXX)
!GIICX=1E+30*XIXX
!*****************************
!****************************
cc=0
jxx=MCX+MQPC1X
xxi=0
do imx=MOQDX,1,-1
!###########################################################
!###########################################################
cc=cc+1
HOQDX=HGX
!Y
WBX=NDX
bb=EAX
hh=(WBX+1)/2
aa=(EIX-EAX)/((WBX-hh)*(WBX-hh))
!X
WBXX=MOQDX
bbx=EAX
hhx=(WBXX+1)/2
aax=(EIX-EAX)/((WBXX-hhx)*(WBXX-hhx))
xy=cc-hhx
yyx=0
do iyx=1,WBX
xx=iyx-hh
yy1x=yyx+iyx
if((iyx.GE.43).AND.(iyx.LE.73)) then
!if((iyx.GE.5).AND.(iyx.LE.7)) then
do imxx=1,1
HOQDX((yy1x)+(imxx-1)*NDX,(yy1x)+(imxx-1)*NDX)=(aa/3*xx*xx+EAX)*zrx
!HOQDX((yy1x)+(imxx-1)*NDX,(yy1x)+(imxx-1)*NDX)=(aa/3*xx*xx+EAX+aax/3*xy*xy)*zrx
end do
else
do imxx=1,1
HOQDX((yy1x)+(imxx-1)*NDX,(yy1x)+(imxx-1)*NDX)=(aa/3*xx*xx+EAX+aax/3*xy*xy)*zrx
end do
end if
end do
HIX=HOQDX
XIX=1E+30*(EX*MDUXX-HIX+sx*MDUXX*zix)
!call invxx(XIX)
call zgetrf( mm, nn, XIX, lda, ipiv, info ) ! LU factoriza
call zgetri( nn, XIX, lda, ipiv, work, lwork, info ) ! LU inver
GIX=1E+30*XIX
!************************************************************
!**************** IMPUREZAS CONTROLAVEIS ********************
!************************************************************
!************************************************************
HICX=HOQDX
!###########################################################
!###########################################################
!*******************************************************
!************* IMPUREZAS CONTROLAVEIS ****************
!@@@@@@@@@@@@@@@@@@@ CADEIA DO CENTRO @@@@@@@@@@@@@@@@@@@@
if((imx.GE.(rmx-1+1)).AND.(imx.LE.(rmx-1+13))) then
xxi=xxi+1
NIX=13
do iyx=1,NIX
a1=150.d0
b1=1.5d0
fx1n=(a1*b1+(xxi-7))*(a1*b1+(xxi-7))
fx1d=(xxi-7)*(xxi-7)+b1*b1
fx1=fx1n/fx1d
fy1n=(a1*b1+(iyx-7))*(a1*b1+(iyx-7))
fy1d=(iyx-7)*(iyx-7)+b1*b1
fy1=fy1n/fy1d
impureza1=1.3d0*((fy1*fx1)/2400000000.d0)/(1*15)
HICX((rny-1)+iyx,(rny-1)+iyx)=HOQDX((rny-1)+iyx,(rny-1)+iyx)*zrx+(impureza1)*zrx
!HICX((rny-1)+iyx,(rny-1)+iyx)=HOQDX((rny-1)+iyx,(rny-1)+iyx)*zrx
end do
do iyx=1,NIX
a2=150.d0
b2=0.5d0
fx2n=(a2*b2+(xxi-7))*(a2*b2+(xxi-7))
fx2d=(xxi-7)*(xxi-7)+b2*b2
fx2=fx2n/fx2d
fy2n=(a2*b2+(iyx-7))*(a2*b2+(iyx-7))
fy2d=(iyx-7)*(iyx-7)+b2*b2
fy2=fy2n/fy2d
impureza2=-0.5d0*((fy2*fx2)/2400000000.d0)/10
!HICX((rny-1+(NIX-1))+iyx,(rny-1+(NIX-1))+iyx)=HOQDX((rny-1+(NIX-1))+iyx,(rny-1+(NIX-1))+iyx)*zrx+(impureza2)*zrx
HICX((rny-1+(NIX-1))+iyx,(rny-1+(NIX-1))+iyx)=HOQDX((rny-1+(NIX-1))+iyx,(rny-1+(NIX-1))+iyx)*zrx
end do
HIXX=HICX
XIXX=1E+30*(EX*MDUXX-HIXX+sx*MDUXX*zix)
!call invxx(XIXX)
call zgetrf( mm, nn, XIXX, lda, ipiv, info ) ! LU factoriza
call zgetri( nn, XIXX, lda, ipiv, work, lwork, info ) ! LU inver
GIICX=1E+30*XIXX
!**************************************
HIX=HICX
GIXX=GIICX
else
HIX=HOQDX
GIXX=GIX
end if
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!com impureza trocar GI por GIX (sem impureza GI)
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!*****************************************************
!***************** DISPOSITIVO *******************
jyx=0
jxx=jxx+1
do nxx=1,NDX
jyx=jyx+1
DISPOX(jxx,nxx)=HIX(jyx,jyx)
end do
!*****************************************************
!*****************************************************
XXAX=1E+30*(MDUXX-MATMUL(GIXX,MATMUL(VHXX,MATMUL(GRX,VHXX))))
!call invxx(XXAX)
call zgetrf( mm, nn, XXAX, lda, ipiv, info ) ! LU factoriza
call zgetri( nn, XXAX, lda, ipiv, work, lwork, info ) ! LU inver
XXX=1E+30*XXAX
GTX=MATMUL(GTX,MATMUL(VHXX,MATMUL(XXX,GIXX)))
GRX=MATMUL(XXX,GIXX)
end do
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
!******************************************************************************
!************ QPC2 **********
!******************************************************************************
HIX=HQPC2X
XIX=1E+30*(EX*MDUXX-HIX+sx*MDUXX*zix)
!call invxx(XIX)
!GIX=1E+30*XIX
GIX=QWQPC
jxx=MCX+MQPC1X+MOQDX
do imx=MQPC2X,1,-1
!*****************************************************
!***************** DISPOSITIVO ******************
jyx=0
jxx=jxx+1
do nxx=1,NDX
jyx=jyx+1
DISPOX(jxx,nxx)=HIX(jyx,jyx)
end do
!*****************************************************
!*****************************************************
XXAX=1E+30*(MDUXX-MATMUL(GIX,MATMUL(VHXX,MATMUL(GRX,VHXX))))
!call invxx(XXAX)
call zgetrf( mm, nn, XXAX, lda, ipiv, info ) ! LU factoriza
call zgetri( nn, XXAX, lda, ipiv, work, lwork, info ) ! LU inver
XXX=1E+30*XXAX
GTX=MATMUL(GTX,MATMUL(VHXX,MATMUL(XXX,GIX)))
GRX=MATMUL(XXX,GIX)
end do
!******************************************************************************
!************* CONTATO2 ***************
!******************************************************************************
HIX=HCX
XIX=1E+30*(EX*MDUXX-HIX+sx*MDUXX*zix)
!call invxx(XIX)
!GIX=1E+30*XIX
GIX=QWC
!jxx=MCX+MQPC1X
jxx=MCX+MQPC1X+MOQDX+MQPC2X
do imx=MCX,1,-1
!*****************************************************
!***************** DISPOSITIVO ******************
jyx=0
jxx=jxx+1
do nxx=1,NDX
jyx=jyx+1
DISPOX(jxx,nxx)=HIX(jyx,jyx)
end do
!*****************************************************
!*****************************************************
XXAX=1E+30*(MDUXX-MATMUL(GIX,MATMUL(VHXX,MATMUL(GRX,VHXX))))
!call invxx(XXAX)
call zgetrf( mm, nn, XXAX, lda, ipiv, info ) ! LU factoriza
call zgetri( nn, XXAX, lda, ipiv, work, lwork, info ) ! LU inver
XXX=1E+30*XXAX
GTX=MATMUL(GTX,MATMUL(VHXX,MATMUL(XXX,GIX)))
GRX=MATMUL(XXX,GIX)
end do
!******************************************************************************
XX1AX=1E+30*(MDUXX-MATMUL(CLXX,MATMUL(VHXX,MATMUL(GRX,VHXX))))
!call invxx(XX1AX)
call zgetrf( mm, nn, XX1AX, lda, ipiv, info ) ! LU factoriza
call zgetri( nn, XX1AX, lda, ipiv, work, lwork, info ) ! LU inver
XX1X=1E+30*XX1AX
GTX=MATMUL(GTX,MATMUL(VHXX,MATMUL(XX1X,CLXX)))
GRX=MATMUL(XX1X,CLXX)
!*****************************************************************
!*****************************************************************
!******************* ARQUIVO DO DISPOSITIVO ********************
do mxx=1,NMX
do nxx=1,NDX
if(DISPOX(mxx,nxx).EQ.EAX) then
!! WRITE(130,*)(mxx-1)*azx,(nxx-1)*azx
else
end if
end do
end do
do mxx=1,NMX
do nxx=1,NDX
pz=DISPOX(mxx,nxx)
!! WRITE(131,*)(mxx-1)*azx,(nxx-1)*azx,pz
end do
end do
do nxx=1,NDX
!!WRITE(131,40)DISPOX(2:NMX-1,nxx)
!!40 format(229(F19.8,1X))
end do
!*****************************************************************
!*****************************************************************
!*****************************************************************************
!*****************************************************************************
! PROBABILIDADE DE TRANSMISSAO(TT) E REFLEXAO(RR)
!*****************************************************************************
! C0EFICIENTES DA MATRIZ S: t(u,v), r(u,v)
!*****************************************************************************
GTvx=MATMUL(transpose(UUX),MATMUL(GTX,UUX))
GRvx=MATMUL(transpose(UUX),MATMUL(GRX,UUX))
TTuvx=0.d0
RRuvx=0.d0
TTX=0.d0
DO IKX=1,NDX
! IKX=1
vx=IKX
DO IK1x=1,NDX
! IK1x=1
ux=IK1x
Evx=2.d0*VAX-2.d0*VAX*dcos(pix*vx/(NDX+1))
Eux=2.d0*VAX-2.d0*VAX*dcos(pix*ux/(NDX+1))
if((EX.GE.(0)).AND.(EX.LT.Evx)) then
CF1x=dsin(dacos((EX-Evx)/(2.d0*VAX)+1.d0))
else
CF1X=dsin(dacos((EX-Evx)/(2.d0*VAX)-1.d0))
end if
if((EX.GE.(0)).AND.(EX.LT.Eux)) then
CF2X=dsin(dacos((EX-Eux)/(2.d0*VAX)+1.d0))
else
CF2X=dsin(dacos((EX-Eux)/(2.d0*VAX)-1.d0))
end if
tuvx=2.d0*VAX*dsqrt(DABS(CF2x*CF1x))*zix*(GTvx(ux,vx))
TX=tuvx*dconjg(tuvx)
TTuvx=TTuvx+TX
!if(ux.EQ.vx) then
!ruvx=zix*(2*VAX*CF1x*(GRvx(vx,vx))+zix)
!else
!ruvx=zix*dsqrt(dabs(CF2x/CF1x))*(2*VAX*CF1x*(GRvx(ux,vx)))
!end if
!RX=ruvx*dconjg(ruvx)
!RRuvx=RRuvx+Rx
!TTX=TTuvx+RRuvx
END DO
END DO
!@@@@@@@@@@@@@@@@@@@@@@@
!@@@@@@@@@@@@@@@@@@@@@@@
!write(10,*)EX,TTuvx
!write(10,*)(rmx+6)*azx,TTuvx
!write(120,*)EX,TTX
!@@@@@@@@@@@@@@@@@@@@@@@
!@@@@@@@@@@@@@@@@@@@@@@@
!TMINI=0.d0
!YMINI=1.d0
!EMINI=0.d0
!TMAX=0.d0
!YMAX=1.d0
!EMAX=0.d0
!!!!TMINI(ixx)=TTuvx
TMAX(ixx)=TTuvx
!!!!EMINI(ixx)=EX
EMAX(ixx)=EX
!!!!YMINI=MIN(YMINI,TMINI(ixx))
YMAX=MAX(YMAX,TMAX(ixx))
!@@@@@@@@@@@@@@@@@@@@@@@
!@@@@@@@@@@@@@@@@@@@@@@@
!!!!write(10,*)EMINI(ixx),TMINI(ixx)
write(10,*)EMAX(ixx),TMAX(ixx)
!!!!IF((TMINI(ixx)).EQ.(YMINI)) THEN
IF((TMAX(ixx)).EQ.(YMAX)) THEN
!!!!EEXX=EMINI(ixx)
EEXX=EMAX(ixx)
ELSE
END IF
end do
!@@@@@@@@@@@@@@@@@@@@@@@
!@@@@@@@@@@@@@@@@@@@@@@@
ixxm1=1.d0
ixxn1=1.d0
!ixxm1=ixxm+(NIX-1)/2+1
!ixxn1=ixxn+(NIX-1)/2+1
MFO(ixxm,ixxn)=EEXX
!do ixx=0,1
!write(7,*)EMINI(ixx),TMINI(ixx)
!IF((TMINI(AX)).EQ.(YMINI)) THEN
!MFO(ixxn,ixxm)=EMINI(AX)
!ELSE
!END IF
!end do
!@@@@@@@@@@@@@@@@@@@@@@@
!@@@@@@@@@@@@@@@@@@@@@@@
!write(7,*)(rmx+6)*azx,EEXX
end do
end do
!@@@@@@@@@@@@@@@@@@@@@@@
!@@@@@@@@@@@@@@@@@@@@@@@
do j=1,16
WRITE(7,10)MFO(j,1:16)
10 FORMAT(16(F14.10,1X))
end do
end
!*****************************************************************************
!******************* SUBROTINA DE INVERSAO *************************
!*****************************************************************************
! subrotina de inversao de matrizes nxn
! dimension (col-inicial:col-final,fila-inicial:fila-final)::array
! dimension ik(tamanho columna),jk(tamanho fila)
subroutine invxx(array)
PARAMETER (ND1x=115)
complex*16, dimension (1:ND1x,1:ND1x)::array
complex*16 amaxx,savex
dimension ikx(ND1x),jkx(ND1x)
ndx=ND1x
11 do 100 kx=1,ndx
amaxx=(0.d0,0.d0)
21 do 30 ix=1,ndx
do 30 jx=1,ndx
23 if(cdabs(amaxx)-cdabs(array(ix,jx))) 24,24,30
24 amaxx=array(ix,jx)
ikx(kx)=ix
jkx(kx)=jx
30 continue
41 ix=ikx(kx)
if(ix-kx) 21,51,43
43 do 50 jx=1,ndx
savex=array(kx,jx)
array(kx,jx)=array(ix,jx)
50 array(ix,jx)=-savex
51 jx=jkx(kx)
if(jx-kx) 21,61,53
53 do 60 ix=1,ndx
savex=array(ix,kx)
array(ix,kx)=array(ix,jx)
60 array(ix,jx)=-savex
61 do 70 ix=1,ndx
if(ix-kx) 63,70,63
63 array(ix,kx)=-array(ix,kx)/amaxx
70 continue
71 do 80 ix=1,ndx
do 80 jx=1,ndx
if(ix-kx) 74,80,74
74 if(jx-kx) 75,80,75
75 array(ix,jx)=array(ix,jx)+array(ix,kx)*array(kx,jx)
80 continue
81 do 90 jx=1,ndx
if(jx-kx) 83,90,83
83 array(kx,jx)=array(kx,jx)/amaxx
90 continue
array(kx,kx)=1.d0/amaxx
100 continue
101 do 130 lx=1,ndx
kx=ndx-lx+1
jx=ikx(kx)
if(jx-kx) 111,111,105
105 do 110 ix=1,ndx
savex=array(ix,kx)
array(ix,kx)=-array(ix,jx)
110 array(ix,jx)=savex
111 ix=jkx(kx)
if(ix-kx) 130,130,113
113 do 120 jx=1,ndx
savex=array(kx,jx)
array(kx,jx)=-array(ix,jx)
120 array(ix,jx)=savex
130 continue
140 return
end

