typical mesh generation and surf plot ?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Jinsoo
le 16 Fév 2017
Réponse apportée : Ed Marquez
le 21 Fév 2017
Hello. I'd like to ask you how can I make the typical mesh and its 3D figure in the following code:
clc; clear; close all;
tic;
h0 = 1.0;
g = 20;
a1 = 1; % dimensionless amplitude
a2 = 0.1; % dimensionless amplitude
c0 = sqrt(g*h0); % dimensional velocity
v1 = sqrt( 1 + 2*a1/3);
P1 = 2*a1*h0/3;
Q1 = sqrt(a1/2)/(v1*h0);
R1 = v1*sqrt(g*h0);
%
x1 = 0; % initial position
beta = 0.1;
it_M = 21;
ep = 16;
%%Domain
% x domain
x_max = 20; x_min = -10;
% x = (x_min:0.5: )
N1 = 61;
x = linspace(x_min,x_max, N1)';
dx = x(2) - x(1);
% t domain
t_max = 1; N2 = 11;
t = linspace(0, t_max, N2)';
dt = t(2) - t(1);
% k domain
k_max = 2; N3 = 201;
k = linspace(0, k_max, N3)'*pi;
dk = k(2) - k(1);
% omega
ga = sqrt( (c0^2*k.^2 + beta)./(1+h0^2*k.^2/3) );
%%linear solution
u_con = zeros(N1, N2);
for n2 = 1:N2
u_con(:, n2) = P1*(sech(Q1*(x - R1*t(n2) - x1))).^2 ;
end
figure;
surf(x, t, u_con', 'linestyle', 'none')
xlabel('$x$', 'Interpreter', 'latex', 'fontsize', 18)
ylabel('$t$', 'Interpreter', 'latex', 'fontsize', 18)
zlabel('$\eta_{linear}$', 'Interpreter', 'latex', 'fontsize', 18)
axis tight
view(-10, 70)
set(gca,'fontsize', 18,'FontName','times')
R1 = -5; R2 = 5;
dxo = 0.5; dxn = 0.1;
xnew = [x_min:dxo:R1, R1+dxn:dxn: R2, R2+dxo:dxo:x_max]';
eta1n = P1*(sech(Q1*(xnew - x1))).^2; % soliton
eta2n = 2*P1*Q1*R1*(sech(Q1*(xnew - x1))).^2.*tanh(Q1*(xnew - x1));
figure;
plot(xnew, eta1n, 'k*-', 'markersize', 3)
hold on
plot(xnew, eta2n, 'ro-', 'markersize', 3)
hold on
xlabel('$x$', 'Interpreter', 'latex', 'fontsize', 18)
ylabel('$\eta_2$', 'Interpreter', 'latex', 'fontsize', 18)
axis tight
% ylim([-0.1 0.1])
set(gca,'fontsize', 18,'FontName','times')
N1n = (R1 - x_min)/dxo + (R2 - R1)/dxn + (x_max - R2)/dxo + 1;
u_new = zeros(N1n, N2);
x_ax = u_new;
R1 = -5; R2 = 5;
dxo = 0.5; dxn = 0.1;
for n2 = 1:N2
x_ax(:, n2) = [x_min:dxo:R1 + 5*dt*(n2-1), R1+5*dt*(n2-1)+dxn:dxn: R2+5*dt*(n2-1), ...
R2+dxo+5*dt*(n2-1):dxo:x_max]';
u_new(:, n2) = P1*(sech(Q1*(x_ax(:, n2) - R1*t(n2) - x1))).^2 ;
end
If you process it you can find a soliton which looks likes a bell. I want to make the mesh as attached figure. That is, in the region [R1, R2], the mesh is finer than that of outside one and it moves according to the moving solitary wave. I want to concentrate only on the significant region.
I hope to plot it as Figure 1 however I can't, so I hope you help me to improve it. I'm looking forward to hearing from you..^^
0 commentaires
Réponse acceptée
Ed Marquez
le 21 Fév 2017
Hey,
I am assuming you are using MATLAB R2016b. The simplest way to quickly try several plotting options would be to do the following:
1. Redefine the transpose of u_con:
u_con2 = u_con';
2. In the workspace, simultaneously select the variables x, t, and u_con2 in that order (while holding the CTRL key).
3. Go to the PLOTS tab and try the plot that best meets your needs. You can also customize the appearance of the mesh plot by specifying property-value pairs.
https://www.mathworks.com/help/releases/R2016b/matlab/ref/chartsurface-properties.html
4. In addition, you can check the documentation of the mesh (or any other) plot function:
https://www.mathworks.com/help/releases/R2016b/matlab/creating_plots/types-of-matlab-plots.html
I think this will help you customize your mesh plot.
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Surface and Mesh Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!