[m8_6]Two-dimensional transport process with fourth-order Runge_Kutta scheme.

这篇具有很好参考价值的文章主要介绍了[m8_6]Two-dimensional transport process with fourth-order Runge_Kutta scheme.。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

%This program complished the process of 2D Eulerian advection with method
%of allocating memory temporarily.
clear all;clf;
% Set parameters
Nt = 101;
output_interval = 1;
Lx = 500000; 
Ly = 500000;
Nx = 51; 
Ny = 51; 
Nx1 = Nx+1;
Ny1 = Ny+1;
dx = Lx / (Nx-1);
dy = Ly / (Ny-1);
% Basic E-nodes.
x = 0:dx:Lx;
y = 0:dy:Ly;
% Vx staggered nodes.(Nx_node * Ny_node+1)
xvx = 0:dx:Lx;
yvx = -dy/2 : dy : Ly+dy/2;
% Vy staggered nodes.(Nx_node+1 * Ny_node)
xvy = -dx/2 : dx : Lx+dx/2;
yvy = 0:dy:Ly;
% P staggered nodes.(Nx_node+1 * Ny_node+1)
xp = -dx/2 : dx : Lx+dx/2;
yp = -dy/2 : dy : Ly+dy/2;
vx_matrix = zeros(Ny1,Nx1);
vy_matrix = zeros(Ny1,Nx1);
vxp=zeros(Ny1,Nx1); 
vyp=zeros(Ny1,Nx1);
p_matrix = zeros(Ny1,Nx1);
g_y = 10;
ETA = zeros(Ny,Nx);
RHO = zeros(Ny,Nx);
% Amount of markers.
num_per_cell = 4;
Nx_marker = (Nx-1)*num_per_cell;
Ny_marker = (Ny-1)*num_per_cell;
marknum=Nx_marker*Ny_marker;
% Step-length among L-marker points
x_m_step = Lx/Nx_marker;
y_m_step = Ly/Ny_marker;
% Marker points.
xm=zeros(1,marknum); % Horizontal coordinates, m
ym=zeros(1,marknum);
rhom=zeros(1,marknum); % Density, kg/m^3
etam=zeros(1,marknum);
[X,Y] = meshgrid( x_m_step/2:x_m_step:Lx - x_m_step/2 , y_m_step/2:y_m_step:Ly - y_m_step/2 );
vis_marker = zeros(Ny_marker,Nx_marker);
den_marker = zeros(Ny_marker,Nx_marker);
den_plume = 3200;
radius = 100000;
den_mantle = 3300;
x_mid = Lx/2;
y_mid = Ly/2;

x_node = zeros(Ny_marker,Nx_marker);
y_node = zeros(Ny_marker,Nx_marker);

in_node = zeros(Ny+1,Nx+1);
in_vx = zeros(Ny+1,Nx+1);
in_vy = zeros(Ny+1,Nx+1);
in_p = zeros(Ny+1,Nx+1);
vx_markers = zeros(Ny_marker,Nx_marker);
vy_markers = zeros(Ny_marker,Nx_marker);
m = 1;
for jm=1:1:Nx_marker
    for im=1:1:Ny_marker
        % Define marker coordinates
        xm(m)=x_m_step/2+(jm-1)*x_m_step+(rand-0.5)*x_m_step;
        ym(m)=y_m_step/2+(im-1)*y_m_step+(rand-0.5)*y_m_step;
        % Marker properties
        rmark=((xm(m)-x_mid)^2+(ym(m)-y_mid)^2)^0.5;
        if(rmark>radius)
            rhom(m)=3300; % Mantle density
            etam(m)=1e+21; % Mantle viscosity
        else
            rhom(m)=3200; % Plume density
            etam(m)=1e+20; % Plume viscosity
        end
        % Update marker counter
        m=m+1;
    end
end

Kcont = 1e+21/dx;

% Unknown_number is (Ny+1)*(Nx+1)*3
unknown_number = (Nx+1)*(Ny+1)*3;
coe = sparse(unknown_number,unknown_number);
R = zeros(unknown_number, 1);
 
% Boundary condition : free slip = -1 ; no slip = 1
bc_left   = -1;
bc_right  = -1;
bc_top    = -1;
bc_bottom = -1;
dxymax = 0.5;
%  Process of 2D transport
figure(1);
for t = 1:Nt  
    w_m_x_node = zeros(Ny,Nx);
    den_w_m = zeros(Ny,Nx);
    vis_w_m = zeros(Ny,Nx);
    % Interpolate density and viscosity from markers to BASIC NODES.
    % Bisection algorithm
    % Searching the coordinate of upper-left node of every L-marker.
    for m=1:1:marknum
        % Define i,j indexes for the upper left node
        j=fix((xm(m)-x(1))/dx)+1;
        i=fix((ym(m)-y(1))/dy)+1;
        if(j<1)
            j=1;
        elseif(j>Nx-1)
            j=Nx-1;
        end
        if(i<1)
            i=1;
        elseif(i>Ny-1)
            i=Ny-1;
        end
        % Compute distances
        dis_x = xm(m)-x(j);
        dis_y = ym(m)-y(i);
        wtmij = (1-dis_x/dx)*(1-dis_y/dy);
        wtmi1j = (dis_x/dx)*(1-dis_y/dy);
        wtmij1 = (1-dis_x/dx)*(dis_y/dy);
        wtmi1j1 = (dis_x/dx)*(dis_y/dy);
        % |       |
        %     * * * * *   Discard the m-point on the right.
        w_m_x_node(i,j) = w_m_x_node(i,j) + wtmij;
        den_w_m(i,j) = den_w_m(i,j) + rhom(m).*wtmij;
        vis_w_m(i,j) = vis_w_m(i,j) + etam(m).*wtmij;
        
        w_m_x_node(i+1,j) = w_m_x_node(i+1,j) + wtmi1j;
        den_w_m(i+1,j) = den_w_m(i+1,j) + rhom(m).*wtmi1j;
        vis_w_m(i+1,j) = vis_w_m(i+1,j) + etam(m).*wtmi1j;
        
        w_m_x_node(i,j+1) = w_m_x_node(i,j+1) + wtmij1;
        den_w_m(i,j+1) = den_w_m(i,j+1) + rhom(m).*wtmij1;
        vis_w_m(i,j+1) = vis_w_m(i,j+1) + etam(m).*wtmij1;
        
        w_m_x_node(i+1,j+1) = w_m_x_node(i+1,j+1) + wtmi1j1;
        den_w_m(i+1,j+1) = den_w_m(i+1,j+1) + rhom(m).*wtmi1j1;
        vis_w_m(i+1,j+1) = vis_w_m(i+1,j+1) + etam(m).*wtmi1j1;
    end
    % Computing the value of density and viscosity of E-nodes. 
    for j = 1:Nx
        for i = 1:Ny
            if(w_m_x_node(i,j)>0)
                RHO(i,j) = den_w_m(i,j)/w_m_x_node(i,j);
                ETA(i,j) = vis_w_m(i,j)/w_m_x_node(i,j);
            end
        end
    end
    ETAP = zeros(Ny+1,Nx+1);
    % Computing the harmonic density.
    for j = 2:Nx
        for i = 2:Ny
            % Range of var_vis_n is 2:Ny 2:Nx.
            ETAP(i,j) = 1/( (1/ETA(i,j) + 1/ETA(i-1,j) + 1/ETA(i,j-1) + 1/ETA(i-1,j-1) )/4 );
        end
    end
    for j=1:1:Nx1
        for i=1:1:Ny1
            % Define global indexes in algebraic space
            kvx=((j-1)*Ny1+i-1)*3+1; % Vx
            kvy=kvx+1; % Vy
            kpm=kvx+2; % P
            
            % Vx equation External points
            if(i==1 || i==Ny1 || j==1 || j==Nx || j==Nx1)
                % Boundary Condition
                % 1*Vx=0
                coe(kvx,kvx)=1; % Left part
                R(kvx)=0; % Right part
                % Top boundary
                if(i==1 && j>1 && j<Nx)
                    coe(kvx,kvx+3)=bc_top; % Left part
                end
                % Bottom boundary
                if(i==Ny1 && j>1 && j<Nx)
                    coe(kvx,kvx-3)=bc_bottom; % Left part
                end
            else
                % Internal points: x-Stokes eq.
                % ETA*(d2Vx/dx^2+d2Vx/dy^2)-dP/dx=0
                %            Vx2
                %             |
                %        Vy1  |  Vy3
                %             |
                %     Vx1-P1-Vx3-P2-Vx5
                %             |
                %        Vy2  |  Vy4
                %             |
                %            Vx4
                %
                % Viscosity points
                ETA1=ETA(i-1,j);
                ETA2=ETA(i,j);
                ETAP1=ETAP(i,j);
                ETAP2=ETAP(i,j+1);
                % Left part
                coe(kvx,kvx-Ny1*3)=2*ETAP1/dx^2; % Vx1
                coe(kvx,kvx-3)=ETA1/dy^2; % Vx2
                coe(kvx,kvx)=-2*(ETAP1+ETAP2)/dx^2-(ETA1+ETA2)/dy^2; % Vx3
                coe(kvx,kvx+3)=ETA2/dy^2; % Vx4
                coe(kvx,kvx+Ny1*3)=2*ETAP2/dx^2; % Vx5
                coe(kvx,kvy)=-ETA2/dx/dy;  % Vy2
                coe(kvx,kvy+Ny1*3)=ETA2/dx/dy;  % Vy4
                coe(kvx,kvy-3)=ETA1/dx/dy;  % Vy1
                coe(kvx,kvy+Ny1*3-3)=-ETA1/dx/dy;  % Vy3
                coe(kvx,kpm)=Kcont/dx; % P1
                coe(kvx,kpm+Ny1*3)=-Kcont/dx; % P2
                % Right part
                R(kvx)=0;
            end
            
            % Vy equation External points
            if(j==1 || j==Nx1 || i==1 || i==Ny || i==Ny1)
                % Boundary Condition
                % 1*Vy=0
                coe(kvy,kvy)=1; % Left part
                R(kvy)=0; % Right part
                % Left boundary
                if(j==1 && i>1 && i<Ny)
                    coe(kvy,kvy+3*Ny1)=bc_left; % Left part
                end
                % Right boundary
                if(j==Nx1 && i>1 && i<Ny)
                    coe(kvy,kvy-3*Ny1)=bc_right; % Left part
                end
            else
                % Internal points: y-Stokes eq.
                % ETA*(d2Vy/dx^2+d2Vy/dy^2)-dP/dy=-RHO*gy
                %            Vy2
                %             |
                %         Vx1 P1 Vx3
                %             |
                %     Vy1----Vy3----Vy5
                %             |
                %         Vx2 P2 Vx4
                %             |
                %            Vy4
                %
                % Viscosity points
                % Viscosity points
                ETA1=ETA(i,j-1);
                ETA2=ETA(i,j);
                ETAP1=ETAP(i,j);
                ETAP2=ETAP(i+1,j);
                % Left part
                coe(kvy,kvy-Ny1*3)=ETA1/dx^2; % Vy1
                coe(kvy,kvy-3)=2*ETAP1/dy^2; % Vy2
                coe(kvy,kvy)=-2*(ETAP1+ETAP2)/dy^2-...
                    (ETA1+ETA2)/dx^2; % Vy3
                coe(kvy,kvy+3)=2*ETAP2/dy^2; % Vy4
                coe(kvy,kvy+Ny1*3)=ETA2/dx^2; % Vy5
                coe(kvy,kvx)=-ETA2/dx/dy; %Vx3
                coe(kvy,kvx+3)=ETA2/dx/dy; %Vx4
                coe(kvy,kvx-Ny1*3)=ETA1/dx/dy; %Vx1
                coe(kvy,kvx+3-Ny1*3)=-ETA1/dx/dy; %Vx2
                coe(kvy,kpm)=Kcont/dy; % P1
                coe(kvy,kpm+3)=-Kcont/dy; % P2
                
                % Right part
                R(kvy)=-(RHO(i,j-1)+RHO(i,j))/2*g_y;
            end
            
            % P equation External points
            if(i==1 || j==1 || i==Ny1 || j==Nx1 ||...
                    (i==2 && j==2))
                % Boundary Condition
                % 1*P=0
                coe(kpm,kpm)=1; % Left part
                R(kpm)=0; % Right part
                % Real BC
                if(i==2 && j==2)
                    coe(kpm,kpm)=1*Kcont; %Left part
                    R(kpm)=1e+9; % Right part
                end
            else
                % Internal points: continuity eq.
                % dVx/dx+dVy/dy=0
                %            Vy1
                %             |
                %        Vx1--P--Vx2
                %             |
                %            Vy2
                %
                % Left part
                coe(kpm,kvx-Ny1*3)=-1/dx; % Vx1
                coe(kpm,kvx)=1/dx; % Vx2
                coe(kpm,kvy-3)=-1/dy; % Vy1
                coe(kpm,kvy)=1/dy; % Vy2
                % Right part
                R(kpm)=0;
            end
            
        end
    end
    % Computing the solution U:include vx,vy and p
     U = coe \ R;
     
    for j=1:1:Nx1
        for i=1:1:Ny1
            % Define global indexes in algebraic space
            kvx=((j-1)*Ny1+i-1)*3+1; % Vx
            kvy=kvx+1; % Vy
            kpm=kvx+2; % P
            % Reload solution
            vx_matrix(i,j)=U(kvx);
            vy_matrix(i,j)=U(kvy);
            p_matrix(i,j)=U(kpm)*Kcont;
        end
    end
    % Define time steps.
    dt = 1e+36;
    maxvx=max(max(abs(vx_matrix)));
    maxvy=max(max(abs(vy_matrix)));
    if(dt*maxvx>dxymax*dx)
        dt=dxymax*dx/maxvx;
    end
    if(dt*maxvy>dxymax*dy)
        dt=dxymax*dy/maxvy;
    end
    % The classical fourth-order Runge-Kutta scheme.
    % Define Vxa(Vya)1,Vxb(Vyb)2,Vxc(Vyc)3,Vxd(Vyd)4.
    vxm=zeros(4,1);
    vym=zeros(4,1);
    % Interpolate vx and vy components from E-nodes to L-markers.
    for m=1:1:marknum
        % Reserve original coordinate.
        xa = xm(m);
        ya = ym(m);
        for rk = 1:1:4
            % Interpolate vx from Vx-staggered nodes to L-markers.
            % Define i,j indexes for the upper left node
            j=fix((xm(m)-xvx(1))/dx)+1;
            i=fix((ym(m)-yvx(1))/dy)+1;
            if(j<1)
                j=1;
            elseif(j>Nx-1)
                j=Nx-1;
            end
            % Vx staggered nodes.(Nx_node * Ny_node+1)
            if(i<1)
                i=1;
            elseif(i>Ny)
                i=Ny;
            end
            % Compute distances
            dis_x=xm(m)-xvx(j);
            dis_y=ym(m)-yvx(i);
            % Compute weights
            wtmij=(1-dis_x/dx)*(1-dis_y/dy);
            wtmi1j=(dis_x/dx)*(1-dis_y/dy);
            wtmij1=(1-dis_x/dx)*(dis_y/dy);
            wtmi1j1=(dis_x/dx)*(dis_y/dy);
            % Compute vx velocity
            vxm(rk)=vx_matrix(i,j)*wtmij+vx_matrix(i+1,j)*wtmi1j+...
                vx_matrix(i,j+1)*wtmij1+vx_matrix(i+1,j+1)*wtmi1j1;
            
            % Interpolate vy
            % Define i,j indexes for the upper left node
            j=fix((xm(m)-xvy(1))/dx)+1;
            i=fix((ym(m)-yvy(1))/dy)+1;
            if(j<1)
                j=1;
            elseif(j>Nx)
                j=Nx;
            end
            if(i<1)
                i=1;
            elseif(i>Ny-1)
                i=Ny-1;
            end
            % Compute distances
            dis_x=xm(m)-xvy(j);
            dis_y=ym(m)-yvy(i);
            % Compute weights
            wtmij=(1-dis_x/dx)*(1-dis_y/dy);
            wtmi1j=(1-dis_x/dx)*(dis_y/dy);
            wtmij1=(dis_x/dx)*(1-dis_y/dy);
            wtmi1j1=(dis_x/dx)*(dis_y/dy);
            % Compute vx velocity
            vym(rk)=vy_matrix(i,j)*wtmij+vy_matrix(i+1,j)*wtmi1j+...
                vy_matrix(i,j+1)*wtmij1+vy_matrix(i+1,j+1)*wtmi1j1;
            if(rk == 1 || rk == 2)
                xm(m) = vx_matrix(rk)*dt/2 + xa;
                ym(m) = vy_matrix(rk)*dt/2 + ya;
            elseif(rk == 3)
                xm(m) = vx_matrix(rk)*dt + xa;
                ym(m) = vy_matrix(rk)*dt + ya;
            end
        end
        % Return original coordinate.
        xm(m) = xa;
        ym(m) = ya;
        % Move markers
        vxefft = (1/6)*(vxm(1)+2*vxm(2)+2*vxm(3)+vxm(4));
        vyefft = (1/6)*(vym(1)+2*vym(2)+2*vym(3)+vym(4));        
        xm(m)=xm(m)+dt*vxefft;
        ym(m)=ym(m)+dt*vyefft;
    end
    figure(1);
    colormap('Jet');clf
    pcolor(x,y,log10(ETA));
    xlabel('Horizontal(m)')
    ylabel('Vertical(m)')
    caxis([17 21]);
    set(gca,'xaxislocation','top');
    set (gca,'YDir','reverse')
    shading interp;
%     axis ij image;
    colorbar
    title(['log10(ETA) after ',num2str(t-1),' deltat'])
    pause(0.01);
end

[m8_6]Two-dimensional transport process with fourth-order Runge_Kutta scheme.,interpolation,2D-stokes,Eulerian advect,Runge_kutta,foutrh-order

 [m8_6]Two-dimensional transport process with fourth-order Runge_Kutta scheme.,interpolation,2D-stokes,Eulerian advect,Runge_kutta,foutrh-order

 [m8_6]Two-dimensional transport process with fourth-order Runge_Kutta scheme.,interpolation,2D-stokes,Eulerian advect,Runge_kutta,foutrh-order

 [m8_6]Two-dimensional transport process with fourth-order Runge_Kutta scheme.,interpolation,2D-stokes,Eulerian advect,Runge_kutta,foutrh-order文章来源地址https://www.toymoban.com/news/detail-669102.html

到了这里,关于[m8_6]Two-dimensional transport process with fourth-order Runge_Kutta scheme.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Hive beeline客户端启动报错Could not open client transport with JDBC Uri: jdbc:hive2://hadoop101:10000: Fail

    Hive beeline客户端启动报错Could not open client transport with JDBC Uri: jdbc:hive2://hadoop101:10000: Fail

    在安装hive的时候,启动hiveserver2后,启动beeline客户端报错如下: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop101:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate

    2024年02月11日
    浏览(12)
  • Stream Processing with Apache Storm and Hadoop

    大数据时代,实时数据处理成为了企业和组织的关注之一。随着互联网的发展,数据量越来越大,传统的批处理方式无法满足实时需求。因此,流处理技术逐渐成为了关注的焦点。 Apache Storm是一个开源的流处理系统,可以处理大量实时数据。它具有高吞吐量、低延迟和可扩展

    2024年04月17日
    浏览(11)
  • Introduction to Natural Language Processing with NLTK

    作者:禅与计算机程序设计艺术 : Natural language processing (NLP) is a subfield of computer science that focuses on the interaction between machines and human languages. It involves building computational models that can understand and manipulate textual data in various ways. The aim of this article is to provide an overview of natural languag

    2024年02月08日
    浏览(11)
  • WSL: Processing fstab with mount -a failed.

    WSL: Processing fstab with mount -a failed.

    win 控制台输入 wsl , 报 Processing fstab with mount -a failed. windows 下wsl 启动不了_wsl无法启动-CSDN博客 检查映像以查看是否有检测到损坏: Dism /Online /Cleanup-Image /CheckHealth 扫描系统文件并和官方系统文件对比: Dism /Online /Cleanup-Image /ScanHealth wsl --shutdown 但是....重启后还是报错 参考:

    2024年02月04日
    浏览(11)
  • Pycharm jupyter server process exited with code 1

    使用 Pycharm 启动 Jupyter 时,报错如下, Pycharm 启动 jupyter 时,默认的 arguments 是 notebook --no-browser ,因为我只安装了 jupyterlab,并没有安装 juypter notebook,所以报错。 解决方法,将 notebook --no-browser ,修改为, 就解决了。 完结!

    2024年04月16日
    浏览(10)
  • Build Word Processing Apps with ASP.NET Core 8

    Build Word Processing Apps with ASP.NET Core 8

    TX Text Control .NET Server for ASP.NET supports .NET 8 in ASP.NET Core applications. TX Text Control .NET Server for ASP.NET is a comprehensive server-side document processing library for ASP.NET and ASP.NET Core. Features include PDF processing, electronic signatures, file conversion, and reporting / mail merge. It supports client-side frameworks such as J

    2024年02月02日
    浏览(26)
  • [Bug]Process finished with exit code -1073741819 (0xC0000005)

    环境:Windows, Tensorflow 2.0 + python 3.6 同样的一套代码, 在之前的数据集上运行无误,换了个新的数据集进行实验,结果在读取数据训练的时候报错然后程序自动终止: 错误信息: Process finished with exit code -1073741819 (0xC0000005) 通过调试定位错误的代码位置如下: 确认train_data是没

    2024年02月14日
    浏览(14)
  • SpringBoot 项目启动后直接退出:Process finished with exit code 0

    在创建springcloud项目后,新建一个springboot服务的时候,启动项目没有任何报错。但是,项目一启动后就退出了:Process finished with exit code 0,(程序执行完成)没有监听端口就退出了。 exit code 0 表示程序执行成功,正常退出 exit code 1 表示程序执行执行过程中遇到了某些问题或者错

    2024年02月14日
    浏览(20)
  • 解决【spring boot】Process finished with exit code 0的问题

    解决【spring boot】Process finished with exit code 0的问题

    今天从https://start.spring.io下载配置好的 spring boot 项目: 启动后却报出如下错误: 即 Process finished with exit code 0 Process finished with exit code 0 翻译成中文 进程已完成,退出代码为 0 。 我们再次细看上图中的日志信息: 我们注意看这句话: Started DemoApplication in 0.875 seconds (JVM runni

    2024年02月06日
    浏览(16)
  • 运行显示“process finished with exit code 0”的解决办法(pycharm)

    运行显示“process finished with exit code 0”的解决办法(pycharm)

    问题发现: 1.首先我们打开一个.py文件,运行,显示Process finished with exit code 0 解决办法: 1.我们首先需要打开 preferences  2.其次我们找到tool目录下的,python integrated tools  3.将Autodetect修改为pytest  4.将reStructureText改为Plain  5.⚠️重启pycharm,再运行所要运行的程序,就OK啦

    2024年02月11日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包