<div dir="ltr">Hi Neks,<div><br></div><div>I manage to solve part of the issue. Now I'm copyng all the variables (vx, vxlag, pr ,prlag, abx1,abx2) at a certain step (let's say istep=10). At istep=20 I replace the variables with the old ones and I call the routines setup_convect to save the new convective velocities. For a simulation with no moving boundaries the procedure works fine.</div>
<div><br></div><div>I tried  to use the same method also for a simulation where I have a moving boundary (forcing the regenation of the jacobians with call geom_reset(1)), but I have correct results  only if I set torder=1. Any hints?</div>
<div><br></div><div>Andrea</div><div><br></div><div><br></div><div><div>subroutine userchk</div><div>      include 'SIZE'</div><div>      include 'TOTAL'</div><div>      include 'RESTART'</div><div>
<br></div><div>      parameter (lt=lx1*ly1*lz1*lelv)</div><div>      common /scrns/ vort(lt,3), w1(lt), w2(lt)</div><div>      common /body/ ycyl,ycylold,vcyl,vcylold,vcylk,vrif</div><div>      </div><div><br></div><div>      real x0(3)</div>
<div>      save x0</div><div>      data x0 /3*0/</div><div>      real scale</div><div>      integer iostept</div><div>      integer maxsotiter</div><div>      common /indici/ indcyl(lx1,ly1,lz1,lelv)</div><div>      common /contatori/ icont,istepold,timeold</div>
<div>      integer icont, istepold,n,npre,firstit</div><div>      common /olddati/ vxo(lx1,ly1,lz1,lelv),vyo(lx1,ly1,lz1,lelv),</div><div>     $     vzo(lx1,ly1,lz1,lelv),xm1o(lx1,ly1,lz1,lelv),</div><div>     $     ym1o(lx1,ly1,lz1,lelv),zm1o(lx1,ly1,lz1,lelv),</div>
<div>     $     vxlago(lx1,ly1,lz1,lelv,2),vylago(lx1,ly1,lz1,lelv,2),</div><div>     $     vzlago(lx1,ly1,lz1,lelv,2)</div><div>     $     , ABX1o   (LX1,LY1,LZ1,LELV)</div><div>     $     , ABY1o   (LX1,LY1,LZ1,LELV)</div>
<div>     $     , ABZ1o   (LX1,LY1,LZ1,LELV)</div><div>     $     , ABX2o   (LX1,LY1,LZ1,LELV)</div><div>     $     , ABY2o   (LX1,LY1,LZ1,LELV)</div><div>     $     , ABZ2o   (LX1,LY1,LZ1,LELV)</div><div>     $     , PRLAGo  (LX2,LY2,LZ2,LELV,LORDER2),pro(lx2,ly2,lz2,lelv)</div>
<div>     $     ,   wxo(lx1m,ly1m,lz1m,lelt),wyo(lx1m,ly1m,lz1m,lelt),</div><div>     $     wzo(lx1m,ly1m,lz1m,lelt)</div><div>     $     ,   WXLAGo (LX1M,LY1M,LZ1M,LELT,LORDER-1)</div><div>     $     ,   WYLAGo (LX1M,LY1M,LZ1M,LELT,LORDER-1)</div>
<div>     $     ,   WZLAGo (LX1M,LY1M,LZ1M,LELT,LORDER-1)</div><div>     $     ,   W1MASKo(LX1M,LY1M,LZ1M,LELT)</div><div>     $     ,   W2MASKo(LX1M,LY1M,LZ1M,LELT)</div><div>     $     ,   W3MASKo(LX1M,LY1M,LZ1M,LELT)</div>
<div>     $     ,   WMULTo (LX1M,LY1M,LZ1M,LELT)</div><div>      real alpha</div><div>      real tollit</div><div>      real errvc</div><div>      integer npcyl</div><div>      </div><div>      if (istep.eq.0) then</div><div>
         call findcyl(indcyl)</div><div>      endif</div><div>      scale=1.</div><div>      call evalYcyl</div><div>      write(6,*) "ycyl=",ycyl</div><div>      n=lx1*ly1*lz1*lelv</div><div>      npre=lx2*ly2*lz2*lelv</div>
<div>      if (istep.eq.10) then</div><div>         call copy_step</div><div>      endif</div><div>      if(istep.eq.20) then</div><div>         call load_step</div><div>      endif</div><div>      </div><div>      call torque_calc(scale,x0,.true.,.false.)</div>
<div>      </div><div>      return</div><div>      end</div><div>      </div><div>c     -------------------------------------------------------------------------</div><div>      subroutine copy_step</div><div>      </div>
<div>      include 'SIZE'</div><div>      include 'TOTAL'</div><div>      include 'RESTART'</div><div>      </div><div>      common /indici/ indcyl(lx1,ly1,lz1,lelv)</div><div>      common /contatori/ icont,istepold,timeold,firstit</div>
<div>      integer icont, istepold,n,npre,firstit</div><div>      common /olddati/ vxo(lx1,ly1,lz1,lelv),vyo(lx1,ly1,lz1,lelv),</div><div>     $     vzo(lx1,ly1,lz1,lelv),xm1o(lx1,ly1,lz1,lelv),</div><div>     $     ym1o(lx1,ly1,lz1,lelv),zm1o(lx1,ly1,lz1,lelv),</div>
<div>     $     vxlago(lx1,ly1,lz1,lelv,2),vylago(lx1,ly1,lz1,lelv,2),</div><div>     $     vzlago(lx1,ly1,lz1,lelv,2)</div><div>     $     , ABX1o   (LX1,LY1,LZ1,LELV)</div><div>     $     , ABY1o   (LX1,LY1,LZ1,LELV)</div>
<div>     $     , ABZ1o   (LX1,LY1,LZ1,LELV)</div><div>     $     , ABX2o   (LX1,LY1,LZ1,LELV)</div><div>     $     , ABY2o   (LX1,LY1,LZ1,LELV)</div><div>     $     , ABZ2o   (LX1,LY1,LZ1,LELV)</div><div>     $     , PRLAGo  (LX2,LY2,LZ2,LELV,LORDER2),pro(lx2,ly2,lz2,lelv)</div>
<div>     $     ,   wxo(lx1m,ly1m,lz1m,lelt),wyo(lx1m,ly1m,lz1m,lelt),</div><div>     $     wzo(lx1m,ly1m,lz1m,lelt)</div><div>     $     ,   WXLAGo (LX1M,LY1M,LZ1M,LELT,LORDER-1)</div><div>     $     ,   WYLAGo (LX1M,LY1M,LZ1M,LELT,LORDER-1)</div>
<div>     $     ,   WZLAGo (LX1M,LY1M,LZ1M,LELT,LORDER-1)</div><div>     $     ,   W1MASKo(LX1M,LY1M,LZ1M,LELT)</div><div>     $     ,   W2MASKo(LX1M,LY1M,LZ1M,LELT)</div><div>     $     ,   W3MASKo(LX1M,LY1M,LZ1M,LELT)</div>
<div>     $     ,   WMULTo (LX1M,LY1M,LZ1M,LELT), fyold</div><div>      </div><div>      n=lx1*ly1*lz1*lelv</div><div>      npre=lx2*ly2*lz2*lelv</div><div>      call opcopy(vxo,vyo,vzo,vx,vy,vz)</div><div>      call opcopy(wxo,wyo,wzo,wx,wy,wz)</div>
<div>      do i=1,lorder-1</div><div>         call opcopy(vxlago(1,1,1,1,i),vylago(1,1,1,1,i),</div><div>     $        vzlago(1,1,1,1,i),vxlag(1,1,1,1,i),vylag(1,1,1,1,i),</div><div>     $        vzlag(1,1,1,1,i))</div><div>
         call opcopy(wxlago(1,1,1,1,i),wylago(1,1,1,1,i),</div><div>     $        wzlago(1,1,1,1,i),wxlag(1,1,1,1,i),wylag(1,1,1,1,i),</div><div>     $        wzlag(1,1,1,1,i))</div><div>      enddo</div><div>      call copy(w1masko,w1mask,n)</div>
<div>      call copy(w2masko,w2mask,n)</div><div>      call copy(w3masko,w3mask,n)</div><div>      call copy(wmulto,wmult,n)</div><div>      call copy(abx1o,abx1,n)</div><div>      call copy(aby1o,aby1,n)</div><div>      call copy(abz1o,abz1,n)</div>
<div>      call copy(abx2o,abx2,n)</div><div>      call copy(aby2o,aby2,n)</div><div>      call copy(abz2o,abz2,n)</div><div>      do i=1,lorder2</div><div>         call copy(prlago(1,1,1,1,i),prlag(1,1,1,1,i),npre)</div>
<div>      enddo</div><div>      call copy(pro,pr,npre)</div><div>      call opcopy(xm1o,ym1o,zm1o,xm1,ym1,zm1)</div><div>      return</div><div>      end</div><div>c--------------------------------------------     </div>
<div>      subroutine load_step</div><div>      include 'SIZE'</div><div>      include 'TOTAL'</div><div>      include 'RESTART'</div><div>      </div><div>      parameter (lt=lx1*ly1*lz1*lelv)</div>
<div>      </div><div>      common /indici/ indcyl(lx1,ly1,lz1,lelv)</div><div>      common /contatori/ icont,istepold,timeold,firstit</div><div>      integer icont, istepold,n,npre,firstit</div><div>      common /olddati/ vxo(lx1,ly1,lz1,lelv),vyo(lx1,ly1,lz1,lelv),</div>
<div>     $     vzo(lx1,ly1,lz1,lelv),xm1o(lx1,ly1,lz1,lelv),</div><div>     $     ym1o(lx1,ly1,lz1,lelv),zm1o(lx1,ly1,lz1,lelv),</div><div>     $     vxlago(lx1,ly1,lz1,lelv,2),vylago(lx1,ly1,lz1,lelv,2),</div><div>     $     vzlago(lx1,ly1,lz1,lelv,2)</div>
<div>     $     , ABX1o   (LX1,LY1,LZ1,LELV)</div><div>     $     , ABY1o   (LX1,LY1,LZ1,LELV)</div><div>     $     , ABZ1o   (LX1,LY1,LZ1,LELV)</div><div>     $     , ABX2o   (LX1,LY1,LZ1,LELV)</div><div>     $     , ABY2o   (LX1,LY1,LZ1,LELV)</div>
<div>     $     , ABZ2o   (LX1,LY1,LZ1,LELV)</div><div>     $     , PRLAGo  (LX2,LY2,LZ2,LELV,LORDER2),pro(lx2,ly2,lz2,lelv)</div><div>     $     ,   wxo(lx1m,ly1m,lz1m,lelt),wyo(lx1m,ly1m,lz1m,lelt),</div><div>     $     wzo(lx1m,ly1m,lz1m,lelt)</div>
<div>     $     ,   WXLAGo (LX1M,LY1M,LZ1M,LELT,LORDER-1)</div><div>     $     ,   WYLAGo (LX1M,LY1M,LZ1M,LELT,LORDER-1)</div><div>     $     ,   WZLAGo (LX1M,LY1M,LZ1M,LELT,LORDER-1)</div><div>     $     ,   W1MASKo(LX1M,LY1M,LZ1M,LELT)</div>
<div>     $     ,   W2MASKo(LX1M,LY1M,LZ1M,LELT)</div><div>     $     ,   W3MASKo(LX1M,LY1M,LZ1M,LELT)</div><div>     $     ,   WMULTo (LX1M,LY1M,LZ1M,LELT), fyold</div><div>      n=lx1*ly1*lz1*lelv</div><div>      npre=lx2*ly2*lz2*lelv</div>
<div>      </div><div>      call opcopy(vx,vy,vz,vxo,vyo,vzo)</div><div>      call opcopy(wx,wy,wz,wxo,wyo,wzo)</div><div>      do i=1,lorder-1</div><div>         call opcopy(vxlag(1,1,1,1,i),vylag(1,1,1,1,i),</div><div>     $        vzlag(1,1,1,1,i),vxlago(1,1,1,1,i),vylago(1,1,1,1,i),</div>
<div>     $        vzlago(1,1,1,1,i))</div><div>         call opcopy(wxlag(1,1,1,1,i),wylag(1,1,1,1,i),</div><div>     $        wzlag(1,1,1,1,i),wxlago(1,1,1,1,i),wylago(1,1,1,1,i),</div><div>     $        wzlago(1,1,1,1,i))</div>
<div>      enddo</div><div>      </div><div>      call copy(abz1,abz1o,n)</div><div>      </div><div>      call copy(abx1,abx1o,n)</div><div>      call copy(aby1,aby1o,n)</div><div>      call copy(abz1,abz1o,n)</div><div>
      call copy(abx2,abx2o,n)</div><div>      call copy(aby2,aby2o,n)</div><div>      call copy(abz2,abz2o,n)</div><div>      call copy(w1mask,w1masko,n)</div><div>      call copy(w2mask,w2masko,n)</div><div>      call copy(w3mask,w3masko,n)</div>
<div>      call copy(wmult,wmulto,n)</div><div>      do i=1,lorder2</div><div>         call copy(prlag(1,1,1,1,i),prlago(1,1,1,1,i),npre)</div><div>      enddo</div><div>      call copy(pr,pro,npre)</div><div>      call opcopy(xm1,ym1,zm1,xm1o,ym1o,zm1o)</div>
<div><br></div><div>      call geom_reset(1)</div><div>      call setup_convect(1)</div><div>      call setup_convect(2)</div><div><br></div><div>c      call setup_convect(3)</div><div><br></div><div>      return</div><div>
      end</div></div></div>