| ²é¿´: 420 | »Ø¸´: 1 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
| ¡¾Óн±½»Á÷¡¿»ý¼«»Ø¸´±¾Ìû×Ó£¬²ÎÓë½»Á÷£¬¾ÍÓлú»á·ÖµÃ×÷Õß futurehero µÄ 100 ¸ö½ð±Ò | |||
futureheroгæ (ÕýʽдÊÖ)
|
[½»Á÷]
¡¾ÇóÖú¡¿³ÏÇóÖú²¢ÐмÆËãÖеÄÒ»¸öÎÊÌ⣬лл´ó¼Ò£¡
|
||
|
Õâ¸ö³ÌÐò´óÖÂÈçÏ£¬ÎÒÏëÓò¢ÐмÆËã½â¾ö¡°doÑ»·Öаüº¬»ý·Ö¡±µÄ¼ÆËãÎÊÌâ¡£Èç¹û½«²¢ÐеÄÏß³ÌÉèΪ1£¬ÔòºÍ´®ÐмÆËãµÄ½á¹ûÒ»Ö±£¬µ«ÊÇÏ̴߳óÓÚ1ʱ£¬¼ÆËãµÄ½á¹û¾Í²»ÕýÈ·ÁË¡£Ð¡µÜ¸Õ¸Õ½Ó´¥²¢ÐмÆËãÁ½Ì죬×öÁ˺ܶàÖÖ·½°¸¶¼·¢ÏÖÏ̴߳óÓÚ1ʱ¼ÆËãµÄ½á¹û¶¼²»¶Ô£¬ÇëÖîλ´óÏÀ°ïÖú£¬ÎÒÏëµÃµ½ÕùÈ¡µÄ²¢ÐмÆËã½á¹û¡£Èç¹û½«³ÌÐòÖеÄcall omp_set_num_threads(4 )Ï̸߳ÄΪcall omp_set_num_threads(1 )¾ÍºÍ´®Ðнá¹ûÊÇÒ»Öµġ£(¿ÉÄÜÄúÖ»ÐèÒª¿´Ò»Ï²¢ÐÐÇø¾Í¿ÉÒÔ·¢ÏÖÎÊÌâËùÔÚÁË) ³ÌÐòÈçÏ£º program main implicit none integer:: Num, i, p, j, k ,var, r ,Y real(kind=8):: D, epsl21, epsl22, T, eta, Gama, GamaL, GamaR, epsl0, VL, VR parameter(D=1.0_8, Num=10001, Gama=0.01_8, GamaL=0.005_8, GamaR=0.005_8, epsl0=-0.1_8, VL=0.0_8, VR= 0.0_8) real(kind=8):: pi, Dc, Hc, fL(Num), fR(Num), f0(Num), epsl(Num), epsl11, epsl12, dIdV(Num) complex(kind=8):: sigma0, FG11(Num), FG12(Num), FG21(Num), FG22(Num) complex(kind=8):: G011(Num), G012(Num), G021(Num), G022(Num), G11(Num), G12(Num), G21(Num), G22(Num) complex(kind=8):: DDOS(Num), DOS, D11, D12, D21, D22 complex(kind=8):: n11, n12, n21, n22 complex(kind=8):: delta1211(Num), delta2111(Num), delta2211(Num) complex(kind=8):: delta1112(Num), delta2112(Num), delta2212(Num) complex(kind=8):: delta1121(Num), delta1221(Num), delta2221(Num) complex(kind=8):: delta1122(Num), delta1222(Num), delta2122(Num) complex(kind=8):: FZB11(Num), FZB12(Num), FZB21(Num), FZB22(Num) complex(kind=8):: B1211(Num), B2111(Num), B2211(Num) complex(kind=8):: FB1211(Num), FB2111(Num), FB2211(Num) complex(kind=8):: B1112(Num), B2112(Num), B2212(Num) complex(kind=8):: FB1112(Num), FB2112(Num), FB2212(Num) complex(kind=8):: B1121(Num), B1221(Num), B2221(Num) complex(kind=8):: FB1121(Num), FB1221(Num), FB2221(Num) complex(kind=8):: B1222(Num), B2122(Num), B1122(Num) complex(kind=8):: FB1222(Num), FB2122(Num), FB1122(Num) real(kind=8):: m, Field, SOC, Tk Dc=2*D / (Num-1) eta =2.0*Dc pi=4.0_8*datan(1.0_8) m=0.00_8 T=0.0_8 SOC=0.00000_8 Field=0.00000_8 epsl11=epsl0 - SOC/2.0_8 - m*Field - Field epsl12=epsl0 + SOC/2.0_8 + m*Field - Field epsl21=epsl0 + SOC/2.0_8 - m*Field + Field epsl22=epsl0 - SOC/2.0_8 + m*Field + Field do i=1, Num, 1 epsl(i)=-D + (i-1) *Dc end do do i=1, Num, 1 if( epsl(i) < VL ) fL(i)=1.0_8 if( epsl(i) > VL ) fL(i)=0.0_8 if( dabs(epsl(i)-VL) < 0.01_8*Dc ) fL(i)=0.5_8 if( epsl(i) < VR ) fR(i)=1.0_8 if( epsl(i) > VR ) fR(i)=0.0_8 if( dabs(epsl(i)-VR) < 0.01_8*Dc ) fR(i)=0.5_8 end do f0=( fL*GamaL + fR*GamaR ) /Gama delta1211=dcmplx( epsl12 - epsl11, eta ) - epsl delta2111=dcmplx( epsl21 - epsl11, eta ) - epsl delta2211=dcmplx( epsl22 - epsl11, eta ) - epsl delta1112=dcmplx( epsl11 - epsl12, eta ) - epsl delta2112=dcmplx( epsl21 - epsl12, eta ) - epsl delta2212=dcmplx( epsl22 - epsl12, eta ) - epsl delta1121=dcmplx( epsl11 - epsl21, eta ) - epsl delta1221=dcmplx( epsl12 - epsl21, eta ) - epsl delta2221=dcmplx( epsl22 - epsl21, eta ) - epsl delta1122=dcmplx( epsl11 - epsl22, eta ) - epsl delta1222=dcmplx( epsl12 - epsl22, eta ) - epsl delta2122=dcmplx( epsl21 - epsl22, eta ) - epsl !================================ sigma0=dcmplx(0.0_8, -Gama) G011 =epsl-epsl11-sigma0 G012 =epsl-epsl12-sigma0 G021 =epsl-epsl21-sigma0 G022 =epsl-epsl22-sigma0 !******************************************** call omp_set_num_threads(4 ) !$OMP parallel !$OMP do private (Y) do Y=1, Num, 1 FB1211=f0/( epsl(Y) + delta1211 ) FB2111=f0/( epsl(Y) + delta2111 ) FB2211=f0/( epsl(Y) + delta2211 ) FB1112=f0/( epsl(Y) + delta1112 ) FB2112=f0/( epsl(Y) + delta2112 ) FB2212=f0/( epsl(Y) + delta2212 ) FB1121=f0/( epsl(Y) + delta1121 ) FB1221=f0/( epsl(Y) + delta1221 ) FB2221=f0/( epsl(Y) + delta2221 ) FB1122=f0/( epsl(Y) + delta1122 ) FB1222=f0/( epsl(Y) + delta1222 ) FB2122=f0/( epsl(Y) + delta2122 ) call INTEGRAL(Num, Dc, FB1211, B1211(Y)) call INTEGRAL(Num, Dc, FB2111, B2111(Y)) call INTEGRAL(Num, Dc, FB2211, B2211(Y)) call INTEGRAL(Num, Dc, FB1112, B1112(Y)) call INTEGRAL(Num, Dc, FB2112, B2112(Y)) call INTEGRAL(Num, Dc, FB2212, B2212(Y)) call INTEGRAL(Num, Dc, FB1121, B1121(Y)) call INTEGRAL(Num, Dc, FB1221, B1221(Y)) call INTEGRAL(Num, Dc, FB2221, B2221(Y)) call INTEGRAL(Num, Dc, FB1122, B1122(Y)) call INTEGRAL(Num, Dc, FB1222, B1222(Y)) call INTEGRAL(Num, Dc, FB2122, B2122(Y)) end do !$OMP end do !$OMP end parallel !****************************************** B1211=B1211*Gama/pi B2111=B2111*Gama/pi B2211=B2211*Gama/pi B1112=B1112*Gama/pi B2112=B2112*Gama/pi B2212=B2212*Gama/pi B1121=B1121*Gama/pi B1221=B1221*Gama/pi B2221=B2221*Gama/pi B1122=B1122*Gama/pi B1222=B1222*Gama/pi B2122=B2122*Gama/pi G11= ( 1.0_8 - 3.0_8*0.245_8 )/( G011 - B1211-B2111-B2211 ) G12= ( 1.0_8 - 3.0_8*0.245_8 )/( G012 - B1112-B2112-B2212 ) G21= ( 1.0_8 - 3.0_8*0.245_8 )/( G021 - B1121-B1221-B2221 ) G22= ( 1.0_8 - 3.0_8*0.245_8 )/( G022 - B1122-B1222-B2122 ) FG11=-f0*G11/pi FG12=-f0*G12/pi FG21=-f0*G21/pi FG22=-f0*G22/pi call INTEGRAL(Num, Dc, FG11, n11) call INTEGRAL(Num, Dc, FG12, n12) call INTEGRAL(Num, Dc, FG21, n21) call INTEGRAL(Num, Dc, FG22, n22) write(*,*) "n11=", dimag(n11), "n12=", dimag(n12) write(*,*) "n21=", dimag(n21), "n22=", dimag(n22) stop end program main subroutine INTEGRAL(Num, Dc, Y, answer) implicit none integer:: Num real(kind=8):: Dc complex(kind=8):: Y(Num), answer integer:: i complex:: s1 s1=(Y(1)+ Y(Num))/2 do i=2, Num-1, 1 s1=s1+ Y(i) end do answer=s1*Dc return end subroutine INTEGRAL stop end program main [ Last edited by futurehero on 2010-3-4 at 23:09 ] |
» ²ÂÄãϲ»¶
323Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
Ò»Ö¾Ô¸»ªÖÐũҵ071010£¬×Ü·Ö320Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
317Çóµ÷¼Á
ÒѾÓÐ16È˻ظ´
287Çóµ÷¼Á
ÒѾÓÐ9È˻ظ´
Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
308Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´
08¹¤¿Æ 320×Ü·Ö Çóµ÷¼Á
ÒѾÓÐ10È˻ظ´
»·¾³Ñ§Ë¶288Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
293Çóµ÷¼Á
ÒѾÓÐ17È˻ظ´
ÉúÎïѧ071000 329·ÖÇóµ÷¼Á
ÒѾÓÐ5È˻ظ´
futurehero
гæ (ÕýʽдÊÖ)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 22
- É¢½ð: 464
- ºì»¨: 1
- Ìû×Ó: 350
- ÔÚÏß: 47.7Сʱ
- ³æºÅ: 250574
- ×¢²á: 2006-05-13
- ÐÔ±ð: GG
- רҵ: Äý¾Û̬ÎïÐÔ II £ºµç×ӽṹ
2Â¥2010-03-20 16:08:46













»Ø¸´´ËÂ¥
10