make_sgmw.f90
Go to the documentation of this file.00001 subroutine estimate_nsgm(ecmin,emin,emax,ecmax,gw_grid_separation,nproc,nsgm)
00002
00003 implicit none
00004 real(8)::ecmin,emin,emax,ecmax,gw_grid_separation
00005 real(8)::omega,grd_separation
00006 integer::ie,je,nproc
00007 integer::nsgm
00008 integer,parameter::nsgm_max=100000
00009 real(8),parameter::expansion=10.0d0
00010
00011 je=0
00012 grd_separation=expansion*gw_grid_separation
00013 omega=ecmin
00014 do ie=1,nsgm_max
00015
00016 if(ecmin<=omega.and.omega<emin)then
00017 grd_separation=expansion*gw_grid_separation
00018 je=je+1
00019 endif
00020
00021 if(emin<=omega.and.omega<=emax)then
00022 grd_separation=gw_grid_separation
00023 je=je+1
00024 endif
00025
00026 if(emax<omega)then
00027 grd_separation=expansion*gw_grid_separation
00028 je=je+1
00029 endif
00030
00031 if(omega>ecmax.and.(mod(je,nproc).eq.0))exit
00032
00033 omega=omega+grd_separation
00034
00035 enddo
00036
00037
00038
00039 nsgm=je
00040
00041 return
00042 end
00043
00044 subroutine make_sgmw(ecmin,emin,emax,gw_grid_separation,nsgm,sgmw)
00045
00046 implicit none
00047 real(8)::ecmin,emin,emax,gw_grid_separation
00048 real(8)::omega,grd_separation
00049 integer::nsgm
00050 real(8)::sgmw(nsgm)
00051 integer::ie
00052 real(8),parameter::expansion=10.0d0
00053
00054 sgmw=0.0d0
00055
00056 grd_separation=expansion*gw_grid_separation
00057 omega=ecmin
00058 do ie=1,nsgm
00059
00060 if(ecmin<=omega.and.omega<emin)then
00061 sgmw(ie)=omega
00062 grd_separation=expansion*gw_grid_separation
00063 endif
00064
00065 if(emin<=omega.and.omega<=emax)then
00066 sgmw(ie)=omega
00067 grd_separation=gw_grid_separation
00068 endif
00069
00070 if(emax<omega)then
00071 sgmw(ie)=omega
00072 grd_separation=expansion*gw_grid_separation
00073 endif
00074
00075 omega=omega+grd_separation
00076
00077 enddo
00078
00079
00080
00081
00082
00083 return
00084 end