Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New way of transferring air between zones. #1

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Kreastr
Copy link

@Kreastr Kreastr commented Dec 10, 2012

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
Copy link
Contributor

elkrieg commented Jan 6, 2013

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

@elkrieg
Copy link
Contributor

elkrieg commented Jan 6, 2013

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

@elkrieg
Copy link
Contributor

elkrieg commented Jan 6, 2013

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

@Kreastr
Copy link
Author

Kreastr commented Jan 6, 2013

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

@elkrieg
Copy link
Contributor

elkrieg commented Jan 7, 2013

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

@elkrieg
Copy link
Contributor

elkrieg commented Jan 7, 2013

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

@@ -82,16 +84,89 @@ zone/proc/process()
if(C.A.zone.air.compare(C.B.zone.air) || total_space)
ZMerge(C.A.zone,C.B.zone)

//Share some
ShareRequired = 0
//Share test
for(var/zone/Z in connected_zones)
//Ensure we're not doing pointless calculations on equilibrium zones.
if(abs(air.total_moles - Z.air.total_moles) > 0.1 || abs(air.temperature - Z.air.temperature) > 0.1)
Copy link
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
Copy link
Author

Kreastr commented Jan 7, 2013

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

@elkrieg
Copy link
Contributor

elkrieg commented Jan 8, 2013

ах, рекурсия. Так всё же, обычный 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