New Release Interplanetary Modular Spacecraft RC9

Towards the end? Wasn't it you who said that an IMS ship is NEVER done? ;) I figure if I go through and add the 4 more hab wheels and the 4 more docking areas I'll have close to 5,000-7,500 modules. Maybe a scenario file close to 1Mb in size?

BTW, I have about 200 Gb of free disk space and my computer has 8Gb of RAM... gonna take a HUMONGOUS ship to fill that all up, don't ya think?

Dantassii
HUMONGOUS IMS shipbuilder


Jedidia might have to code in gravitational attraction just for your station..

"That's no moon...."

:lol:

But seriously, great project. Really shows off what can be accomplished in Orbiter, both as a builder and a modder.
 
Jedidia might have to code in gravitational attraction just for your station..

"That's no moon...."

:lol:

But seriously, great project. Really shows off what can be accomplished in Orbiter, both as a builder and a modder.

Well.. it is still orbiting the moon..... I mean the moon hasn't started orbiting my space station.... yet...

Dantassii
HUMONGOUS IMS shipbuilder
 
IMS question

I decided to take a break from Lunar Station building and start doing some design work for my first ship to be constructed at the station. I came across a question and although I could probably figure out the 'correct' answer, I probably would come up with the 'wrong' answer as far as Orbiter/IMS is concerned. So here's my question:

Q1) Is there a quickie power ratio to determine what amount of power you need to heat your modules at an outer planet based on how much power you need to heat the same modules while in shadow in Earth orbit?

For example, you need 125% of your Earth orbit power for module heating at Mars, 200% at Jupiter, 300% at Saturn, 500% at Uranus, 750% at Neptune, and 1000% at Pluto.

Those are probably REALLY far off the actual numbers, but what I'm trying to figure out is does my ship have enough nuke power on board to keep everything warm should I take it on a long trip to Pluto and back?

My ship uses about 900kW of power heating modules when in shadow in LEO. If I need 90Mw of power at Pluto... I'm gonna need to add a LOT more BM230's and BM222's....

--------------------------------------------

On an unrelated topic, when I put 5 of the Hyper Engines on a single BR200 radiator and fire up the engines in shadow.. that BR200 actually starts to noticeably GLOW when it's up around 700 C and turns bright red at 1200 C. Neat! :)

q) What has a mass of 1.5 Mkg (w/out cargo) and can accelerate at almost 5 G's?
a) I don't know, but you don't want to get in its way.

Dantassii
HUMONGOUS IMS shipbuilder
 
Last edited:
Holy smokes, a voyage to Pluto :facepalm:

I think Robert Zubrin is going to wake up in the middle of the night with a cold sweat when you start building a monster like that.

On the topic of heating, I would just suggest that you install several nukes & shut down what you don't need. It's obviously inefficient mission architecture, but its awfully hard to make a perfect prediction for something like that, and any vessel going that far out is going to be fairly large anyways. Maybe you could do a Jupiter sling outbound to save on some delta vee?

Just wanted to let you all know, I finished the IMS User guide tonight, and I'm going to post my documentation package here as soon as I can. Can't do it right now, since I only have an IPad here.
 
Holy smokes, a voyage to Pluto :facepalm:

I think Robert Zubrin is going to wake up in the middle of the night with a cold sweat when you start building a monster like that.

On the topic of heating, I would just suggest that you install several nukes & shut down what you don't need. It's obviously inefficient mission architecture, but its awfully hard to make a perfect prediction for something like that, and any vessel going that far out is going to be fairly large anyways. Maybe you could do a Jupiter sling outbound to save on some delta vee?

I have 6 BM230's on board already (6Mw of power) and the ship uses a little over 1.1 Mw in LEO and another 0.9-1.2 Mw keeping things warm in shadow.

I have 40Mm/s of delta V on this ship, and so far it has 4.9 G's of acceleration although I don't have all the cargo aboard. Yes, you saw that right... 40 Mega m/s. It has a crew of 24 with 3 gravity rings (the non SSBB rings) and enough food/water/O2 production to be self sufficient. The only thing it needs yet is the cargo area (bunches of BCCH's) and 2 docking ports so it can haul a pair of XR5's for planetary landings since it has no landing gear (and who would want to try to land something that big anyway?).

BTW, as a REAL rocket scientist by college degrees, I know that if you put your RCS thrusters way out on trusses you get a lot better moment arms to rotate your ship with. I see lots of long, skinny ships being built using IMS and people keep complaining that they can't get them to turn very quick using RCS thrusters. My Lunar Station has about 2 dozen RCS thrusters on it all way out on the trusses and it can actually rotate about all 3 axis pretty fast.

Dantassii
HUMONGOUS IMS shipbuilder
 
Last edited:
Is there a quickie power ratio to determine what amount of power you need to heat your modules at an outer planet based on how much power you need to heat the same modules while in shadow in Earth orbit?

The problem is not so much direct sun influx... the problem is external temperature of the modules.

To calculate the expected exterior temperature at a certain distance, you have to have sun energy per square meter at distance, how much of that energy is absorbed by the modules surface (default 0.6) and Heat capacity of a square meter of the modules hull (default 400 W/K, rarely ever defined otherwise in a modules config) .

Now it's a "simple" matter of calculating where the modules exterior will reach thermal equilibrium with the Stefan Boltzman law, where emmissivity equals the above absorptance.

Now, if you can derive a rule of thumb for external temperature of a module from that rather involved process, you have your solution... I suck at math, so I can't. The problem is I don't know a way to calculate thermal equilibrium other than iterating. If there is an analytical solution or an approximation for that, you've got what you need.

The process of calculating how much power is needed for heating after that is pretty simple, since IMS uses (physically incorrectly) a conduction model rather than a multi-layered radiation model to pass heat between the modules interior and exterior. The default value for conductivity is chosen to resemble the performance of current day MLI, but since the actual size of the module is always unknown to IMS, it's a completely ballpark estimate of mass * 0.0035 unless a more precisely calculated value is defined in the config.

Of course, the power consumed by your module will also heat it up, and depending on the module it might well have excess heat even with very weak sunlight.

In general, though, if you're carrying several nukes around with you, heating is usually not really much of an issue if you leave a sensible margin (unfortunately, I don't quite know what a "sensible margin" would be for the unsensible dimensions you are building... :lol: )

To be ABSOLUTELY on the save side, calculate how much heating a module needs with the minimum possible external temperature of 4 K. If you have the power to heat it then, you won't have any trouble EVER.
 
Last edited:
The problem is not so much direct sun influx... the problem is external temperature of the modules.

To calculate the expected exterior temperature at a certain distance, you have to have sun energy per square meter at distance, how much of that energy is absorbed by the modules surface (default 0.6) and Heat capacity of a square meter of the modules hull (default 400 W/K, rarely ever defined otherwise in a modules config) .

Now it's a "simple" matter of calculating where the modules exterior will reach thermal equilibrium with the Stefan Boltzman law, where emmissivity equals the above absorptance.

Now, if you can derive a rule of thumb for external temperature of a module from that rather involved process, you have your solution... I suck at math, so I can't. The problem is I don't know a way to calculate thermal equilibrium other than iterating. If there is an analytical solution or an approximation for that, you've got what you need.

The process of calculating how much power is needed for heating after that is pretty simple, since IMS uses (physically incorrectly) a conduction model rather than a multi-layered radiation model to pass heat between the modules interior and exterior. The default value for conductivity is chosen to resemble the performance of current day MLI, but since the actual size of the module is always unknown to IMS, it's a completely ballpark estimate of mass * 0.0035 unless a more precisely calculated value is defined in the config.

Of course, the power consumed by your module will also heat it up, and depending on the module it might well have excess heat even with very weak sunlight.

In general, though, if you're carrying several nukes around with you, heating is usually not really much of an issue if you leave a sensible margin (unfortunately, I don't quite know what a "sensible margin" would be for the unsensible dimensions you are building... :lol: )

To be ABSOLUTELY on the save side, calculate how much heating a module needs with the minimum possible external temperature of 4 K. If you have the power to heat it then, you won't have any trouble EVER.

Thanks Jedidia, those are exactly the numbers that I was looking for. And you're also right on another point, 'sensible' and 'my IMS space craft/stations' do not belong in the same sentence. ;)

I think I'll just move my ship out to Pluto (I've installed 1 of the Pluto add-ons) and let it sit out there for a day or 2 elapsed time (time compression is REALLY nice). As there's nothing really out beyond Pluto, that should give me a reasonable test of the extreme. This ship isn't designed to go inwards, as there are plenty of ships available in Orbiter that can take you to Mercury or Venus w/out too much of a problem.

Dantassii
HUMONGOUS IMS shipbuilder
 
My thoughts on the manuals.

Okey-Dokey, the docs package

View attachment 12043

I believe you will need the Enterprise font from this website

http://www.talshiar.org/Fonts/

I know its a custom one, and Enterprise was a pretty bad show, but I really like it as a title font for IMS. Just check the word document for an example of the formatting.

Let me know what you think...

Read through the manuals and I think 1 more thing probably should be mentioned in the 'known bugs' section. There is a bug somewhere in Orbiter where if you dock more than 8 to 30 modules of the same time with names that only vary by 1-2 characters that Orbiter will CTD when you try to load the scenario file. The work around is to use a wide range of names for modules if you are using more than 8 of a single type in your ship. Some known crash limits that I have found to date:

Module - CTD limit
BT101 - 10
BM222 - 14
BN200/1/2 - 12
BT100 - 10
BT301/2 - 8

For example, if you name your BT101 modules BT101-01, BT101-02, BT101-03, etc all the way up to BT101-10, you have no problems. Dock BT101-11 to your ship, save it, then shut down Orbiter and try to reload and you will CTD every time. If instead of BT101-11 you call it BT101-A11, then you can add another 10 before you have to change your naming format again.

The only reason I think it should be mentioned is for the BT101 truss modules. I use anywhere from 50-400 in each of my ships and having to come up with meaningful names for every group of 10 is something I have to plan out well in advance.

Oh, and the crash only comes when the ship is unintegrated. If you create 20 BT101 modules numbered 01 through 20, and integrate them to your ship, save your ship, shut down Orbiter and load it, everything works fine.

You may also want to mention in the manual that this version of IMS does not work with the DX9 ad-on.
 
I believe you will need the Enterprise font from this website

DokX actually has font embedding. You can read any font that was used in a docX, but you won't be able to write anything with it.

I'll take a read through the documentation, thanks.
 
There's still a bit work to do on the documentation, I'm afraid. Actually, It seems like you didn't correct most of the issues I raised last time. Here's what caught my eye (this time with correct page numbering):

Page 1, second paragraph: SSBB ALSO requires you to download the original add-on. Indeed, IMS is pretty much useless without it.

Page 8, last paragraph: MCS = main cooling system. Never use accronyms without explaining them first.

Page 9, start: Point in case: MCS system = main cooling system system.
Page 9, 2. paragraph: same thing, at the start and at the end
Page 9, 4. Paragraph: same thing

Page 15, first paragraph: That approximation is still completely wrong. You don't get more delta-v out of two thrusters than you get out of one. Throw out the entire paragraph except for the first sentence.

Page 15, 3. paragraph: There's also a blinking H, in combination with a glowing R, which means that the engines are up to temp but still being heated.
Page 15, last paragraph: LH = Level horizon, AH = altitude hold.

Page 19, last paragraph: You consider this releaseworthy? :lol: Better take out the whole paragraph than to leave it like this.

Page 26: What's with the sudden change of font? somewhat desorienting.
Page 26, 2. Paragraph: Actually, autosave saves after integration. Before would have made more sense, but it caused severe stability problems.

General:
The thing could do with a table of content.

---------- Post added at 12:05 PM ---------- Previous post was at 11:58 AM ----------

In other news:

Working on IMS2 with a from scratch implementation of the docking port managment provides some rather enlightening insight into the orbiter event cue. Stuff I couldn't learn when working with the old code because there was too much going on and things were too chaotic. I could never quite tell which of my actions triggered exactly which callback at what time.

I can analyse this quite thouroughly in the IMS2 code. And as far as I can see so far, doing the right thing at the right time in the right order is rather important. For example, waiting for clbkDockEvent to be called before deleting a dockport on undocking, and stuff like that. Since the IMS code is as spaghetti as it is, the order in which certain things are done is currently quite unclear to me. However, I am fairly confident that I can improve the stability with some analysis and the knowledge gained from IMS2.
I can't promise any miracles, but I might be able to teach the old horse not to stumble so much anymore...
 
Page 19, last paragraph: You consider this releaseworthy? :lol: Better take out the whole paragraph than to leave it like this.

Lol, no not release worthy yet. Gaowonk wanted to help out though, so I wanted to get this package up for him. Sorry about all of the remaining errors, I rushed it and I wasn't paying really close attention. If you could explain boosters, that would be great though. I had no luck in getting them to work. I did ask last time but you never answered ;)
 
So I've run some serious tracing in the clean environment of IMS2 to track the exact event cue. Here's what happens.

v1 is the vessel calling the integration, v2 is the vessel being integrated
Every new line means a reentering into the dll, i.e. the code has left my little domain and orbiter did some stuff in the meantime.


Code:
event cue on integration:

V1 clbkMouseEvent->triggerRedraw->Assimilate->delete v2
V1 clbkPanelRedrawEvent
V1 clbkPreStep
v2 clbkPreStep
v1 clbkPostStep
v2 clbkPostStep
v1 clbkDockEvent->deldock
v1 clbkPanelRedrawEvent (triggered from dockevent - suboptimal)
v2 clbkDockEvent
v2 ~v2
v1 clbkPreStep
v1 clbkPostStep

As can easily be seen, calling DeleteVessel on v2 doesn't actually delete it... it marks it up for deletion in the orbiter event cue. The vessel goes on existing for a whole frame, and if it was docked it will receive the dockevent (orbiter presumably performes an undocking on the marked vessel prior to deletion. Everything else would, now that I think about it, result in a whole lot of invalid pointers flying around.

More significant in this case is that v1 will also receive this event. As opposed to DeleteVessel, DelDock seems to work practically instantaneously.

It also immediately calls clbkDockEvent if a vessel was docked there... That is, it gets called immediately uppon calling delDock. Although there would still be code to execute in the function. I.E. I suddenly find myself in another place of the code. Since a dock event again triggers a parsing of the docking ports, the whole thing goes into a short kind of recursion, and once I was back where I started things were, quite frankly, not the way they were supposed to be anymore.

To prevent this from happening in IMS2, I had to wait for the vessel-to-be-deleted to undock to delete the docking port savely.

Armed with this knowledge, I took a new look at the old IMS code. It seems I ran into a similar problem there in the past, as I delete the ports before deleting the vessel. It produces the same problem, however: clbkDockEvent is called virtually immediately, and functions are executed, called from clbkDockEvent, in the middle of the integrration process that were never meant to be executed.
It is no miracle that this leads to problems. Frankly, I am bloody surprised that it works as well as it does. D3D9 client is a lot more unforgiving, however, so that's where all the crashes came from when I tried to make the thing D3D9 compatible.

I don't know yet how stable the old IMS will be when I fix this behavior, but I'm expecting a rather drastic decrease of CTDs once the thing stops running around wildly on sightseeing tours in the middle of integration...
 
Last edited:
I think I've figured out why I have problems with too many similarly named modules in a single ship. I suspect there's some sort of hashing going on inside the main Orbiter code as it tries to keep track of all the 'ships' that are floating around in a given scenario. Depending on the length of the ship name, if you have relatively short ship names (say 8 characters or less) and they only vary by 1-2 characters, somewhere between 8 and 12 ships will cause a duplication in the hash. This hash list only appears to be used during Orbiter start-up, maybe to determine which DLLs have to be loaded to properly display all the 'ships' in the scenario. In any case, if duplicates show up in the hash.. Orbiter goes BOOM during boot-up. This would also explain why I was able to add 32 Fuel tanks on my Lunar Station and not a single complaint (with the only difference being the number 01 through 32). The tank names are 12+ characters long so it takes a lot longer for the hash to duplicate.

This is just an idea of mine, I have no direct proof that this is what is happening. But if I am onto something, it might be worthwhile adding it to the IMS instruction manual. IE name your modules with at least 10 characters if you're planning on having 10+ instances of a given module in 1 ship.

Dantassii
HUMONGOUS IMS shipbuilder
 
Last edited:
Lol, no not release worthy yet. Gaowonk wanted to help out though, so I wanted to get this package up for him.

Ehem, there's an 'o' missed. That's not me :P

I have to recognize that I forgot my 'volunteer-ment'. Sorry then. But these days I'm 'free and at home' and I can take a look on what to do. So first at all... am I allowed to correct what Jedidia commented or is it your territory?
 
Ehem, there's an 'o' missed. That's not me :P

I have to recognize that I forgot my 'volunteer-ment'. Sorry then. But these days I'm 'free and at home' and I can take a look on what to do. So first at all... am I allowed to correct what Jedidia commented or is it your territory?

No by all means, please feel free to have at it. I find documentation maddening to work on after a while, so I would be happy to have another pair of eyes working on it. :)
 
I posted a photo and description of my SSTV (Solar System Transport Vehicle) with a single XR5 docked to it for scale in the Orbiter Screen Capture thread. I think IMS allows for the prettiest spacecraft never designed to enter an atmosphere.
 
This is just an idea of mine, I have no direct proof that this is what is happening.

Maybe you could ask martins for confirmation whether orbiter actually hashes the vessel names at startup. If correct, that would sound like something that's relatively easy to fix for the next orbiter version.

---------- Post added at 01:41 PM ---------- Previous post was at 08:46 AM ----------

Going on tracing. So far, identified two more problems:

Autosave was called two times (fixed).
Docking port occasionally still points to vessel handle of destroyed vessel, even after receiving and processing the undocking event. This one is rather weird, and I don't quite know yet where to start looking for a cause.

Incidentally, PeterRoss, is this bit of memory-voodoo in clbkSaveState from you?

Code:
   memset (&stat, 0, sizeof(stat));

It's rather unnecessary after declaring the VESSELSTATUS on the stack, I think.
 
RE: IMS Users manual editing

Folks, I have some good news/bad news from orb who has been working with me trying to track down the source of the 'Orbiter CDTs when you have more than 10 modules with similar names' bug.

orb said:
I've tested the TwelveBT101-CTD scenario file with IMS/SBB41B/BM201_CONTROL_MODULE.cfg, IMS/SBB41B/BT201_Truss_to_Module_Adapter.cfg, IMS/SBB41B/BMT101_Truss.cfg substituted with stock Module2.cfg (which has 6 docking ports), and I cannot reproduce the crash:

projectattachment.php


The issue isn't how vessel names or class names are treated by Orbiter. Additionally, since the stack overflow exception error points to the IMS.dll code, I think it's a bug of IMS, unless Orbiter returns to IMS unexpected values from the Orbiter functions called by IMS module.

So it sounds like the problem is either:
  1. the IMS code
  2. what IMS does with the various return values that Orbiter gives it
  3. the way that IMS calls the various Orbiter functions
As there is a workaround for this (just don't name more than 10 modules along the same lines) I think a warning in the IMS users manual concerning module names when using more than 10 of the same type of module would suffice and don't worry about what's wrong with the old IMS code.

You can count on me to test this out in the new IMS code, that is if it isn't made totally moot by the new code design.

Now.. where was I.. oh, I remember.. I've got to get another 200 BCCH's attached to my SSTV this afternoon....

Dantassii
HUMONGOUS IMS shipbuilder
 
So it sounds like the problem is either:
  1. the IMS code
  2. what IMS does with the various return values that Orbiter gives it
  3. the way that IMS calls the various Orbiter functions
If that adds anything to finding the bug, the screenshot of error dialog box Dantassii posted in the bug report says it's a stack overflow in IMS.dll at instruction at offset 0x000141F5 (from the module base). It could be because of some IMS function being called recursively, or because of very large variables allocated by IMS on stack.

The crash happening for vessels with similar names may mean that strings aren't fully compared or copied (which can cause infinite recursion if the next vessel during enumeration is treated as the current or one of the previous - e.g. when "BT101-10", "BT101-11" is searched by name, but with missing the last character).
 
Back
Top