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

📄 display_3d_geometry.m

📁 this a 3d fdtd code using matlab and it can be used as a reference for other structures. Dear sir,
💻 M
字号:

% display voltage sources
if exist('voltage_sources','var')
    for i=1:size(voltage_sources,2)
        obj = voltage_sources(i);
        obj.obj_type = 'voltage_source';
        obj.obj_id = ['Vs_' num2str(i)];
        object_drawing_functions(obj);
    end
end

% display current sources
if exist('current_sources','var')
    for i=1:size(current_sources,2)
        obj = current_sources(i);
        obj.obj_type = 'current_source';
        obj.obj_id = ['Is_' num2str(i)];
        object_drawing_functions(obj);
    end
end

% display resistors
if exist('resistors','var')
    for i=1:size(resistors,2)
        obj = resistors(i);
        obj.obj_type = 'resistor';
        obj.obj_id = ['R_' num2str(i)];
        object_drawing_functions(obj);
    end
end

% display capacitors
if exist('capacitors','var')
    for i=1:size(capacitors,2)
        obj = capacitors(i);
        obj.obj_type = 'capacitor';
        obj.obj_id = ['C_' num2str(i)];
        object_drawing_functions(obj);
    end
end

% display inductors
if exist('inductors','var')
    for i=1:size(inductors,2)
        obj = inductors(i);
        obj.obj_type = 'inductor';
        obj.obj_id = ['L_' num2str(i)];
        object_drawing_functions(obj);
    end
end

% display diodes
if exist('diodes','var')
    for i=1:size(diodes,2)
        obj = diodes(i);
        obj.obj_type = 'diode';
        obj.obj_id = ['D_' num2str(i)];
        object_drawing_functions(obj);
    end
end

% display sampled voltages
if exist('sampled_voltages','var')
    for i=1:size(sampled_voltages,2)
        obj = sampled_voltages(i);
        obj.obj_type = 'sampled_voltage';
        obj.obj_id = ['SV_' num2str(i)];
        object_drawing_functions(obj);
    end
end

% display sampled currents
if exist('sampled_currents','var')
    for i=1:size(sampled_currents,2)
        obj = sampled_currents(i);
        obj.obj_type = 'sampled_current';
        obj.obj_id = ['SC_' num2str(i)];
        object_drawing_functions(obj);
    end
end

% display thin wires
if exist('thin_wires','var')
    for i=1:size(thin_wires,2)
        obj = thin_wires(i);
        obj.obj_type = 'thin_wire';
        obj.obj_id = ['TW_' num2str(i)];
        object_drawing_functions(obj);
    end
end

% display sampled electric fields
if exist('sampled_electric_fields','var')
    for i=1:size(sampled_electric_fields,2)
        obj = sampled_electric_fields(i);
        obj.obj_type = 'sampled_electric_field';
        obj.obj_id = ['sef_' num2str(i)];
        obj.dx = dx; obj.dy = dy; obj.dz = dz;
        object_drawing_functions(obj);
    end
end

% display sampled magnetic fields
if exist('sampled_magnetic_fields','var')
    for i=1:size(sampled_magnetic_fields,2)
        obj = sampled_magnetic_fields(i);
        obj.obj_type = 'sampled_magnetic_field';
        obj.obj_id = ['smf_' num2str(i)];
        obj.dx = dx; obj.dy = dy; obj.dz = dz;
        object_drawing_functions(obj);
    end
end

% draw axes outside the domain
if problem_space_display.axis_outside_domain
    obj.obj_type = 'axis_outside_domain';
    obj.lx = fdtd_domain.min_x;
    obj.ly = fdtd_domain.min_y;
    obj.lz = fdtd_domain.min_z;
    obj.dx = dx; obj.dy = dy; obj.dz = dz;
    object_drawing_functions(obj);
end

% draw axes at the origin
if problem_space_display.axis_at_origin
    obj.obj_type = 'axis_at_origin';
    obj.dx = dx; obj.dy = dy; obj.dz = dz;
    object_drawing_functions(obj);
end

% draw boundaries
if problem_space_display.outer_boundaries
    lx = fdtd_domain.min_x;
    ly = fdtd_domain.min_y;
    lz = fdtd_domain.min_z;
    ux = nx*dx+lx;
    uy = ny*dy+ly;
    uz = nz*dz+lz;
    line([lx lx], [ly ly], [lz uz], 'linewidth', 2, 'color', 'b');
    line([lx lx], [uy uy], [lz uz], 'linewidth', 2, 'color', 'b');
    line([ux ux], [ly ly], [lz uz], 'linewidth', 2, 'color', 'b');
    line([ux ux], [uy uy], [lz uz], 'linewidth', 2, 'color', 'b');
    line([lx lx], [ly uy], [lz lz], 'linewidth', 2, 'color', 'b');
    line([lx lx], [ly uy], [uz uz], 'linewidth', 2, 'color', 'b');
    line([ux ux], [ly uy], [lz lz], 'linewidth', 2, 'color', 'b');
    line([ux ux], [ly uy], [uz uz], 'linewidth', 2, 'color', 'b');
    line([lx ux], [ly ly], [lz lz], 'linewidth', 2, 'color', 'b');
    line([lx ux], [ly ly], [uz uz], 'linewidth', 2, 'color', 'b');
    line([lx ux], [uy uy], [lz lz], 'linewidth', 2, 'color', 'b');
    line([lx ux], [uy uy], [uz uz], 'linewidth', 2, 'color', 'b');
end

% draw cpml boundaries
if problem_space_display.cpml_boundaries
    lx = fdtd_domain.min_x;
    ly = fdtd_domain.min_y;
    lz = fdtd_domain.min_z;
    ux = nx*dx+lx;
    uy = ny*dy+ly;
    uz = nz*dz+lz;
    if strcmp(boundary.type_xn, 'cpml')
        lx = lx + abs(dx * boundary.cpml_number_of_cells_xn);
    end
    if strcmp(boundary.type_yn, 'cpml')
        ly = ly + abs(dy * boundary.cpml_number_of_cells_yn);
    end
    if strcmp(boundary.type_zn, 'cpml')
        lz = lz + abs(dz * boundary.cpml_number_of_cells_zn);
    end
    if strcmp(boundary.type_xp, 'cpml')
        ux = ux - abs(dx * boundary.cpml_number_of_cells_xp);
    end
    if strcmp(boundary.type_yp, 'cpml')
        uy = uy - abs(dy * boundary.cpml_number_of_cells_yp);
    end
    if strcmp(boundary.type_zp, 'cpml')
        uz = uz - abs(dz * boundary.cpml_number_of_cells_zp);
    end
    line([lx lx], [ly ly], [lz uz], 'linewidth', 2, ...
        'color', 'r', 'linestyle', '--');
    line([lx lx], [uy uy], [lz uz], 'linewidth', 2, ...
        'color', 'r', 'linestyle', '--');
    line([ux ux], [ly ly], [lz uz], 'linewidth', 2, 'color', ...
        'r', 'linestyle', '--');
    line([ux ux], [uy uy], [lz uz], 'linewidth', 2, 'color', ...
        'r', 'linestyle', '--');
    line([lx lx], [ly uy], [lz lz], 'linewidth', 2, 'color', ...
        'r', 'linestyle', '--');
    line([lx lx], [ly uy], [uz uz], 'linewidth', 2, 'color', 'r', ...
        'linestyle', '--');
    line([ux ux], [ly uy], [lz lz], 'linewidth', 2, 'color', 'r', ...
        'linestyle', '--');
    line([ux ux], [ly uy], [uz uz], 'linewidth', 2, 'color', 'r', ...
        'linestyle', '--');
    line([lx ux], [ly ly], [lz lz], 'linewidth', 2, 'color', 'r', ...
        'linestyle', '--');
    line([lx ux], [ly ly], [uz uz], 'linewidth', 2, 'color', 'r', ...
        'linestyle', '--');
    line([lx ux], [uy uy], [lz lz], 'linewidth', 2, 'color', 'r', ...
        'linestyle', '--');
    line([lx ux], [uy uy], [uz uz], 'linewidth', 2, 'color', 'r', ...
        'linestyle', '--');
end

% draw grid
lx = fdtd_domain.min_x;
ly = fdtd_domain.min_y;
lz = fdtd_domain.min_z;
ux = nx*dx+lx;
uy = ny*dy+ly;
uz = nz*dz+lz;

cl = [0.5 0.5 0.5];
if problem_space_display.grid_zn
    for i=0:ny
         line([lx ux],[ly+i*dy ly+i*dy], [lz lz],'color',cl,'linewidth',0.5);
    end
    for i=0:nx
         line([lx+i*dx lx+i*dx], [ly uy], [lz lz],'color',cl,'linewidth',0.5);
    end
end
if problem_space_display.grid_zp
    for i=0:ny
         line([lx ux],[ly+i*dy ly+i*dy], [uz uz],'color',cl,'linewidth',0.5);
    end
    for i=0:nx
         line([lx+i*dx lx+i*dx], [ly uy], [uz uz],'color',cl,'linewidth',0.5);
    end
end
if problem_space_display.grid_xn
    for i=0:nz
         line([lx lx],[ly uy],[lz+i*dz lz+i*dz],'color',cl,'linewidth',0.5);
    end
    for i=0:ny
         line([lx lx],[ly+i*dy ly+i*dy], [lz uz],'color',cl,'linewidth',0.5);
    end
end    
if problem_space_display.grid_xp
    for i=0:nz
         line([ux ux],[ly uy],[lz+i*dz lz+i*dz],'color',cl,'linewidth',0.5);
    end
    for i=0:ny
         line([ux ux],[ly+i*dy ly+i*dy], [lz uz],'color',cl,'linewidth',0.5);
    end
end    
if problem_space_display.grid_yp
    for i=0:nx
         line([lx+i*dx lx+i*dx],[uy uy],[lz uz],'color',cl,'linewidth',0.5);
    end
    for i=0:nz
         line([lx ux],[uy uy],[lz+i*dz lz+i*dz],'color',cl,'linewidth',0.5);
    end
end
if problem_space_display.grid_yn
    for i=0:nx
         line([lx+i*dx lx+i*dx],[ly ly],[lz uz],'color',cl,'linewidth',0.5);
    end
    for i=0:nz
         line([lx ux],[ly ly],[lz+i*dz lz+i*dz],'color',cl,'linewidth',0.5);
    end
end

% delete the labels
if ~problem_space_display.labels
    lbls = findobj(gcf,'type','text','-and','-not','edgecolor','none');
    delete(lbls);
end

⌨️ 快捷键说明

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