blob: 0d388f7f284770b26795820a5652004b9a5b5ae9 [file] [log] [blame]
c---------------------------------------------------------------
subroutine move
c---------------------------------------------------------------
c move element to proper location in morton space filling curve
c---------------------------------------------------------------
include 'header.h'
integer i,iside,jface,iel,ntemp,ii1,ii2,n1,n2,cb
n2=2*6*nelt
n1=n2*2
call nr_init_omp(sje_new,n1,0)
call nr_init_omp(ijel_new,n2,0)
c$OMP PARALLEL DEFAULT(SHARED) PRIVATE(iel,i,iside,jface,cb,ntemp,
c$OMP& ii1,ii2)
c$OMP DO
do iel=1,nelt
i=mt_to_id(iel)
treenew(iel)=tree(i)
call copy(xc_new(1,iel),xc(1,i),8)
call copy(yc_new(1,iel),yc(1,i),8)
call copy(zc_new(1,iel),zc(1,i),8)
do iside=1,nsides
jface = jjface(iside)
cb=cbc(iside,i)
xc_new(iside,iel)=xc(iside,i)
yc_new(iside,iel)=yc(iside,i)
zc_new(iside,iel)=zc(iside,i)
cbc_new(iside,iel)=cb
if(cb.eq.2)then
ntemp=sje(1,1,iside,i)
ijel_new(1,iside,iel)=1
ijel_new(2,iside,iel)=1
sje_new(1,1,iside,iel)=id_to_mt(ntemp)
else if(cb.eq.1) then
ntemp=sje(1,1,iside,i)
ijel_new(1,iside,iel)=ijel(1,iside,i)
ijel_new(2,iside,iel)=ijel(2,iside,i)
sje_new(1,1,iside,iel)=id_to_mt(ntemp)
else if(cb.eq.3) then
do ii2=1,2
do ii1=1,2
ntemp=sje(ii1,ii2,iside,i)
ijel_new(1,iside,iel)=1
ijel_new(2,iside,iel)=1
sje_new(ii1,ii2,iside,iel)=id_to_mt(ntemp)
end do
end do
else if(cb.eq.0)then
sje_new(1,1,iside,iel)=0
sje_new(1,2,iside,iel)=0
sje_new(2,1,iside,iel)=0
sje_new(2,2,iside,iel)=0
end if
end do
call copy(ta2(1,1,1,iel),ta1(1,1,1,i),nxyz)
end do
c$OMP ENDDO
c$OMP DO
do iel=1,nelt
call copy(xc(1,iel),xc_new(1,iel),8)
call copy(yc(1,iel),yc_new(1,iel),8)
call copy(zc(1,iel),zc_new(1,iel),8)
call copy(ta1(1,1,1,iel),ta2(1,1,1,iel),nxyz)
call ncopy(sje(1,1,1,iel),sje_new(1,1,1,iel),4*6)
call ncopy(ijel(1,1,iel),ijel_new(1,1,iel),2*6)
call ncopy(cbc(1,iel),cbc_new(1,iel),6)
mt_to_id(iel)=iel
id_to_mt(iel)=iel
tree(iel)=treenew(iel)
end do
c$OMP ENDDO
c$OMP END PARALLEL
return
end