Skip to content

New way of transferring air between zones.#1

Open
Kreastr wants to merge 1 commit into
SS13:masterfrom
Kreastr:master
Open

New way of transferring air between zones.#1
Kreastr wants to merge 1 commit into
SS13:masterfrom
Kreastr:master

Conversation

@Kreastr

@Kreastr Kreastr commented Dec 10, 2012

Copy link
Copy Markdown

Now every zone can trigger group sharing. In group sharing the gases and temperatures are transfered based on average between all connected zones avoiding "slow transfer through bottlenecks" and processing order problems. The speed of transfer decays with total volume of connected zones.

The old way is kept to generate pressure differences for airflows.

Now every zone can trigger group sharing. In group sharing the gases and temperatures are transfered based on average between all connected zones avoiding "slow transfer through bottlenecks" and processing order problems. The speed of transfer decays with total volume of connected zones.

The old way is kept to generate pressure differences for airflows.
@elkrieg

elkrieg commented Jan 6, 2013

Copy link
Copy Markdown
Contributor

Тоже писал подобную штуку, только она уравнивала в группе зон, когда разница показателей была меньше определённого порога.

@elkrieg

elkrieg commented Jan 6, 2013

Copy link
Copy Markdown
Contributor

Поясни один момент, как твой код будет реагировать, если у нас будет 2 разных разгерметизации в 2 кусках станции? он будет уравнивать 2 не связанных друг с другом кластера?

@elkrieg

elkrieg commented Jan 6, 2013

Copy link
Copy Markdown
Contributor

а, кластер состоит только из зоны и зон, которые к ней законнекчены? маленький кластер. Не увидел, чтобы для зон в кластере sharerequired обнулялось, ты уверен, что это не даст кучу лишний расчётов для одних и тех же зон в одном цикле?

@Kreastr

Kreastr commented Jan 6, 2013

Copy link
Copy Markdown
Author
  1. Кластер собирается из зон, которые связаны друг с другом через открытые проходы. Соответственно, если есть 2 разгермы, но между ними стена или закрытый шлюз, то это будет 2 кластера.
  • 154 + for (var/zone/Z in Cluster)
  • 155 + ShareRequired = 0
  • 156 + Z.air.update_values()

@elkrieg

elkrieg commented Jan 7, 2013

Copy link
Copy Markdown
Contributor

не пойму, как этим кодом свяжутся 4 сектора коридора, идущие друг за другом

@elkrieg

elkrieg commented Jan 7, 2013

Copy link
Copy Markdown
Contributor

и, насколько я понял, старый механизм переноса газа остаётся, и тоже проводит вычисления, плюс ещё и эта штука с кластерами, которая никак не стабилизирует, а тоже устраивает это жуткое бесконечное ассимптотическое стремление к среднему значению?

Comment thread code/ZAS/Processing.dm

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь происходит отсеивание ненужных вычислений. Если тебе кажется, что до разницы в 0.1 моделировать нет смысла, то можешь это число поднять.
PS Это уравнение неплохо бы дополнить || abs(air.oxygen - Z.air.oxygen) > 0.1 || abs(air.nitrogen - Z.air.nitrogen) > 0.1 || abs(air.carbon_dioxide -Z.air.carbon_dioxide) > 0.1

@Kreastr

Kreastr commented Jan 7, 2013

Copy link
Copy Markdown
Author

Смотри комменты к коду

@elkrieg

elkrieg commented Jan 8, 2013

Copy link
Copy Markdown
Contributor

ах, рекурсия. Так всё же, обычный sharezone тоже работает, и мы имеем в 2 раза больше вычислений? Не вижу места, где он обходится. лучше бы сделал так, чтобы с новой формулой горения бомбы можно было бы собирать.

DeltaEpsilon7787 pushed a commit to DeltaEpsilon7787/green that referenced this pull request Jan 31, 2013
Buffing blooding.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants