! Test pointers ! Module Octs Integer, parameter :: Np= 4, & Nocts = 300000000 Type Oct Real*8 :: dens(Np) Type(Oct), pointer :: p1,p2,p3,p4,p5,p6 End Type Oct End Module Octs !-------------------------- Program TestPointers use Octs Type(Oct), target, save :: myocts(Nocts) print *,' memory for data, Gb = ',8.*Np*Nocts/float(1024_8**3) Do i=1,Nocts myocts(i)%dens = float(i)/Nocts myocts(i)%p1 => myocts(mod(i,Nocts)+1) EndDo print *, ' ---- ' NULLIFY(myocts(Nocts)%p1,myocts(Nocts)%p2,myocts(Nocts)%p3) NULLIFY(myocts(Nocts)%p4,myocts(Nocts)%p5,myocts(Nocts)%p6) print *, ' done allocation' Do i=1,Nocts myocts(i)%p1 => myocts(mod(i,Nocts)+1) myocts(i)%p2 => myocts(mod(i+1,Nocts)+1) myocts(i)%p3 => myocts(mod(i+2,Nocts)+1) myocts(i)%p4 => myocts(mod(i+3,Nocts)+1) myocts(i)%p5 => myocts(mod(i+4,Nocts)+1) myocts(i)%p6 => myocts(mod(i+5,Nocts)+1) EndDo print *, ' initilization' Do kk =1,100 Do i=1,Nocts Do j=1,Np myocts(i)%dens(j) = myocts(i)%p1%dens(j) - myocts(i)%p2%dens(j)- myocts(i)%p6%dens(j) EndDo EndDo print *, ' done -----',kk EndDo Stop End Program TestPointers