Q ticks

Dloader

sparse

printconfig

help

@echo 不显示echo 


“Android上的bug定位(troubleshooting)
    如果是用户程序Exception或者Dalvik Error Invoking Runtime都会通过AcitivityMangerService发出SIGQUIT信号给process,再调用SignalCatcher.c再把crashed process信息放在/data/anr/traces.txt里面。
    如果是SYSTEM process????或者通过Log.e(TAG,str,trowable)会直接报告exception到logcat里面。
    如果是Dalvik Error, Invoking debuggerd/C code/LibC Error, 会调用Tombstone,然后把信息打印到/data/tombstones目录里面。
    如果是kernel错误,会直接放到/proc/last_kmsg文件(下次重启后会有)
    如果是Modem错误,会直接有/proc/last_amass文件出现(高通平台)”

看core/main.mk


``` %% CNC自组装动力学仿真主程序 clear; clc; close all; %--------------------------- % 仿真参数设置 %--------------------------- Lx = 1000; % x方向模拟区域尺寸(μm) Ly = 1000; % y方向尺寸 Nx = 512; % x方向网格数 Ny = 512; % y方向网格数 dx = Lx/Nx; % 空间步长 dy = Ly/Ny; dt = 0.1; % 时间步长 total_time = 750; % 总模拟时间 steps = total_time/dt; % Landau-de Gennes参数(基于文献《Liquid Crystals》典型值修正) a = -0.5; % 温度相关线性系数 B = 1.0; % 三阶项系数 C = 1.0; % 四阶项系数 L1 = 1.0; % 弹性常数L1 L2 = 0.5; % 手性扭曲耦合系数 p0 = 15; % 手性螺距(μm) np = p0/(2*pi); % 螺距扭曲参数 %--------------------------- % 初始化场量 %--------------------------- % Q张量分量(二维简化表示) Q = struct('xx', zeros(Ny,Nx), 'xy', zeros(Ny,Nx), 'yy', zeros(Ny,Nx)); % 初始各向同性态添加随机扰动 rng(2024); % 固定随机种子保证可重复性 Q.xx = 0.01*(rand(Ny,Nx)-0.5); Q.xy = 0.01*(rand(Ny,Nx)-0.5); Q.yy = -Q.xx; % 无迹条件:Qxx + Qyy = 0 %--------------------------- % 预定义函数句柄 %--------------------------- % 算符定义(修正后的拉普拉斯算子五点差分法) laplacian = @(M) (circshift(M,[0 1]) + circshift(M,[0 -1]) + ... circshift(M,[1 0]) + circshift(M,[-1 0]) -4*M)/(dx^2); % 二维离散拉普拉斯算子 gradientX = @(M) (circshift(M,[0 1]) - circshift(M,[0 -1]))/(2*dx); gradientY = @(M) (circshift(M,[1 0]) - circshift(M,[-1 0]))/(2*dy); %--------------------------- % 时间演化主循环 %--------------------------- for step = 1:steps %=== 计算体自由能导数 === Qnorm = Q.xx.^2 + 2*Q.xy.^2 + Q.yy.^2; % Q:Q A_term = a * (Q.xx + 1i*Q.xy); B_term = B * (Q.xx.^2 - Q.xy.^2 + 1i*(Q.xx.*Q.xy + Q.xy.*Q.yy)); C_term = C * Qnorm .* (Q.xx + 1i*Q.xy); dF_dQ = A_term - B_term + C_term; % 伪势简化形式 %=== 弹性项计算(包含手性扭曲)=== lap_Qxx = laplacian(Q.xx); lap_Qxy = laplacian(Q.xy); elastic_term = L1 * complex(lap_Qxx, lap_Qxy) - ... 1i*L2*np*(gradientX(Q.xy)-gradientY(Q.xx)); %=== 时间推进:显式欧拉 === Q.xx = Q.xx + dt*(real(dF_dQ) + real(elastic_term)); Q.xy = Q.xy + dt*(imag(dF_dQ) + imag(elastic_term)); Q.yy = -Q.xx; % 保持无迹 %=== 周期性边界条件 === Q.xx = applyPeriodicBC(Q.xx); Q.xy = applyPeriodicBC(Q.xy); Q.yy = applyPeriodicBC(Q.yy); %=== 可视化 === if mod(step,50)==0 plotCNCstructure(Q, dx, dy, step*dt); end end %% 边周期性界条件应用函数 function M = applyPeriodicBC(M) M(:,end) = M(:,2); M(:,1) = M(:,end-1); M(end,:) = M(2,:); M(1,:) = M(end-1,:); end %% 结构可视化函数 function plotCNCstructure(Q, dx, dy, currentTime) [X, Y] = meshgrid(0:dx:(size(Q.xx,2)-1)*dx, 0:dy:(size(Q.xx,1)-1)*dy); % 计算主序参数S和取向角度θ S = sqrt(Q.xx.^2 + Q.xy.^2 + Q.yy.^2); theta = 0.5 * atan2(Q.xy, 0.5*(Q.xx - Q.yy)); % 创建HSV颜色映射:色调=θ, 饱和度=1, 值=S hue = (theta + pi)/(2*pi); % 将角度映射到[0,1] value = S/max(S(:)); hsvImg = cat(3, hue, ones(size(S)), value); rgbImg = hsv2rgb(hsvImg); % 矢量场绘制间隔 [m,n] = size(S); stride = 6; xq = 1:stride:n; yq = 1:stride:m; [Xq,Yq] = meshgrid(xq*dx, yq*dy); U = cos(theta(yq,xq)); V = sin(theta(yq,xq)); % 绘制结果 figure(1); clf; imagesc([0, max(X(:))], [0, max(Y(:))], rgbImg); hold on; quiver(Xq, Yq, U, V, 0.5, 'k', 'LineWidth', 1.2); axis equal tight; xlabel('X (μm)'); ylabel('Y (μm)'); title(sprintf('CNC Self-Assembly at t = %.1f s',currentTime)); colorbar('Ticks',[], 'Colormap',hsv, 'Position',[0.92 0.1 0.02 0.8],... 'AxisLocation','in'); drawnow; end```代码在仿真上存在偏差。限定以下约束条件:在y=0和y=1000的边界上取向固定为x轴方向,平面内的各数据点取向也应平行于xz平面,各点取向角度随时间变化至平衡,取值范围应该在-90°~90°,不同角度显以色带图例。请重新输出完整的编程代码结果。
03-12
``` %% CNC自组装动力学仿真主程序(边界条件修正版) clear; clc; close all; %--------------------------- % 仿真参数设置 %--------------------------- Lx = 200; % x方向模拟区域尺寸(μm) Ly = 200; % y方向尺寸 Nx = 16; % x方向网格数 Ny = 128; % y方向网格数 dx = Lx/Nx; % 空间步长 dy = Ly/Ny; dt = 0.1; % 时间步长 total_time = 750; % 总模拟时间 steps = total_time/dt; % Landau-de Gennes参数 a = -0.5; % 温度相关线性系数 B = 1.0; % 三阶项系数 C = 1.0; % 四阶项系数 L1 = 1.0; % 弹性常数L1 L2 = 0.5; % 手性扭曲耦合系数 p0 = 15; % 手性螺距(μm) np = p0/(2*pi); % 螺距扭曲参数 %--------------------------- % 初始化场量 %--------------------------- Q = struct('xx', zeros(Ny,Nx), 'xy', zeros(Ny,Nx), 'yy', zeros(Ny,Nx)); % 初始条件:各向同性态添加随机扰动,并固定y边界 rng(2024); Q.xx = 0.01*(rand(Ny,Nx)-0.5); Q.xy = 0.01*(rand(Ny,Nx)-0.5); Q.yy = -Q.xx; % 固定y边界条件(取向沿x轴) Q.xx(1,:) = 0.01; % y=0边界 Q.xx(end,:) = 0.01; % y=Ly边界 Q.xy(1,:) = 0; Q.xy(end,:) = 0; Q.yy = -Q.xx; %--------------------------- % 预定义微分算子 %--------------------------- laplacian = @(M) (circshift(M,[0 1]) + circshift(M,[0 -1]) + ... circshift(M,[1 0]) + circshift(M,[-1 0]) -4*M)/(dx^2); gradientX = @(M) (circshift(M,[0 1]) - circshift(M,[0 -1]))/(2*dx); gradientY = @(M) (circshift(M,[1 0]) - circshift(M,[-1 0]))/(2*dy); %--------------------------- % 时间演化主循环 %--------------------------- for step = 1:steps %=== 自由能导数计算 === Qnorm = Q.xx.^2 + 2*Q.xy.^2 + Q.yy.^2; dF_dQ = a*(Q.xx+1i*Q.xy) - B*(Q.xx.^2-Q.xy.^2+1i*(Q.xx.*Q.xy+Q.xy.*Q.yy)) + C*Qnorm.*(Q.xx+1i*Q.xy); %=== 弹性项计算 === elastic_term = L1*complex(laplacian(Q.xx), laplacian(Q.xy)) - 1i*L2*np*(gradientX(Q.xy)-gradientY(Q.xx)); %=== 时间推进 === Q.xx = Q.xx + dt*(real(dF_dQ) + real(elastic_term)); Q.xy = Q.xy + dt*(imag(dF_dQ) + imag(elastic_term)); Q.yy = -Q.xx; %=== 边界条件处理 === Q = applyBoundaryConditions(Q, dx, dy); % 应用修正后的边界条件 %=== 可视化 === if mod(step,50)==0 plotCNCstructure(Q, dx, dy, step*dt); end end %% 边界条件处理函数 function Q = applyBoundaryConditions(Q, dx, dy) % x方向周期性边界 Q.xx = applyXPeriodic(Q.xx); Q.xy = applyXPeriodic(Q.xy); Q.yy = applyXPeriodic(Q.yy); % y方向固定边界(取向沿x轴) Q.xx(1,:) = 0.01; % y=0边界 Q.xx(end,:) = 0.01; % y=Ly边界 Q.xy(1,:) = 0; Q.xy(end,:) = 0; Q.yy = -Q.xx; end function M = applyXPeriodic(M) % x方向周期性边界处理 M(:,1) = M(:,end-1); M(:,end) = M(:,2); end %% 增强型可视化函数 function plotCNCstructure(Q, dx, dy, currentTime) [X, Y] = meshgrid(0:dx:(size(Q.xx,2)-1)*dx, 0:dy:(size(Q.xx,1)-1)*dy); % 计算序参数和取向角 S = sqrt(Q.xx.^2 + 2*Q.xy.^2 + Q.yy.^2); theta = 0.5 * atan2(Q.xy, 0.5*(Q.xx - Q.yy)); % 角度范围[-π/2, π/2] % 创建HSV颜色映射 hue = (theta + pi/2)/pi; % 映射到[0,1] value = S/max(S(:)); hsvImg = cat(3, hue, ones(size(S)), value); rgbImg = hsv2rgb(hsvImg); % 矢量场参数 stride = 6; [m,n] = size(S); xq = 1:stride:n; yq = 1:stride:m; [Xq,Yq] = meshgrid(xq*dx, yq*dy); U = cos(theta(yq,xq)); V = sin(theta(yq,xq)); % 绘制主图 figure(1); clf; imagesc([0, max(X(:))], [0, max(Y(:))], rgbImg); hold on; quiver(Xq, Yq, U, V, 0.5, 'k', 'LineWidth', 1.1); axis equal tight; % 坐标轴标注 xlabel('X (μm)'); ylabel('Y (μm)'); title(sprintf('CNC自组装过程 t = %.1f s', currentTime)); % 定制化颜色条 hcb = colorbar('Position',[0.92 0.1 0.02 0.8]); colormap(hsv); hcb.Ticks = 0:0.25:1; hcb.TickLabels = {'-90°','-45°','0°','45°','90°'}; hcb.AxisLocation = 'in'; drawnow; end```此代码平面内一直显黑色,请修改后重新输出
03-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值