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