  ïÀ        
       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   