版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《中子扩散理论》课程报告)为给定参数。程序编制程序流程图根据以上理论模型可以得出扩散方程数值计算的流程图如图1-2。程序说明采用模块化编程思想编制程序。程序主要分为五个模块,包括MODULEMaterial,MODULEConfig,MODULESolution,MODULEOutput以及主程序PROGRAMDiffusion_main。模块中类的关系图1-2。每个类的属性和操作参考附录3的程序代码。图1-2图1-2输入卡片说明输入卡片参考附录2,其中需要读取的数据是隔行读取,数据上一行是解释是什么数据。其中第一行数据为能群数,轴向曲率的平方(修正总截面以考虑轴向泄露),材料数。第二行数据为X方向的材料数,X方向每种材料的网格数,X方向网格大小,Y方向网格大小,边界条件从左边界顺时针依次填入,0为真空边界,-1为全反射边界。第三行是迭代信息,依次为最大外迭代次数,最大内迭代次数,外迭代收敛准则,内迭代收敛准则。再下面就是材料的截面信息,依次填入每种材料每个能群的扩散系数,吸收截面,产生截面以及散射矩阵。数值结果利用编制的程序计算了2D-IAEA基准题。二维IAEA基准问题是一个简化的两群PWR基准问题。堆芯共有177盒燃料组件,组件几何尺寸为20cm×20cm,堆芯按双区布料方案布置,径向有20cm厚的水反射层,堆芯外边界条件为真空边界(黑边界条件)。所有组件均采用等效均匀化的参数。此基准问题堆芯中布置了吸收棒,而且在堆芯和反射层结合面上,热中子通量梯度很大,因此它广泛地被用于校核双群中子扩散方程的数值计算模型及其计算精度。详细的堆芯几何布置及组件均匀化参数见附录1。Keff的计算结果以及与参考值得偏差如表1-1,功率分别的计算结果以及与参考值得偏差如图1-4。Keff计算结果表1-1计算值参考值偏差(%)Keff1.0295251.029585-0.00583功率分布:参考值0.5849计算值0.5762偏差(%)-1.5150.47060.68560.59720.46840.68210.5872-0.474-0.509-1.7061.19290.96700.90640.84611.19470.96780.90410.83860.1550.086-0.250-0.8991.46941.34511.17921.07050.97520.69211.47311.34791.18051.06970.97220.68560.2540.2050.113-0.074-0.308-0.9441.43511.47991.31491.06971.03610.95040.73581.43971.48411.31841.07231.03680.94930.73330.3200.2810.2640.2440.063-0.114-0.3450.74561.30971.45371.21070.61000.93510.93430.75490.74611.31481.45801.21490.60970.93660.93400.75310.0650.3860.2970.343-0.0540.157-0.031-0.242图1-4从以上计算结果可以看出Keff以及功率分布与参考值的偏差都很小,说明编制的程序是正确可靠的。附录12D-IAEA基准题2D-IAEA基准题1/4堆芯材料布置材料截面数据附录2程序输入输出卡片截图输入卡片部分输出卡片附录3程序代码主程序代码:PROGRAMDiffusion_mainUSEConfigUSEMaterialUSESolutionIMPLICITNONETYPE(Material_Type)::User_MaterialTYPE(Config_Type)::User_ConfigTYPE(Solution_Type)::User_FluxTYPE(Solution_Type)::User_SourceINTEGER::INunit,OUTunitINTEGER::NumEG,NumMatINTEGER::NumMatMesh,NumGeoMeshINTEGER::Boundary(1:4)REAL(8)::DX,DYINTEGER::MaxFSIter,MaxWGIterREAL(8)::KeffTol,FluxTol,Keff1,Keff,BZ_SqureINTEGER,ALLOCATABLE::MatID(:,:)REAL(8),ALLOCATABLE::DifCoe(:),AbsXS(:),ProdXS(:),Chi(:),ScatXS(:,:)INTEGER::i,j,k,iGREAL(8)::TemTime1,TemTime0CALLCPU_TIME(TemTime0)INunit=100OUTunit=200OPEN(UNIT=INunit,FILE='in.dat')OPEN(UNIT=OUTunit,FILE='out.dat')READ(INunit,*)READ(INunit,*)NumEG,BZ_Squre,NumMatALLOCATE(DifCoe(NumEG),AbsXS(NumEG),ProdXS(NumEG),Chi(NumEG),ScatXS(NumEG,NumEG))READ(INunit,*)READ(INunit,*)NumMatMesh,NumGeoMesh,DX,DY,BoundaryALLOCATE(MatID(NumMatMesh,NumMatMesh))READ(INunit,*)READ(INunit,*)MaxFSIter,MaxWGIter,KeffTol,FluxTolREAD(INunit,*)READ(INunit,*)((MatID(i,j),i=1,NumMatMesh),j=1,NumMatMesh)!SetMaterialCALLMaterial_Define(User_Material,NumMat)DifCoe=100000;AbsXS=0.;ProdXS=0.;Chi=0.;ScatXS=0.CALLXS_SetXS(User_Material%MacXS(0),NumEG,BZ_Squre,DifCoe,AbsXS,ProdXS,Chi,ScatXS)DOj=1,NumMatREAD(INunit,*)READ(INunit,*)(DifCoe(i),i=1,NumEG)READ(INunit,*)(AbsXS(i),i=1,NumEG)READ(INunit,*)(ProdXS(i),i=1,NumEG)READ(INunit,*)(Chi(i),i=1,NumEG)READ(INunit,*)((ScatXS(i,k),k=1,NumEG),i=1,NumEG)CALLXS_SetXS(User_Material%MacXS(j),NumEG,BZ_Squre,DifCoe,AbsXS,ProdXS,Chi,ScatXS)ENDDODEALLOCATE(DifCoe,AbsXS,ProdXS,Chi,ScatXS)!SetConfigurationCALLSet_Config(User_Config,NumMatMesh,NumGeoMesh,MatID,DX,DY,Boundary)DEALLOCATE(MatID)!SolvetheproblembyiterativemethodCALLSolution_OuterIter(User_Source,User_Flux,User_Config,User_Material,MaxFSIter,KeffTol,MaxWGIter,FluxTol,OUTunit)CALLCPU_TIME(TemTime1)WRITE(OUTunit,*)TemTime1-TemTime0!VoidobjectCALLConfig_Void(User_Config)CALLMaterial_Void(User_Material)CALLSolution_Void(User_Flux)CALLSolution_Void(User_Source)ENDPROGRAMDiffusion_main材料模块MODULEMaterial:!*************************************************************************************!*************************************************************************************MODULEMaterialIMPLICITNONETYPE,PUBLIC::XS_TypeLOGICAL::Defined=.FALSE.INTEGER::NumEGrpsREAL(8)::BZ_SqureREAL(8),ALLOCATABLE::DifCoe(:)REAL(8),ALLOCATABLE::RmvXS(:)REAL(8),ALLOCATABLE::AbsXS(:)REAL(8),ALLOCATABLE::TotXS(:)REAL(8),ALLOCATABLE::ProdXS(:)REAL(8),ALLOCATABLE::Chi(:)REAL(8),ALLOCATABLE::ScatXS(:,:)ENDTYPEXS_TypeTYPE,PUBLIC::Material_TypeLOGICAL::Defined=.FALSE.INTEGER::NumMatTYPE(XS_Type),ALLOCATABLE::MacXS(:)ENDTYPEMaterial_TypeCONTAINS!!SUBROUTINEXS_Define(User_XS,NumEGrps,BZ_Squre)IMPLICITNONETYPE(XS_Type),INTENT(INOUT)::User_XSINTEGER,INTENT(IN)::NumEGrpsREAL(8),INTENT(IN)::BZ_SqureIF(User_XS%Defined)CALLXS_Void(User_XS)User_XS%NumEGrps=NumEGrpsUser_XS%BZ_Squre=BZ_SqureALLOCATE(User_XS%DifCoe(NumEGrps),User_XS%RmvXS(NumEGrps),User_XS%AbsXS(NumEGrps),User_XS%TotXS(NumEGrps),&User_XS%ProdXS(NumEGrps),User_XS%Chi(NumEGrps),User_XS%ScatXS(NumEGrps,NumEGrps))User_XS%Defined=.TRUE.ENDSUBROUTINEXS_Define!!SUBROUTINEXS_SetXS(User_XS,NumEGrps,BZ_Squre,DifCoe,AbsXS,ProdXS,Chi,ScatXS)IMPLICITNONETYPE(XS_Type),INTENT(INOUT)::User_XSINTEGER,INTENT(IN)::NumEGrpsREAL(8),INTENT(IN)::BZ_SqureREAL(8),INTENT(IN)::DifCoe(:),ProdXS(:),AbsXS(:),Chi(:),ScatXS(:,:)INTEGER::i,jCALLXS_Define(User_XS,NumEGrps,BZ_Squre)User_XS%DifCoe=DifCoeUser_XS%AbsXS=AbsXSUser_XS%ProdXS=ProdXSUser_XS%Chi=ChiUser_XS%ScatXS=ScatXSUser_XS%TotXS=0.User_XS%RmvXS=0.DOi=1,NumEGrpsDOj=1,NumEGrpsUser_XS%TotXS(i)=User_XS%TotXS(i)+ScatXS(j,i)ENDDOUser_XS%TotXS(i)=User_XS%TotXS(i)+User_XS%AbsXS(i)+BZ_Squre*DifCoe(i)ENDDODOi=1,NumEGrpsUser_XS%RmvXS(i)=User_XS%TotXS(i)-ScatXS(i,i)ENDDOENDSUBROUTINEXS_SetXS!!SUBROUTINEXS_Void(User_XS)IMPLICITNONETYPE(XS_Type),INTENT(INOUT)::User_XSIF(User_XS%Defined)THENUser_XS%NumEGrps=0User_XS%BZ_Squre=0DEALLOCATE(User_XS%DifCoe,User_XS%ProdXS,User_XS%Chi,User_XS%RmvXS,User_XS%TotXS,&User_XS%AbsXS,User_XS%ScatXS)User_XS%Defined=.FALSE.ENDIFENDSUBROUTINEXS_Void!!SUBROUTINEMaterial_Define(User_Material,NumMat)IMPLICITNONETYPE(Material_Type),INTENT(INOUT)::User_MaterialINTEGER,INTENT(IN)::NumMatIF(User_Material%Defined)CALLMaterial_Void(User_Material)User_Material%NumMat=NumMatALLOCATE(User_Material%MacXS(0:NumMat))User_Material%Defined=.TRUE.ENDSUBROUTINEMaterial_Define!!SUBROUTINEMaterial_Void(User_Material)IMPLICITNONETYPE(Material_Type),INTENT(INOUT)::User_MaterialINTEGER::imIF(User_Material%Defined)THENUser_Material%NumMat=0DOim=0,User_Material%NumMatIF(User_Material%MacXS(im)%Defined)THENCALLXS_Void(User_Material%MacXS(im))ENDIFENDDODEALLOCATE(User_Material%MacXS)User_Material%Defined=.FALSE.ENDIFENDSUBROUTINEMaterial_VoidENDMODULEMaterial位置模块MODULEConfig:!*************************************************************************************!*************************************************************************************MODULEConfigIMPLICITNONETYPE,PUBLIC::Config_TypeLOGICAL::DefinedINTEGER::NumMeshX,NumMeshYINTEGER::Boundary(1:4)REAL(8)::DX,DYINTEGER,ALLOCATABLE::MeshMat(:,:)ENDTYPEConfig_TypeCONTAINS!!SUBROUTINEConfig_Define(User_Config,NumMeshX,NumMeshY,DX,DY,Boundary)IMPLICITNONETYPE(Config_Type),INTENT(INOUT)::User_ConfigINTEGER,INTENT(IN)::NumMeshX,NumMeshY,Boundary(1:4)REAL(8),INTENT(IN)::DX,DYIF(User_Config%Defined)CALLConfig_Void(User_Config)User_Config%NumMeshX=NumMeshXUser_Config%NumMeshY=NumMeshYUser_Config%DX=DXUser_Config%DY=DYUser_Config%Boundary(1:4)=Boundary(1:4)ALLOCATE(User_Config%MeshMat(0:NumMeshX+1,0:NumMeshY+1))User_Config%Defined=.TRUE.ENDSUBROUTINEConfig_Define!!SUBROUTINEConfig_Void(User_Config)IMPLICITNONETYPE(Config_Type),INTENT(INOUT)::User_ConfigIF(User_Config%Defined)THENUser_Config%NumMeshX=0User_Config%NumMeshY=0User_Config%DX=0User_Config%DY=0User_Config%Boundary(1:4)=0DEALLOCATE(User_Config%MeshMat)User_Config%Defined=.FALSE.ENDIFENDSUBROUTINEConfig_Void!!SUBROUTINESet_Config(User_Config,NumMatMesh,NumGeoMesh,MatID,DX,DY,Boundary)TYPE(Config_Type),INTENT(INOUT)::User_ConfigINTEGER,INTENT(IN)::NumMatMesh,NumGeoMesh,MatID(:,:),Boundary(1:4)REAL(8),INTENT(IN)::DX,DYINTEGER::i,j,k,m,n,NumMesh,NumMeshX,NumMeshYm=NumGeoMesh/2NumMesh=NumGeoMesh/2+(NumMatMesh-1)*NumGeoMeshNumMeshX=NumMesh;NumMeshY=NumMeshCALLConfig_Define(User_Config,NumMeshX,NumMeshY,DX,DY,Boundary)User_Config%MeshMat(1:m,1:m)=MatID(1,1)DOn=1,NumMatMesh-1i=m+2*m*(n-1)User_Config%MeshMat(i+1:i+2*m,1:m)=MatID(n+1,1)User_Config%MeshMat(1:m,i+1:i+2*m)=MatID(1,n+1)DOk=1,NumMatMesh-1j=m+2*m*(k-1)User_Config%MeshMat(i+1:i+2*m,j+1:j+2*m)=MatID(n+1,k+1)ENDDOENDDOIF(Boundary(1)==-1)THENUser_Config%MeshMat(0,0:NumMeshY+1)=User_Config%MeshMat(1,0:NumMeshY+1)ELSEIF(Boundary(1)==0)THENUser_Config%MeshMat(0,0:NumMeshY+1)=0ENDIFIF(Boundary(3)==-1)THENUser_Config%MeshMat(NumMeshX+1,0:NumMeshY+1)=User_Config%MeshMat(NumMeshX,0:NumMeshY+1)ELSEIF(Boundary(3)==0)THENUser_Config%MeshMat(NumMeshX+1,0:NumMeshY+1)=0ENDIFIF(Boundary(2)==-1)THENUser_Config%MeshMat(0:NumMeshX+1,NumMeshY+1)=User_Config%MeshMat(0:NumMeshX+1,NumMeshY)ELSEIF(Boundary(2)==0)THENUser_Config%MeshMat(0:NumMeshX+1,NumMeshY+1)=0ENDIFIF(Boundary(4)==-1)THENUser_Config%MeshMat(0:NumMeshX+1,0)=User_Config%MeshMat(0:NumMeshX+1,1)ELSEIF(Boundary(4)==0)THENUser_Config%MeshMat(0:NumMeshX+1,0)=0ENDIFENDSUBROUTINESet_ConfigENDMODULEConfig求解模块MODULESolution:!*************************************************************************************!*************************************************************************************MODULESolutionUSEConfigUSEMaterialIMPLICITNONETYPE,PUBLIC::Solution_TypeLOGICAL::Defined=.FALSE.INTEGER::NumMeshXINTEGER::NumMeshYINTEGER::NumEGREAL(8),ALLOCATABLE::Vector(:,:,:)INTEGER::MaxIterREAL(8)::RETolREAL(8)::KeffREAL(8)::TFisSrcENDTYPESolution_TypeCONTAINS!!SUBROUTINESolution_Define(User_Solution,NumMeshX,NumMeshY,NumEG,MaxIter,RETol)IMPLICITNONETYPE(Solution_Type),INTENT(INOUT)::User_SolutionINTEGER,INTENT(IN)::NumMeshX,NumMeshY,NumEG,MaxIterREAL(8),INTENT(IN)::RETolIF(User_Solution%Defined)CALLSolution_Void(User_Solution)User_Solution%NumMeshX=NumMeshXUser_Solution%NumMeshY=NumMeshYUser_Solution%NumEG=NumEGUser_Solution%MaxIter=MaxIterUser_Solution%RETol=RETolUser_Solution%Keff=1.0User_Solution%TFisSrc=1.0ALLOCATE(User_Solution%Vector(NumMeshX,NumMeshY,NumEG))User_Solution%Vector=1.0User_Solution%Defined=.TRUE.ENDSUBROUTINESolution_Define!!SUBROUTINESolution_Void(User_Solution)IMPLICITNONETYPE(Solution_Type),INTENT(INOUT)::User_SolutionIF(User_Solution%Defined)THENUser_Solution%NumMeshX=0User_Solution%NumMeshY=0User_Solution%NumEG=0User_Solution%MaxIter=0User_Solution%RETol=0.User_Solution%Keff=0User_Solution%TFisSrc=0.DEALLOCATE(User_Solution%Vector)User_Solution%Defined=.FALSE.ENDIFENDSUBROUTINESolution_Void!!SUBROUTINESolution_InnerIter(User_Flux,User_Source,User_Config,User_Material,MaxWGIter,FluxTol,iG,OUTunit)IMPLICITNONETYPE(Solution_Type),INTENT(INOUT)::User_FluxTYPE(Solution_Type),INTENT(INOUT)::User_SourceTYPE(Material_Type),INTENT(IN)::User_MaterialTYPE(Config_Type),INTENT(IN)::User_ConfigINTEGER,INTENT(IN)::MaxWGIter,iG,OUTunitREAL(8),INTENT(IN)::FluxTolREAL(8),ALLOCATABLE::DifCoe(:,:),RmvXS(:,:),A(:,:),B(:,:),C(:,:),D(:,:),E(:,:),Flux(:,:),Source(:,:)REAL(8)::DX,DYINTEGER::NumEG,NumMeshX,NumMeshYINTEGER::i,j,k,IIterREAL(8)::erf,up,downNumEG=User_Material%MacXS(1)%NumEGrpsNumMeshX=User_Config%NumMeshXNumMeshY=User_Config%NumMeshYDX=User_Config%DXDY=User_Config%DYALLOCATE(DifCoe(0:NumMeshX+1,0:NumMeshY+1),RmvXS(0:NumMeshX+1,0:NumMeshY+1),&A(NumMeshX,NumMeshY),B(NumMeshX,NumMeshY),C(NumMeshX,NumMeshY),D(NumMeshX,NumMeshY),&E(NumMeshX,NumMeshY),Flux(0:NumMeshX+1,0:NumMeshY+1),Source(NumMeshX,NumMeshY))DOi=0,NumMeshX+1DOj=0,NumMeshY+1DifCoe(i,j)=User_Material%MacXS(User_Config%MeshMat(i,j))%DifCoe(iG)RmvXS(i,j)=User_Material%MacXS(User_Config%MeshMat(i,j))%RmvXS(iG)ENDDOENDDODOj=1,NumMeshYDOi=1,NumMeshXA(i,j)=-2*DifCoe(i,j)*DifCoe(i,j-1)*DX/(DifCoe(i,j)*DY+DifCoe(i,j-1)*DY)B(i,j)=-2*DifCoe(i,j)*DifCoe(i-1,j)*DY/(DifCoe(i,j)*DX+DifCoe(i-1,j)*DX)D(i,j)=-2*DifCoe(i,j+1)*DifCoe(i,j)*DX/(DifCoe(i,j+1)*DY+DifCoe(i,j)*DY)C(i,j)=-2*DifCoe(i+1,j)*DifCoe(i,j)*DY/(DifCoe(i+1,j)*DX+DifCoe(i,j)*DX)E(i,j)=RmvXS(i,j)*DX*DY-A(i,j)-B(i,j)-C(i,j)-D(i,j)ENDDOENDDO!Withingroupiteration,Gauss-SeidelIterationSource=User_Source%Vector(:,:,iG)Flux(1:NumMeshX,1:NumMeshY)=User_Flux%Vector(:,:,iG)DOi=0,NumMeshX+1DOj=0,NumMeshY+1IF(User_Config%MeshMat(i,j)==0)THENFlux(i,j)=0.ENDIFENDDOENDDOIIter=0;erf=1.0up=0.;down=0.DOWHILE(IIter<=MaxWGIter.AND.erf>=FluxTol)IIter=IIter+1IF(User_Config%Boundary(1)==-1)THENFlux(0,:)=Flux(1,:)ELSEFlux(0,:)=0.9*Flux(1,:)ENDIFIF(User_Config%Boundary(3)==-1)THENFlux(NumMeshX+1,:)=Flux(NumMeshX,:)ELSEFlux(NumMeshX+1,:)=0.9*Flux(NumMeshX,:)ENDIFIF(User_Config%Boundary(2)==-1)THENFlux(:,NumMeshY+1)=Flux(:,NumMeshY)ELSEFlux(:,NumMeshY+1)=0.9*Flux(:,NumMeshY)ENDIFIF(User_Config%Boundary(4)==-1)THENFlux(:,0)=Flux(:,1)ELSEFlux(:,0)=0.9*Flux(:,1)ENDIFDOj=1,NumMeshYDOi=1,NumMeshXIF(User_Config%MeshMat(i,j)/=0)THENFlux(i,j)=(Source(i,j)-A(i,j)*Flux(i,j-1)-B(i,j)*Flux(i-1,j)-C(i,j)*Flux(i+1,j)-&D(i,j)*Flux(i,j+1))/E(i,j)up=up+DABS(Flux(i,j)-User_Flux%Vector(i,j,iG))down=down+DABS(Flux(i,j))User_Flux%Vector(i,j,iG)=Flux(i,j)ENDIFENDDOENDDOerf=up/downWRITE(OUTunit,*)IIter,erfENDDODEALLOCATE(DifCoe,RmvXS,A,B,C,D,E,Flux,Source)ENDSUBROUTINESolution_InnerIter!!SUBROUTINESolution_OuterIter(User_Source,User_Flux,User_Config,User_Material,MaxFSIter,KeffTol,MaxWGIter,FluxTol,OUTunit)IMPLICITNONETYPE(Solution_Type),INTENT(INOUT)::User_FluxTYPE(Solution_Type),INTENT(INOUT)::User_SourceTYPE(Material_Type),INTENT(IN)::User_MaterialTYPE(Config_Type),INTENT(IN)::User_ConfigINTEGER,INTENT(IN)::MaxFSIter,MaxWGIter,OUTunitREAL(8),INTENT(IN)::KeffTol,FluxTolREAL(8),ALLOCATABLE::ProdXS(:,:,:),Chi(:,:,:),ScatXS(:,:,:,:),Flux(:,:,:),Source(:,:,:)REAL(8)::DX,DY,TFisSrc,Keff,erkINTEGER::NumEG,NumMeshX,NumMeshYINTEGER::i,j,k,iG,OIterNumEG=User_Material%MacXS(1)%NumEGrpsNumMeshX=User_Config%NumMeshXNumMeshY=User_Config%NumMeshYDX=User_Config%DXDY=User_Config%DYCALLSolution_Define(User_Flux,NumMeshX,NumMeshY,NumEG,MaxWGIter,FluxTol)CALLSolution_Define(User_Source,NumMeshX,NumMeshY,NumEG,MaxFSIter,KeffTol)ALLOCATE(ProdXS(NumMeshX,NumMeshY,NumEG),Chi(NumMeshX,NumMeshY,NumEG),ScatXS(NumMeshX,NumMeshY,NumEG,NumEG),&Flux(NumMeshX,NumMeshY,NumEG),Source(NumMeshX,NumMeshY,NumEG))DOiG=1,NumEGDOi=1,NumMeshXDOj=1,NumMeshYProdXS(i,j,iG)=User_Material%MacXS(User_Config%MeshMat(i,j))%ProdXS(iG)Chi(i,j,iG)=User_Material%MacXS(User_Config%MeshMat(i,j))%Chi(iG)ScatXS(i,j,iG,:)=User_Material%MacXS(User_Config%MeshMat(i,j))%ScatXS(iG,:)ENDDOENDDOENDDO!FSIterationOIter=0;erk=1.0DOWHILE(OIter<=MaxFSIter.AND.erk>=KeffTol)OIter=OIter+1Flux=User_Flux%VectorKeff=User_Source%KeffTFisSrc=0.DOiG=1,NumEGDOj=1,NumMeshYDOi=1,NumMeshXDOk=1,NumEGSource(i,j,iG)=Chi(i,j,iG)*ProdXS(i,j,k)*Flux(i,j,k)TFisSrc=TFisSrc+Source(i,j,iG)*DX*DYSource(i,j,iG)=Source(i,j,iG)/KeffENDDODOk=1,iGSource(i,j,iG)=Source(i,j,iG)+ScatXS(i,j,iG,k)*Flux(i,j,k)ENDDOENDDOENDDOUser_Source%Vector(:,:,iG)=Source(:,:,iG)*DX*DYCALLSolution_InnerIter(User_Flux,User_Source,User_Config,User_Material,MaxWGIter,FluxTol,iG,OUTunit)ENDDOKeff=Keff*TFisSrc/User_Source%TFisSrcerk=DABS(Keff-User_Source%Keff)/KeffWRITE(*,*)OIter,Keff,erkWRITE(OUTunit,*)OIter,Keff,erk!UpdateKeffUser_Source%Keff=KeffUser_Source%TFisSrc=TFisSrcENDDODEALLOCATE(ProdXS,Chi,ScatXS,Flux,Source)ENDSUBROUTINESolution_OuterIterENDMODULESolution输出模块MODULEOutput:!******************************************************************************************!******************************************************************************************MODULEOutputUSESolutionUSEMaterialUSEConfigIMPLICITNONETYPE,PUBLIC::Output_TypeLOGICAL::Defined=.FALSE.REAL(8)::KeffINTEGER::Size1INTEGER::Size2REAL(8),ALLOCATABLE::Power(:,:)ENDTYPEOutput_TypeCONTAINS!!SUBROUTINEOutput_Define(User_Output,Keff,Size1,Size2)IMPLICITNONETYPE(Output_Type),INTENT(OUT)::User_OutputREAL(8),INTENT(IN)::KeffINTEGER,INTENT(IN)::Size1,Size2IF(User_output%Defined)CALLOutput_Void(User_Output)User_Output%Keff=KeffUser_Output%Size1=Size1User_Output%Size2=Size2ALLOCATE(User_Output%Power(Size1,Size2))User_Output%Defined=.TRUE.ENDSUBROUTINEOutput_Define!!SUBROUTINEOutput_Void(User_Output)IMPLICITNONETYPE(Output_Type),INTENT(INOUT)::User_OutputIF(User_Output%Defined)THENUser_Output%Keff=1.0User_Output%Size1=0User_Output%Size2=0DEALLOCATE(User_Output%Power)User_Output%Defined=.FALSE.ENDIFENDSUBROUTINEOutput_Void!!SUBROUTINEPrint_Output(User_Output,User_Flux,User_Source,User_Material,User_Config,NumMatMesh,NumGeoMesh,OUTunit)IMPLICITNONETYPE(Output_Type),INTENT(OUT)::User_OutputTYPE(Solution_Type),INTENT(IN)::User_FluxTYPE(Solution_Type),INTENT(IN)::User_SourceTYPE(Material_Type),INTENT(IN)::User_MaterialTYPE(Config_TYPE),INTENT(IN)::User_ConfigINTEGER,INTENT(IN)::NumMatMesh,NumGeoMesh,OUTunitREAL(8),ALLOCATABLE::Flux(:,:),ProdXS(:,:)INTEGER::NumMeshX,NumMeshYREAL(8)::Keff,Sum,AvrgINTEGER::i,j,n,m,kNumMeshX=User_Config%NumMeshXNumMeshY=User_Config%NumMeshYALLOCATE(Flux(NumMeshX,NumMeshY),ProdXS(NumMeshX,NumMeshY))D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 取消矿山工程外包合同
- 2025新译林版七年级英语下册期末综合质量检测试卷(含答案)
- 2026年护理管理压疮应急考核试卷及答案
- 立体图形的直观图课件2025-2026学年高一下学期数学人教A版必修第二册
- 我爱我们班 (2)课件-2026-2027学年道德与法治二年级上册统编版
- 护理人力资源配置与排班管理
- 护理质量持续改进的挑战与对策
- 2026一级造价工程师《管理》时间数字考点速记
- 护理诊断与康复护理
- 护理成本控制与绩效考核
- 肿瘤溶解综合征及护理
- 84张-六一互动小游戏班会
- DL∕T 5161.6-2018 电气装置安装工程质量检验及评定规程 第6部分:接地装置施工质量检验
- 2024年浙江宁波市水务环境集团有限公司招聘笔试参考题库含答案解析
- 功夫青春广播体操图解
- 铁路基本建设工程设计概(预)算编制办法-国铁科法(2017)30号
- 武汉市网约车区域科目考试复习题库(含答案)
- 镂铣机安全操作规程
- 芜湖供电专项规划(2017-2030)环境影响报告书
- 小学六年级数学-阴影部分面积例题
- 平均数四年级数学下册平均数PPT课件小学数学四年级
评论
0/150
提交评论