def_cons.cpp

  name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-5572165936844014&dt=1194442938015&lmt=1194190197&format=336x280_as&output=html&correlator=1194442937843&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2Flhh1%2F%E6%A1%8C%E9%9D%A2%2FCLanguage.htm&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=FFFFFF&color_border=FFFFFF&ad_type=text&ga_vid=583001034.1194442938&ga_sid=1194442938&ga_hid=1942779085&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> #include <iostream.h>
#include <iomanip.h>

class MagicNumbers
{
 public:
   MagicNumbers(int a = 1, int b = 2, int c = 3)
     {
        MagicNumbers::a = a;
        MagicNumbers::b = b;
        MagicNumbers::c = c;
     };
   void show_numbers(void)
     {
       cout << a << ' ' << b << ' '<< c << '/n'; };
 private:
   int a, b, c;
};

void main(void)
 {
   MagicNumbers one(1, 1, 1);
   MagicNumbers defaults;
   MagicNumbers happy(101, 101, 101);

   one.show_numbers();
   defaults.show_numbers();
   happy.show_numbers();
 }

 

 


这段代码的主要作用是将全局解(`self.sol_prim_full` 和 `self.sol_cons_full`)中的某些特定部分提取出来,并赋值给左侧 (`sol_left`) 和右侧 (`sol_right`) 的局部变量中。下面逐行进行详细解释: --- ### 第一行: ```python self.sol_left.sol_prim[:, :] = self.sol_prim_full[:, self.flux_samp_left_idxs] ``` 1. **左边:** - `self.sol_left.sol_prim[:, :]` 表示对对象 `self.sol_left` 中的属性 `sol_prim` 进行切片操作。 - `[:, :]` 意味着选取整个二维数组的所有元素。 2. **右边:** - `self.sol_prim_full` 是一个完整的原始物理量矩阵。 - `self.flux_samp_left_idxs` 应该是一个索引列表或数组,指定了需要从 `self.sol_prim_full` 提取的部分列数据。 - 结合起来,这一步是从 `self.sol_prim_full` 中按照指定的列索引(由 `self.flux_samp_left_idxs` 定义),提取出对应的数据,并将其赋值到 `self.sol_left.sol_prim` 中。 3. **总结:** 将与左边界相关的列数据从完整解空间复制到了左边界对应的原始物理量存储区域。 --- ### 第二行: ```python self.sol_left.sol_cons[:, :] = self.sol_cons_full[:, self.flux_samp_left_idxs] ``` 1. **左边:** - 类似于第一行,这里是对 `self.sol_left` 对象中的另一个属性 `sol_cons` 进行更新。 - `[:, :]` 同样表示选择所有行列。 2. **右边:** - `self.sol_cons_full` 也是一个完整的保守物理量矩阵。 - 再次通过 `self.flux_samp_left_idxs` 索引,提取相应的列数据并赋值。 3. **总结:** 将与左边界相关的列数据从完整守恒形式的空间复制到了左边界对应的保守物理量存储区域。 --- ### 第三行: ```python self.sol_right.sol_prim[:, :] = self.sol_prim_full[:, self.flux_samp_right_idxs] ``` 1. **左边:** - 针对的是右边界相关联的对象 `self.sol_right` 中的属性 `sol_prim`。 2. **右边:** - 使用了不同的索引集合 `self.flux_samp_right_idxs` 来定义哪些列属于右边界的数据。 - 其余逻辑和前面两行类似。 3. **总结:** 把涉及右边界的相关列数据从整体物理量矩阵里拷贝过来存入右边界对应的原始物理量字段内。 --- ### 第四行: ```python self.sol_right.sol_cons[:, :] = self.sol_cons_full[:, self.flux_samp_right_idxs] ``` 1. **左边:** - 更新右边界关联对象 `self.sol_right` 的另一属性 `sol_cons`。 2. **右边:** - 基于同样的 `self.flux_samp_right_idxs` 列表来定位应该抽取哪几列作为右边界用的保守物理量信息。 3. **总结:** 实现了从全局守恒格式向局部边界的传递过程。 --- ### 总结 - 上述代码的核心功能可以理解为“分区处理”——根据预设好的左右侧采样子集索引(`flux_samp_left_idxs`, `flux_samp_right_idxs`)分别获取各自的初始状态用于后续计算如数值通量等步骤。 - 此外还可以看出它遵循了一个通用模式即同时维护两个版本的状态(prim、cons)以适应不同需求下的求解算法设计要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值