±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 1785  |  »Ø¸´: 5

ryan111a

гæ (³õÈëÎÄ̳)

[ÇóÖú] ¹ØÓÚÓ¦ÓÃfortran±àд¸ß˹ÏûÈ¥·¨³ÌÐòÀ´Çó½â·½³Ì×éµÄÎÊÌâ

¹ØÓÚÓ¦ÓÃfortran±àд¸ß˹ÏûÈ¥·¨³ÌÐòÀ´Çó½â·½³Ì×éµÄÎÊÌâ¡£ Ó¦Óøß˹ÏûÈ¥·¨À´Çó½â·½³Ì×éµÄfortran±à³Ì£¬ÎÒ×Ô¼º¿ÉÒÔ±àд£¬µ«Èç¹û·½³ÌµÄϵÊý¾ØÕ󲻱㣬¶øÓÒ±ßµÄ½â¾ØÕó·¢ÉúÁËͬÑùµÄ±ä»¯£¬ÔõÑù²ÅÄÜͨ¹ýÑ­»·£¬À´ÇóÕâ¸ö·½³Ì×éµÄËùÓн⡣
      ÎÒµ±Ê±ÔÚ¸ß˹ÏûÈ¥·¨ÉϼÓÁ˸öÑ­»·£¬µ«ÊÇÔڱ任ÓÒ±ß½â¾ØÕóʱ£¬³öÏÖÁËÈçÏ´íÎó£¬Ôõô½â¾ö£¿
      E:\machao reactor\assitance\restart\one.f90(399) : Error: A constant or named constant is required in this context.   [IM]
          ImCmplx(Row,j)=(Im(j),0)
      Im(j)ÎÒÏë±í´ïµÄÒâ˼ÊÇÿ´ÎÑ­»·¶ÔÓ¦µÄµÄÓÒ±ßµÄ½â¾ØÕó¡£jÊǸß˹ÏûÈ¥·¨Ñ­»·µÄ´ÎÊý¡£
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

live as if you will die today
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

pippi6

Ìú¸Ëľ³æ (ÖøÃûдÊÖ)

¹¤³ÌºÍ¿ÆÑ§ÊýÖµ¼ÆËã×Éѯ

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

¡ï ¡ï ¡ï ¡ï ¡ï
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
nono2009: ±à¼­ÄÚÈÝ 2013-06-05 22:01
ryan111a: ½ð±Ò+5, ¡ï¡ï¡ïºÜÓаïÖú 2013-06-06 08:59:59
¸øÄã¸ö³ÌÐò
CODE:
! How to use
!  real*8 :: c(n_dim,n_dim),e(n_dim,n_dim)
!  integer :: n=4
!     n           size of the matrix to be inversed
!     n_dim       array size
!     e           unit matrix
!     c           matrix to be inversed
!     call gaussr_inverse(c,n,n_dim,e,n,n_dim)

!flag
subroutine gaussr_inverse(a,n,np,b,m,mp)
  !     Commented, reorganized and understood by xxxx, 1999-11-03
  !     1.   very good designed scheme.
  !          seems No room for performance improve
  !     2.   row normalization (implicite pivoting) has not much  effect
  !           for full pivoting procedure

  !     991112  ASY/FJT, xxxx
  !     Test again. even important for full pivoting procedure

  !     3.   row normalization (implicite pivoting) has significant
  !           accuracy enhancement on partial pivoting procedure
  !              7.e-5 -> 2.e-11

  !     000623  ASY/FJT, xxx
  !     Real version


  implicit none
  integer :: n,np,m,mp,i,j,k,irow,icol,l
  real*8 a(np,np),b(np,mp),pivinv,cc
  real*8, allocatable, dimension(:) :: dum
  real*8 big
  integer, allocatable, dimension(:) :: ipiv,indxr,indxc
  real*8, allocatable, dimension(:) :: c1

  allocate(ipiv(1:n),indxr(1:n),indxc(1:n),dum(1:max(n,m)),c1(1:n))
  ipiv=0

  !     row normalization (implicite pivoting)
  do i=1,n
     c1(i)=1/sqrt(sum(abs(a(i,1:n))**2))
     a(i,1:n)=a(i,1:n)*c1(i)
     b(i,1:m)=b(i,1:m)*c1(i)
  end do

  do i=1,n

     !     Full pivoting, however, not necessarily starting from 1st col
     big=0.d0
     do j=1,n
        if(ipiv(j)==1)cycle
        do k=1,n
           if (ipiv(k)==1) cycle
           if (abs(a(j,k)) <= big) cycle
           big=abs(a(j,k))
           irow=j
           icol=k
        end do
     end do

     !     ipiv(icol)=1 means the column icol has been selected once
     ipiv(icol)=ipiv(icol)+1
     if (irow.ne.icol) then

        !     exchange a(irow,:) with a(icol,:)
        !     so a(irow,irow) is the selected pivot
        dum(1:n)= a(irow,1:n)  
        a(irow,1:n)= a(icol,1:n)  
        a(icol,1:n)=dum(1:n)

        dum(1:m)= b(irow,1:m)  
        b(irow,1:m)= b(icol,1:m)  
        b(icol,1:m)=dum(1:m)
     endif

     !     bookkeeping row- and column-indices
     indxr(i)=irow
     indxc(i)=icol
     if (abs(a(icol,icol))==0.d0) pause 'singular matrix.'
     pivinv=1.d0/a(icol,icol)
     a(icol,icol)=1.d0
     a(icol,1:n)=a(icol,1:n)*pivinv
     b(icol,1:m)=b(icol,1:m)*pivinv

     do l=1,n
        if(l==icol)cycle  ! only for row l not equal to icol
        cc=a(l,icol)
        a(l,icol)=0.d0    ! clever design
        a(l,1:n)=a(l,1:n)-a(icol,1:n)*cc
        b(l,1:m)=b(l,1:m)-b(icol,1:m)*cc
     end do
  end do

  do l=1,n
     if(indxr(l) == indxc(l)) cycle
     dum(1:n)=a(1:n,indxr(l))
     a(1:n,indxr(l))=a(1:n,indxc(l))
     a(1:n,indxc(l))=dum(1:n)
  end do

  do i=1,n
     a(1:n,i)=a(1:n,i)*c1(i)
  end do

  deallocate(ipiv,indxr,indxc,dum,c1)
end subroutine gaussr_inverse

[ Last edited by nono2009 on 2013-6-5 at 22:01 ]
2Â¥2013-06-05 15:54:26
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

ryan111a

гæ (³õÈëÎÄ̳)

ÒýÓûØÌû:
2Â¥: Originally posted by pippi6 at 2013-06-05 15:54:26
¸øÄã¸ö³ÌÐò

! How to use
!  real*8 :: c(n_dim,n_dim),e(n_dim,n_dim)
!  integer :: n=4
!     n           size of the matrix to be inversed
!     n_dim       array size
!     e           unit ma ...

Ê®·Ö¸ÐлÄúµÄ»Ø´ð£¬ÏàÐÅÓÃÄúµÄ³ÌÐò¿Ï¶¨¿ÉÒÔʵÏִ˹¦ÄÜ£¬ÒòΪÎÒÖ»ÊÇ×¢ÖØfortran³ÌÐòʵÏÖÎҵŦÄÜ£¬²»ÖªÄúÊÇ·ñÓÐʱ¼ä£¬°ïæÐÞ¸ÄÏÂÎÒµÄÕâ¿é³ÌÐò¡£
      
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SUBROUTINE ICGaussA(ICmplx,NumT,NumI,MInd,R,Im)        !¸´ÊýµÄ¸ß˹ÏûÈ¥·¨(ÓÃÀ´Çó°ü·âµçÁ÷»ò²ãµçÁ÷)       
        IMPLICIT NONE

        INTEGER        NumT,NumI        !×ܰü·âÊý»ò²ãÊý
        COMPLEX        ICmplx(NumT,NumI) !¸´ÊýµçÁ÷Öµ£¬´ýÊä³öÁ¿
        REAL        MInd(NumT,NumT)        !°ü·â»ò²ãµÄ»¥¸Ð¾ØÕó
        REAL        R(NumT)        !°ü·â»ò²ãµÄµç×èÏòÁ¿
        REAL    Im(NumI)

        COMPLEX        MZ[ALLOCATABLE](:, !µçѹ×迹¾ØÕó
        COMPLEX        TZ[ALLOCATABLE](:, !µçÁ÷×迹¾ØÕó
        COMPLEX        ImCmplx[ALLOCATABLE](:, !ÓҶ˸´ÊýµçÁ÷ÏòÁ¿

        COMPLEX        Temp,Sum !Öмä±äÁ¿
        INTEGER        Row,Col,Num !ÐкźÍÁкÅ
        INTEGER        ME !Ö÷Ôª
        INTEGER i
        INTEGER j

        REAL,PARAMETER:mga=314.159
        REAL,PARAMETER::pai=3.14159

        ALLOCATE(TZ(NumT,NumT))
        ALLOCATE(MZ(NumT,NumT))
        ALLOCATE(ImCmplx(NumT,NumT))
    DO j=1,NumI   
            DO        Row=1,NumT
                      DO Col=1,NumT
                                 IF(Row==Col) THEN
                                           MZ(Row,Col)=CMPLX(R(Row),omga*MInd(Row,Col))
                              ELSE
                                      MZ(Row,Col)=CMPLX(0,omga*MInd(Row,Col))
                              END IF
                      END DO
            END DO

            DO Row=1,NumT
              IF(Row==NumT) THEN
                          DO Col=1,NumT
                              TZ(Row,Col)=CMPLX(1,0)
                          END DO
              ELSE
                  DO Col=1,NumT
                      TZ(Row,Col)=MZ(Row,Col)-MZ(Row+1,Col)
                  END DO
                  END IF
        END DO
            DO Row=1,NumT
                IF(Row==NumT) THEN
                        ImCmplx(Row,j)=(Im(j),0)
                    ELSE
                        ImCmplx(Row,j)=(0,0)
                    END IF
            END DO            
            DO Row=1,NumT
                    ME=Row
                    DO i=Row+1,NumT
                            IF(ABS(TZ(i,Row))>ABS(TZ(ME,Row))) THEN
                                   ME=i
                            END IF
                    END DO
                    DO i=1,NumT
                            Temp=TZ(ME,i)
                            TZ(ME,i)=TZ(Row,i)
                            TZ(Row,i)=Temp
                    END DO
                    Temp=ImCmplx(Row,i)
                    ImCmplx(Row,i)=ImCmplx(ME,i)
                    ImCmplx(ME,i)=Temp
                    DO Col=Row+1,NumT
                            TZ(Col,Row)=TZ(Col,Row)/TZ(Row,Row)
                            DO i=Row+1,NumT
                                TZ(Col,i)=TZ(Col,i)-TZ(Col,Row)*TZ(Row,i)
                            END DO
                            ImCmplx(Col,j)=ImCmplx(Col,j)-TZ(Col,Row)*ImCmplx(Row,j)
                    END DO
            END DO
            ICmplx(NumT,j)=ImCmplx(NumT,j)/TZ(NumT,NumT)
            DO Row=NumT-1,1,-1
                     Sum=ImCmplx(Row,j)
                     DO Num=Row+1,NumT
                             Sum=Sum-TZ(Row,i)*ImCmplx(i,Num)
                     END DO
                     ICmplx(Row,j)=Sum/TZ(Row,Row)
            END DO
        END DO       
        DEALLOCATE(MZ)
        DEALLOCATE(TZ)
        DEALLOCATE(ImCmplx)
        RETURN
END SUBROUTINE
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
live as if you will die today
3Â¥2013-06-06 08:59:26
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

pippi6

Ìú¸Ëľ³æ (ÖøÃûдÊÖ)

¹¤³ÌºÍ¿ÆÑ§ÊýÖµ¼ÆËã×Éѯ

ÄãÕâÁ½¾äÊÇÏë¸Éʲô£¿
                       ImCmplx(Row,j)=(Im(j),0)
                         ImCmplx(Row,j)=(0,0)
Èç¹ûÊÇÏë±íʾһ¸ö¸´ÊýÓÉʵ²¿ºÍÐ鲿¹¹³É£¬Ó¦Õâôд
                      ImCmplx(Row,j)=cmplx(Im(j),0)
                         ImCmplx(Row,j)=cmplx(0,0)
anyway£¬ (0,0) ÕâÑùµÄд·¨ÔÚfortranÀïûÓÐÒâÒå
4Â¥2013-06-06 17:00:51
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

pippi6

Ìú¸Ëľ³æ (ÖøÃûдÊÖ)

¹¤³ÌºÍ¿ÆÑ§ÊýÖµ¼ÆËã×Éѯ

ÒýÓûØÌû:
4Â¥: Originally posted by pippi6 at 2013-06-06 17:00:51
ÄãÕâÁ½¾äÊÇÏë¸Éʲô£¿
                       ImCmplx(Row,j)=(Im(j),0)
                         ImCmplx(Row,j)=(0,0)
Èç¹ûÊÇÏë±íʾһ¸ö¸´ÊýÓÉʵ²¿ºÍÐ鲿¹¹³É£¬Ó¦Õâôд
                      ImCmplx(Row ...

sorry£¬ £¨0,0£© ok£¬ µ«  (Im(j),0) ²»ÐÐ
5Â¥2013-06-06 17:02:08
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

ryan111a

гæ (³õÈëÎÄ̳)

ÒýÓûØÌû:
4Â¥: Originally posted by pippi6 at 2013-06-06 17:00:51
ÄãÕâÁ½¾äÊÇÏë¸Éʲô£¿
                       ImCmplx(Row,j)=(Im(j),0)
                         ImCmplx(Row,j)=(0,0)
Èç¹ûÊÇÏë±íʾһ¸ö¸´ÊýÓÉʵ²¿ºÍÐ鲿¹¹³É£¬Ó¦Õâôд
                      ImCmplx(Row ...

лл
live as if you will die today
6Â¥2013-06-11 14:58:51
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ ryan111a µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 085600£¬321·ÖÇóµ÷¼Á +12 ´ó²öС×Ó 2026-04-04 13/650 2026-04-06 10:29 by dongzh2009
[¿¼ÑÐ] Çóµ÷¼Á +5 chenxrlkx 2026-04-05 7/350 2026-04-06 07:54 by houyaoxu
[¿¼ÑÐ] 285Çóµ÷¼Á +4 ¶ñ·¨´ó¶þµÄÆøÎ¶ß 2026-04-05 5/250 2026-04-05 20:32 by 286640313
[¿¼ÑÐ] 085500»úеר˶³õÊÔ288Çóµ÷¼Á +3 GZJguo666- 2026-04-05 3/150 2026-04-05 18:06 by jkddd
[¿¼ÑÐ] 283·ÖÇóµ÷¼Á +7 СÄô°®Ñ§Ï° 2026-04-03 7/350 2026-04-04 21:51 by hemengdong
[¿¼ÑÐ] µ÷¼Á +9 19945159693 2026-04-03 10/500 2026-04-04 20:16 by dongzh2009
[¿¼ÑÐ] ÔõôɾÌû×Ó°¡ +3 ·ìêØ1000 2026-04-04 3/150 2026-04-04 14:20 by ÍÁľ˶ʿÕÐÉú
[¿¼ÑÐ] 387Çóµ÷¼Á +4 °®³ÔƬ¶¹ÍÁ 2026-04-03 5/250 2026-04-04 08:10 by °¶ÉϵÄÒ»ÌõÓã
[¿¼ÑÐ] 322Çóµ÷¼Á +6 FZAC123 2026-04-03 6/300 2026-04-03 22:23 by ¿ÆÑÐСר¼Ò
[¿¼ÑÐ] ±¾¿Æ985£¬×¨Òµ0812·Ö336Çóµ÷¼Á +4 ĪĪºÜÐÐ 2026-04-03 4/200 2026-04-03 21:31 by zhq0425
[¿¼ÑÐ] 294Çóµ÷¼Á +6 Grey_Ey 2026-04-03 6/300 2026-04-03 20:46 by ÐÀϲ777
[¿¼ÑÐ] »úеר˶297 +3 Afksy 2026-04-03 3/150 2026-04-03 14:24 by 1753564080
[¿¼ÑÐ] 321Çóµ÷¼Á +17 y-yh 2026-04-01 20/1000 2026-04-03 12:57 by y-yh
[¿¼ÑÐ] 320Çóµ÷¼Á +3 ũҵ¹¤³ÌÓëÐÅÏ¢¼ 2026-04-03 3/150 2026-04-03 11:40 by ÍÁľ˶ʿÕÐÉú
[»ù½ðÉêÇë] ÇëÎʹ²Í¬Í¨Ñ¶ºÍ¹²Í¬Ò»×÷µÄÈϿɶÈÎÊÌâ 10+4 psa1234 2026-04-01 10/500 2026-04-03 11:08 by Kittylucky
[¿¼ÑÐ] 07ÉúÎïѧÇóµ÷¼Á һ־Ըͬ¼Ã´óѧ359·Ö +3 LAMC. 2026-03-30 3/150 2026-04-02 10:26 by 18828373951
[¿¼ÑÐ] 0710ÉúÎïѧÇóµ÷¼Á +9 manman511 2026-04-01 9/450 2026-04-02 10:00 by zxl830724
[¿¼ÑÐ] ¿¼Ñе÷¼Á +12 Amber00 2026-03-31 12/600 2026-04-02 09:04 by sanrepian
[¿¼ÑÐ] 310·ÖÇóµ÷¼Á +4 ³É¹¦Éϰ¶wang 2026-04-01 4/200 2026-04-01 20:35 by liu823948201
[¿¼ÑÐ] Çóµ÷¼Á +8 11ggg 2026-03-30 8/400 2026-03-31 13:56 by nanaliuyun
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û