layers_from_handle

本文介绍了一种基于面网格的分层算法,该算法能够从已知的顶点集合中找出不同层次的顶点环,并区分内外区域。输入包括顶点数量、面索引列表及手柄内的顶点索引列表等,输出则包含了各层次顶点的索引列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function [Omega,N0,N1,N2,outside_region_of_interest ] = ...
  layers_from_handle( ...
    vertex_count, ...
    F, ...
    H)
  % Given a Face index list and list of vertex indices in a handle (can be
  % disjoint), and number of vertices
  % this function finds the ring or vertices 0, 1, and 2
  % edges into the handle 
  %
  % Input:
  %  vertex_count: number of vertices
  %  F: face index list
  %  H: vertex indices list of vertices in handle
  %
  % Ouput:
  %  Omega: vertex indices list of vertices outside of handle (interior)
  %  N0: vertex indices list of vertices on ring 0 edges into handle
  %  N1: vertex indices list of vertices on ring 1 edges into handle
  %  N2: vertex indices list of vertices on ring 2 edges into handle
  %  outside_region_of_interest: vertex indices list of vertices too far inside
  %                              handle
  %  Omega_1: vertex indices list of vertices one edge into the interior (Omega)
  %
  %
  % See corresponding paper: "Mixed finite elements for variational surface
  % modeling" by Alec Jacobson, Elif Tosun, Olga Sorkine, and Denis Zorin, SGP
  % 2010
  %
  % Copyright 2010, Alec Jacobson, NYU
  %

  % omega is simply the whole list minus the handle
  Omega = 1:vertex_count;
  Omega = Omega(~ismember(Omega,H));


  % must have at least vertex in handle and one in Omega
  % interior_faces = F(...
  %   (ismember(F(:,1),H)     & ismember(F(:,2),Omega) & ismember(F(:,3),Omega)) | ...
  %   (ismember(F(:,1),Omega) & ismember(F(:,2),H)     & ismember(F(:,3),Omega)) | ...
  %   (ismember(F(:,1),Omega) & ismember(F(:,2),Omega) & ismember(F(:,3),H)) | ...
  %   (ismember(F(:,1),H)     & ismember(F(:,2),H)     & ismember(F(:,3),Omega)) | ...
  %   (ismember(F(:,1),Omega) & ismember(F(:,2),H)     & ismember(F(:,3),H)) | ...
  %   (ismember(F(:,1),H)     & ismember(F(:,2),Omega) & ismember(F(:,3),H)) ...
  %   ,:);
  % Omega_1 = intersect(Omega,interior_faces(:));

  % Two sets that will grow and shrink as we discover the next layer
  shrinking_handle = H;
  growing_interior = Omega;

  % C = intersect(A,B,'rows')
  % Define two matrices with rows in common
  
  interior_faces = intersect(F,F.*ismember(F,growing_interior),'rows');
  %F的三个索引要全在growing_interior才行
  handle_faces = intersect(F,F.*~ismember(F,growing_interior),'rows');
  %F的三个索引要都不在growing_interior才行
  H0 = setdiff(F,union(handle_faces,interior_faces,'rows'),'rows');
  N0 = intersect(shrinking_handle,reshape(H0,1,size(H0,1)*size(H0,2)));
  growing_interior = [growing_interior N0];
  shrinking_handle = setdiff(shrinking_handle,N0);

  interior_faces = intersect(F,F.*ismember(F,growing_interior),'rows');
  handle_faces = intersect(F,F.*~ismember(F,growing_interior),'rows');
  H1 = setdiff(F,union(handle_faces,interior_faces,'rows'),'rows');
  N1 = intersect(shrinking_handle,reshape(H1,1,size(H1,1)*size(H1,2)));
  growing_interior = [growing_interior N1];
  shrinking_handle = setdiff(shrinking_handle,N1);

  interior_faces = intersect(F,F.*ismember(F,growing_interior),'rows');
  handle_faces = intersect(F,F.*~ismember(F,growing_interior),'rows');
  H2 = setdiff(F,union(handle_faces,interior_faces,'rows'),'rows');
  N2 = intersect(shrinking_handle,reshape(H2,1,size(H2,1)*size(H2,2)));
  growing_interior = [growing_interior N2];
  shrinking_handle = setdiff(shrinking_handle,N2);

  region_of_interest = growing_interior;
  outside_region_of_interest = shrinking_handle;

end




interior_faces 为黄色区域

handle_face为绿色区域

H0为白色区域

N0 为红点

growing_interior 为蓝圈

shrinking_handle 为黑圈


  第一步变换过后↓





内容概要:本文详细介绍了如何使用Matlab对地表水源热泵系统进行建模,并采用粒子群算法来优化每小时的制冷量和制热量。首先,文章解释了地表水源热泵的工作原理及其重要性,随后展示了如何设定基本参数并构建热泵机组的基础模型。接着,文章深入探讨了粒子群算法的具体实现步骤,包括参数设置、粒子初始化、适应度评估以及粒子位置和速度的更新规则。为了确保优化的有效性和实用性,文中还讨论了如何处理实际应用中的约束条件,如设备的最大能力和制冷/制热模式之间的互斥关系。此外,作者分享了一些实用技巧,例如引入混合优化方法以加快收敛速度,以及在目标函数中加入额外的惩罚项来减少不必要的模式切换。最终,通过对优化结果的可视化分析,验证了所提出的方法能够显著降低能耗并提高系统的运行效率。 适用人群:从事暖通空调系统设计、优化及相关领域的工程师和技术人员,尤其是那些希望深入了解地表水源热泵系统特性和优化方法的专业人士。 使用场景及目标:适用于需要对地表水源热泵系统进行精确建模和优化的情景,旨在找到既满足建筑负荷需求又能使机组运行在最高效率点的制冷/制热量组合。主要目标是在保证室内舒适度的前提下,最大限度地节约能源并延长设备使用寿命。 其他说明:文中提供的Matlab代码片段可以帮助读者更好地理解和复现整个建模和优化过程。同时,作者强调了在实际工程项目中灵活调整相关参数的重要性,以便获得更好的优化效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值