利用MATLAB绘图(4)--各种磁结构(畴壁,斯格明子,磁半子)

总测试函数—生成对应绘图结构D

D1 = Domainwall(11,11,1,-1);
D2 = Domainwall(11,11,2,-1);
D3 = Domainwall(11,11,3,-1);
D4 = Domainwall(11,11,4,-1);

然后依次运行
Arrow002(D1)
Arrow002(D2)
Arrow002(D3)
Arrow002(D4)
即可得到不同类型畴壁示意图

面外磁畴里的Neel型畴壁

DW1

面内磁畴里的Bloch畴壁

在这里插入图片描述

面内磁畴里的Neel畴壁

在这里插入图片描述

面外磁畴里的Bloch畴壁

在这里插入图片描述

生成不同类型畴壁函数—domainwall()

function [D] = Domainwall(m,n,domainwall_type,c)
%% m,n ~ length,width (m>4)
%% c ~ chirality 
% -1 ~ Left-handed 
% +1 ~ Right-handed
%% domainwall_type
% 1 ~ Neel-DW in OOP domain
% 2 ~ Neel-OOP-DW in IP domain
% 3 ~ Neel-IP-DW in IP domain
% 4 ~ Bloch-DW in OOP domain
%% Three columns in center are DW

xx = (-m/2+1/2):(m/2-1/2);
yy = (-n/2+1/2):(n/2-1/2);
[xa,ya] = meshgrid(xx,yy);
D.X = xa;
D.Y = -ya;
D.Z = zeros(n,m);
D.U = zeros(n,m);
D.V = zeros(n,m);
D.W = zeros(n,m);
if mod(m,2) == 0
    m = m+1;
end
i = (m+1)/2;

switch domainwall_type
    case 1
        if c == -1
            D.U(:,i) = -1;
            D.U(:,i+1) = -sqrt(2)/2;
            D.U(:,i-1) = -sqrt(2)/2;
        elseif c ==1
            D.U(:,i) = 1;
            D.U(:,i+1) = sqrt(2)/2;
            D.U(:,i-1) = sqrt(2)/2;
        end

        for j = 1:i-2
            D.W(:,j) = 1;
        end

        D.W(:,i-1) = sqrt(2)/2;
        D.W(:,i)   = 0;
        D.W(:,i+1) = -sqrt(2)/2;

        for j = i+2:m
            D.W(:,j) = -1;
        end

    case 2
        i = (m+1)/2;

        D.U(:,i-1) = sqrt(2)/2;
        D.U(:,i) = 0;
        D.U(:,i+1) = -sqrt(2)/2;

        for j = 1:i-2
            D.U(:,j) = +1;
        end

        if c == -1
            D.W(:,i-1) = sqrt(2)/2;
            D.W(:,i)   = 1;
            D.W(:,i+1) = sqrt(2)/2;
        elseif c == 1
            D.W(:,i-1) = -sqrt(2)/2;
            D.W(:,i)   = -1;
            D.W(:,i+1) = -sqrt(2)/2;
        end

        for j = i+2:m
            D.U(:,j) = -1;
        end

    case 3
        D.U(:,i-1) = sqrt(2)/2;
        D.U(:,i) = 0;
        D.U(:,i+1) = -sqrt(2)/2;

        for j = 1:i-2
            D.U(:,j) = +1;
        end

        if c == -1
            D.V(:,i-1) = sqrt(2)/2;
            D.V(:,i)   = 1;
            D.V(:,i+1) = sqrt(2)/2;
        elseif c == 1
            D.V(:,i-1) = -sqrt(2)/2;
            D.V(:,i)   = -1;
            D.V(:,i+1) = -sqrt(2)/2;
        end

        for j = i+2:m
            D.U(:,j) = -1;
        end

    case 4
        if c == -1
            D.V(:,i) = -1;
            D.V(:,i+1) = -sqrt(2)/2;
            D.V(:,i-1) = -sqrt(2)/2;
        elseif c ==1
            D.V(:,i) = 1;
            D.V(:,i+1) = sqrt(2)/2;
            D.V(:,i-1) = sqrt(2)/2;
        end

        for j = 1:i-2
            D.W(:,j) = 1;
        end

        D.W(:,i-1) = sqrt(2)/2;
        D.W(:,i)   = 0;
        D.W(:,i+1) = -sqrt(2)/2;

        for j = i+2:m
            D.W(:,j) = -1;
        end
end

end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NBb-666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值