| 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 |