          
       9   S                                                                            I2                         0 <B                                                                                                                                                    4 K@                          rad_module.f90     h K                       A  !================================================================      L K                       &  ! 켡ήʿ絤׻; ͷ׻     ( K                         !      8 KT                         ! 97/02/23     @ K                         ! 97/03/12 ;       8 K                         ! 97/03/17     8 K                         ! 97/05/08     8 K<                         ! 97/06/04     h K       	                A  !================================================================      8 K       
 U                MODULE rad_module      4 K        a                USE para_module    4 KD        O                IMPLICIT NONE      h K        ]  B            B  PUBLIC :: get_bbf,get_urf,get_drf,rdeqiv,get_fnet,get_cvf,fnetmaxl     $ K                             0 K         A             	  	CONTAINS      h Kh                       A  !----------------------------------------------------------------      \ K        `              5  SUBROUTINE get_bbf( temp, bf )	! «̩٤η׻      $ K                             P K8        ^ %            ,  	REAL,DIMENSION(:),INTENT(in)	:: temp	!    \ K        ^ $            5  	REAL,DIMENSION(:),INTENT(out)	:: bf	! «̩      $ K                             8 K                       	bf = sig*temp**4      $ K                             < KP                        END SUBROUTINE get_bbf     h K                       A  !----------------------------------------------------------------      P K        N  !            +  FUNCTION TF(tau1,tau2,tau3,dtau)	! Ʃؿ    $ K,                             4 K`        ^               	REAL				:: TF     P K        ^ (            )  	REAL,INTENT(in)			:: tau1,tau2,tau3,dtau      $ K                             @ K                       	IF ( dtau >= Cdtau ) THEN     $ K8                              P K       !  &            +  	   TF = ( EXP( -ABS( tau1 - tau3 )*3/2 ) &    X K       "  1            1  		- EXP( -ABS( tau1 - tau2 )*3/2 ) )/dtau*(2./3.)      , K       # 
               	ELSE      P K\       $  &            +  	   TF = ( EXP( -ABS( tau1 - tau2 )*3/2 ) &    L K       %  '            '  		+ EXP( -ABS( tau1 - tau3 )*3/2 ) )/2.    , K       &                	END IF    $ K       '                      4 K,       (                 END FUNCTION TF    h K       )                A  !----------------------------------------------------------------      h K       * `  #            A  SUBROUTINE get_urf( tau, temp, Fu)	! ؤξ«̩٤η׻      $ K        +                      X Kx       , ^ %            2  	REAL,DIMENSION(0:),INTENT(in)	:: tau	! Ū     T K       - ^ &            -  	REAL,DIMENSION(0:),INTENT(in)	:: temp	!       \ K(       . ^ $            7  	REAL,DIMENSION(:),INTENT(out)	:: Fu	! «̩    \ K       / ^ $            5  	REAL,DIMENSION(:),ALLOCATABLE	:: bf	! «̩      8 K       0 ^               	REAL 				:: dbdtau    H K       1 ^             !  	REAL				:: dtau	! Ū      < K@       2 Q               	INTEGER 			:: i,j,nnl     $ Kd       3                      8 K       4                	nnl = SIZE(tau)-2     $ K       5                      < K       6                	ALLOCATE( bf(0:nnl+1) )   @ K<       7                	CALL get_bbf( temp, bf )      $ K`       8                      0 K       9                	Fu = bf(1:)   $ K       :                      4 K       ;                	DO i = 2,nnl      4 K       <  
              	   DO j = 2,i     D K`       =                	      dbdtau = bf(j-1) - bf(j)    H K0       >              !  	      dtau   = tau(j-1) - tau(j)        h K0t       ?  =            D  	      Fu(i) = Fu(i) + dbdtau * TF( tau(i), tau(j-1), tau(j), dtau )   0 K0       @              
  	   END DO     , K0       A                	END DO    $ K0       B                      4 K1(       C                	DEALLOCATE(bf)    $ K1L       D                      < K1       E                 END SUBROUTINE get_urf     h K1       F                A  !----------------------------------------------------------------      d K2T       G `               >  SUBROUTINE get_drf(tau,temp,Fd)	! ؤβ«̩٤η׻     $ K2x       H                      X K2       I ^ %            2  	REAL,DIMENSION(0:),INTENT(in)	:: tau	! Ū     T K3$       J ^ &            -  	REAL,DIMENSION(0:),INTENT(in)	:: temp	!       \ K3       K ^ $            7  	REAL,DIMENSION(:),INTENT(out)	:: Fd	! «̩    $ K3       L                      \ K4        M ^ $            5  	REAL,DIMENSION(:),ALLOCATABLE	:: bf	! «̩      8 K48       N ^               	REAL 				:: dbdtau    H K4       O ^             !  	REAL				:: dtau	! Ū      < K4       P Q               	INTEGER 			:: i,j,nnl     $ K4       Q                      8 K5       R                	nnl = SIZE(tau) - 2   < K5T       S                	ALLOCATE( bf(0:nnl+1) )   @ K5       T                	CALL get_bbf( temp, bf )      $ K5       U                      4 K5       V                	DO i = 1,nnl      h K6T       W  8            C             Fd(i) = bf(i)- bf(nnl)*EXP( -( tau(i) - tau(nnl) )*3/2 )    8 K6       X                	   DO j = i+1, nnl    D K6       Y                	      dbdtau = bf(j-1) - bf(j)    H K7       Z              !  	      dtau   = tau(j-1) - tau(j)      h K7       [  =            D  	      Fd(i) = Fd(i) - dbdtau * TF( tau(i), tau(j), tau(j-1), dtau )   0 K7       \              
  	   END DO     , K7       ]                	END DO    $ K8        ^                      4 K84       _                	DEALLOCATE(bf)    $ K8X       `                      < K8       a                 END SUBROUTINE get_drf     h K8       b                A  !----------------------------------------------------------------      d K9`       c `  )            ?  SUBROUTINE get_cvf( Fu, Fd, Fsol, Fcnv )	! ήǮή®̩٤η׻    $ K9       d                      X K9       e ^ #            4  	REAL,DIMENSION(:),INTENT(in)	:: Fu	! «̩   X K:4       f ^ #            4  	REAL,DIMENSION(:),INTENT(in)	:: Fd	! «̩   ` K:       g ^ (            9  	REAL,DIMENSION(:),INTENT(in)    :: Fsol	! «̩      \ K:       h ^ &            7  	REAL,DIMENSION(:),INTENT(out)	:: Fcnv	! ήǮή«̩    $ K;       i                      < K;P       j                	Fcnv = Fd + Fsol - Fu     $ K;t       k                      < K;       l                 END SUBROUTINE get_cvf     h K<       m                A  !----------------------------------------------------------------      ` K<x       n `  $            :  SUBROUTINE get_fnet( Fu, Fd, Fnet )	! ̣«̩٤η׻     $ K<       o                      X K<       p ^ #            4  	REAL,DIMENSION(:),INTENT(in)	:: Fu	! «̩   X K=L       q ^ #            4  	REAL,DIMENSION(:),INTENT(in)	:: Fd	! «̩   d K=       r ^ '            >  	REAL,DIMENSION(0:),INTENT(out)	:: Fnet	! ̣«̩     $ K=       s                      @ K>       t                	Fnet(1:) = Fu(1:) - Fd(1:)    8 K>L       u                	Fnet(0) = Fnet(1)     L K>       v  '            (  	Fnet(SIZE(Fnet)-1) = Fnet(SIZE(Fnet)-2)   $ K>       w                      < K>       x                 END SUBROUTINE get_fnet    h K?`       y                A  !----------------------------------------------------------------      l K?       z `  5            G  SUBROUTINE rdeqiv( TP, tau, bf, temp, Ftop, Fu, Fd )	! ʿղη׻    $ K@       {                     
(   T K@`       | Q             /  	INTEGER,INTENT(in)		:: TP	! طüֹ    X K@       } ^ %            2  	REAL,DIMENSION(0:),INTENT(in)	:: tau	! Ū     \ KA       ~ ^ &            7  	REAL,DIMENSION(0:),INTENT(inout):: bf	! «̩    T KAh        ^ (            /  	REAL,DIMENSION(0:),INTENT(inout):: temp	!     \ KA        ^             5  	REAL,INTENT(out) :: Ftop		! 絤ü«̩      \ KB         ^ &            7  	REAL,DIMENSION(0:),INTENT(inout):: Fu	! «̩    \ KB|        ^ &            7  	REAL,DIMENSION(0:),INTENT(inout):: Fd	! «̩    $ KB                             D KB                          !-絤ü«̩٤η׻   $ KC                             T KC\         .            /  	Ftop = 2.*sig*temp(TP)**4/( 1.5*tau(TP) + 1. )    $ KC                             @ KC                         !-طβ; ʿղ     $ KC                             X KD<         .            1    	bf(TP+1:)   = 0.5*Ftop*( 1.5*tau(TP+1:) + 1. )      P KD         (            )  	temp(TP+1:) = ( bf(TP+1:)/sig )**(0.25)       T KD         .            /  	Fu(TP+1:)   = 0.5*Ftop*( 1.5*tau(TP+1:) + 2. )    L KE,         &            '  	Fd(TP+1:)   = 0.5*Ftop*1.5*tau(TP+1:1)    $ KEP                             < KE                        END SUBROUTINE rdeqiv      h KE                       A  !----------------------------------------------------------------      \ KFP        `  "            8  SUBROUTINE fnetmaxl( Fnet, LTRP )	! ̣«̩٤η׻   $ KFt                             d KF        ^ &            =  	REAL,DIMENSION(0:),INTENT(in)	:: Fnet	! ̣«̩      T KG,        Q             0  	INTEGER,INTENT(inout)		:: LTRP	! ֹ̹   < KGh        Q               	INTEGER				:: nnl	!       8 KG        Q               	INTEGER				:: i	!     $ KG                             8 KG                       	nnl = SIZE(Fnet)-1    $ KH                              4 KHT                       	DO i = nnl,1,-1   L KH         !            %  	   IF ( Fnet(i) >= Fnet(LTRP) ) THEN      4 KH                       	      LTRP = i    0 KI                     
  	   END IF     , KI0                       	END DO    $ KIT                             < KI                        END SUBROUTINE fnetmaxl    h KI                       A  !----------------------------------------------------------------      < KP                        END MODULE rad_module   