00001 subroutine update_matter(potf,mtfield,convf) 00002 use phys_constant, only : long 00003 use grid_parameter, only : nrf, ntf, npf 00004 implicit none 00005 real(long), pointer :: potf(:,:,:) 00006 real(long), pointer :: mtfield(:,:,:) 00007 real(long), intent(in) :: convf 00008 real(long) :: rand, frac, convrand 00009 integer :: irf,itf,ipf 00010 mtfield(0:nrf,0:ntf,0:npf) = convf * potf(0:nrf,0:ntf,0:npf) & 00011 & + (1.d0-convf)*mtfield(0:nrf,0:ntf,0:npf) 00012 ! mtfield(0:nrf-2,0:ntf,0:npf) = convf * potf(0:nrf-2,0:ntf,0:npf) & 00013 ! & + (1.d0-convf)*mtfield(0:nrf-2,0:ntf,0:npf) 00014 !no do ipf = 0, npf 00015 !no do itf = 0, ntf 00016 !no! do irf = nrf-1, nrf 00017 !no do irf = 0, nrf 00018 !no call random_number(rand) 00019 !no!no rand = rand - 0.5d0 00020 !no!no frac = 0.25d0*convf 00021 !no!no! convrand = convf - 0.5*frac + frac*rand 00022 !no!no convrand = convf + frac*rand 00023 !no!no mtfield(irf,itf,ipf) = ( convrand)* potf(irf,itf,ipf) & 00024 !no!no & + (1.d0-convrand)*mtfield(irf,itf,ipf) 00025 !no if (rand.le.0.5) then 00026 !no mtfield(irf,itf,ipf) = convf * potf(irf,itf,ipf) & 00027 !no & + (1.d0-convf)*mtfield(irf,itf,ipf) 00028 !no end if 00029 !no end do 00030 !no end do 00031 !no end do 00032 end subroutine update_matter