⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extrapolate.asv

📁 五点差分型多重网格方法:各种插值算子的比较)
💻 ASV
字号:
%========================================================================
%========================================================================
%EXTRAPOLATE Transfer correction from the coarse grids to the current grid.
%                  2 + 3  -----> 1
%    I used CHEN CHUANMIAO's method in two papers of 2007. 
%              It is stentil of three grids.
%========================================================================
                    
function correct = extrapolate(level, u_c_out,u_c_c_out)

include_flags
include_globals 
extract_globals

%=======designing values in three grids============================ 


nx_f= nx_f +1;
ny_f= ny_f +1;
nx_c = nx_c +1;
ny_c = ny_c +1;
nx_c_c=(nx_c-1)/2 +1;
ny_c_c=nx_c_c; 

cc(1:nx_c_c,1:ny_c_c) =reshape(u_c_c_out,nx_c_c,ny_c_c);
c(1:nx_c,1:ny_c) = reshape(u_c_out,nx_c,ny_c);
f(1:nx_f,1:ny_f)=zeros(nx_f,ny_f);

%==============******extrapolation of MG*****=========================
for j=1:nx_c_c
    for k=1:ny_c_c
        f(4*k-3,4*j-3)=5*c(2*k-1,2*j-1)/4-cc(k,j)*0.25;
    end
end %-------------1,2,3层网格公共点--------------------good :外推
for j=1:nx_c_c-1
    for k=1:ny_c_c
        f(4*k-3,4*j-1)=c(2*k-1,2*j)+(c(2*k-1,2*j-1)-cc(k,j)+c(2*k-1,2*j+1)-cc(k,j+1))*0.125;
    end
end  %------------2层新增加点:东西两端有1层点---------good :外推
for j=1:nx_c_c
    for k=1:ny_c_c-1
        f(4*k-1,4*j-3)=c(2*k,2*j-1)+(c(2*k-1,2*j-1)-cc(k,j)+c(2*k+1,2*j-1)-cc(k+1,j))*0.125;
    end
end    %---------------------  2层新增加点:南北两端有1层点-------------- good :外推
for j=1:nx_c_c-1
    for k=1:ny_c_c-1
        f(4*k-1,4*j-1)=(c(2*k+1,2*j-1)+c(2*k-1,2*j-1)+c(2*k-1,2*j+1)+c(2*k+1,2*j+1))*0.25;
    end
end  %------------------2层其他新增加点:用 bilinear INTERPOLATION-------good    
for j=1:nx_c-1
    for k=1:ny_c
        f(2*k-1,2*j)=0.5*(c(k,j)+c(k,j+1));
    end
end   %---------------3层上有东西2层端点:  linear INTERPOLATION---------------   
for j=1:nx_c
    for k=1:ny_c-1
        f(2*k,2*j-1)=0.5*(c(k,j)+c(k+1,j));
    end
end    %--------------3层上有南北2层端点: linear INTERPOLATION-------------------   
for j=1:nx_c-1
    for k=1:ny_c-1
        f(2*k,2*j)=0.25*(c(k+1,j)+c(k,j+1)+c(k,j)+c(k+1,j+1));
    end
end    %---------3层上其他点:用 bilinear INTERPOLATION----------------------


correct = reshape(f,N_f,1);









⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -