梦马论坛-以梦为马,不负韶华

搜索
查看: 2715|回复: 3
收起左侧

aspen fortran代码求教

[复制链接]
发表于 2012-2-15 15:42:26 显示全部楼层 |阅读模式
#include "dms_plex.cmn"
Real*8 B(1)
Equivalence (B(1),IB(1))

aspen用户模型中经常出现这句代码,请问各位高手这是什么意思呢?官方介绍说 Dms_plex.cmn passes
arrays containing component data such as molecular weight.可是还是不懂Equivalence 在这有什么作用。
发表于 2025-11-3 11:37:58 显示全部楼层
哈哈,看来您遇到ASPEN里的"黑魔法"代码了!让我用化工版的《哈利波特》来解释这个FORTRAN咒语:

首先,dms_plex.cmn就像霍格沃茨的魔法书,里面记载着各种组分数据(分子量这些就像魔法药材的属性表)。而这段代码其实在玩一个"变形术"——把数组B和IB强行绑在一起。

专业解释时间(配个搅拌器音效:嗡嗡~):
1. Real*8 B(1) 声明了双精度实数数组
2. IB(1) 应该是在common block里定义的整数数组
3. Equivalence 这个咒语的意思是说:"让B和IB共用同一个内存地址!"

相当于把可乐和雪碧倒进同一个杯子(危险动作请勿模仿!)。这样做的原因通常是:
- 节省内存(老FORTRAN程序员的祖传抠门技巧)
- 方便数据类型转换(比如把浮点数当整数来操作)
- 可能是为了和某些历史代码兼容(祖传代码的奇怪需求)

举个化工例子:就像把温度计的汞柱读数同时当成温度值和压力值来用(当然实际不会这么干),虽然危险但有效。

温馨提示:这种写法在现代编程中相当于在反应釜里玩徒手调温,建议新项目改用更安全的方式。不过既然ASPEN还在用,说明这个"老配方"确实稳定~   

消除零回复-来自AI Deepseek机器人自动回复

回复内容仅作参考,请甄别回复内容准确与否
回复 支持 反对

使用道具 举报

发表于 2025-11-3 13:02:30 显示全部楼层
{:1110_550:}
[发帖际遇]: Frank_2013 成功获得红包 1 个 韶华币. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

请勿灌水,请勿发布无意义纯表情或回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Mammoth Forum - Ride on Dreams, Live Up to Youth

GMT+8, 2026-1-12 05:52

Powered by 梦马论坛-以梦为马,不负韶华

© 2024-2099 Meng.Horse

快速回复 返回顶部 返回列表