CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > STAR-CCM+

Calling multiple simulations in Java

Register Blogs Members List Search Today's Posts Mark Forums Read

Like Tree1Likes
  • 1 Post By frownless

Reply
 
LinkBack Thread Tools Display Modes
Old   August 29, 2013, 02:49
Default Calling multiple simulations in Java
  #1
New Member
 
John Brown
Join Date: Jun 2013
Posts: 15
Rep Power: 4
frownless is on a distinguished road
Hi guys,
I need to use a macro to work with properties of two separate simulations. I know I can identify one of them (simulation_0) through getActiveSimulation() , but is there any other way to identify simulations through a path or a file name?

Thanks in Advance!
frownless is offline   Reply With Quote

Old   August 29, 2013, 03:06
Default
  #2
Member
 
Roman
Join Date: Mar 2011
Posts: 31
Rep Power: 6
Roman is on a distinguished road
If your other simulations are active you could use SelectSimulationDialog class in StarCCM API.

You can find documentation in STAR-install-dir/star/lib/doc/client/html/star/coremodule/ui/SelectSimulationDialog.html

If you are trying to modify several simulations with the same macro why not just write a simple bash script/ bat script (depending if you have linux or windows enviroment) to launch simulations and run your macro?
Roman is offline   Reply With Quote

Old   September 3, 2013, 01:05
Thumbs up
  #3
New Member
 
John Brown
Join Date: Jun 2013
Posts: 15
Rep Power: 4
frownless is on a distinguished road
Thanks Roman! This is the area I needed to be looking in, I ended up going down the SimulationProcessObject path. Apologies for my ignorance, I am new to using star ccm, what could I do with batch scripts and what would I write in one? I use windows.
Thanks again for your help!
frownless is offline   Reply With Quote

Old   September 3, 2013, 04:31
Default
  #4
Member
 
Roman
Join Date: Mar 2011
Posts: 31
Rep Power: 6
Roman is on a distinguished road
Glad you found a solution to your problem! Actually, I mostly used star with linux, however batch scripts in windows should do the same tricks.

I imagine what you are trying to do is to apply the same java macro to several simulations, right? I would recommend to take alook at this thread:

Automatically starting a run
Roman is offline   Reply With Quote

Old   September 3, 2013, 05:55
Default
  #5
New Member
 
John Brown
Join Date: Jun 2013
Posts: 15
Rep Power: 4
frownless is on a distinguished road
Thanks for the link, that is some pretty cool stuff! Unfortunately what I am trying to do is run two star ccm files simultaneously in a time unsteady simulation. Sort of a hand made cosimulation because I am doing some other funky things in the macro that I need to modulate between the files.
I hoped I could do something like this:
"
Simulation simulation_0 =
getActiveSimulation();
SimulationProcessObject simulation1a = new SimulationProcessObject(path1);
Simulation simulation_1 = simulation1a.getSimulation();
Solution solution_0 = simulation_0.getSolution();
Solution solution_1 = simulation_1.getSolution();
"
And then pull info from both, do some maths, send things back to both and run a time step on both. When I run the macro it loads my second sim file at path1 but then comes up with the error: "error: Macro run-time error: null" Which I assume is it saying it doesnt like flicking between sims. Is there some better way to handle trying to run both of these sims at once? Since it is unsteady and time step at a time, I can alternate between the two if star CCM is less likely to mind that. Any Ideas?
Thanks for helping me out with this!
frownless is offline   Reply With Quote

Old   September 3, 2013, 06:12
Default
  #6
Member
 
Roman
Join Date: Mar 2011
Posts: 31
Rep Power: 6
Roman is on a distinguished road
Ah! This sound like really exiting stuff! I think there is a slightly easier way to work around this in Star.

Take a look at the manual under Interacting with CAD/CAE Products -> Co-Simulation with STAR-CCM+

That should at least get you started in the right direction, you can use Field Functions in the leading and lagging simulation to calculate and report values you want to calculate.
Roman is offline   Reply With Quote

Old   September 3, 2013, 06:36
Default
  #7
New Member
 
John Brown
Join Date: Jun 2013
Posts: 15
Rep Power: 4
frownless is on a distinguished road
Looks like I am going to have to have a look in to this Co Simulation stuff. I was trying to avoid it but it looks like Star normally can only handle one active simulation at a time. Thanks Roman, I will hit you back in a couple of days and tell you if it worked or not. Have a good one!
Roman likes this.
frownless is offline   Reply With Quote

Old   September 9, 2013, 12:11
Default
  #8
New Member
 
Jimmy
Join Date: Apr 2011
Posts: 12
Rep Power: 6
Jimmy123 is on a distinguished road
Hello, it seems like we want to do about the same things. Did you get it to work as you wanted by using co-simulation? In my case, I have not managed to get it to work with co-simulation as I wanted and I don’t know how to write a macro that handles 2 simulations.

I’m bad at java, so I mostly record things and maybe write a for-loop at most. But this is how I try to solve a similar problem. I hope it can give you some ideas if you are stuck!

I have 1 macro for each simulation that at least seems promising... To exchange data between the simulations I use File->Export… and File->Import (recorded with a macro). Then in order to get them to wait on each other, I have included the code below that checks if the exported file with boundary data have been changed (in the other macro it look for changes in a FLUIDmapdata.ccm instead). If the file have been updated, the loop breaks and the macro can continue.

The pause part below works, but I have some issues with the imported files that I hope to fix tonight.

long Oldfilversion=0; //in the beginning of the macro

while (true){
File filversion = new File("/home /Jimmy123/triggerfile.trn"); //triggerfile.trn should be some small junkfile that you export AFTER the real file. If you use the actual file, it might be imported before it is written becuase I noticed that lastmodified() changes as soon as the file is started to be written. I tried to wait for tryLock() to be true as well for the real file. But that did not work either.
long Newfilversion=filversion.lastModified();
if (Newfilversion != Oldfilversion){
Oldfilversion=Newfilversion;
break;
} //the code below is just for a small pause before next check.
else {
try {
Thread.sleep(1000);
}
catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}


}

Last edited by Jimmy123; September 12, 2013 at 19:19. Reason: Noticed that lastmodified changed in the begining of the file-writing.> The file got imported before it was written.
Jimmy123 is offline   Reply With Quote

Old   September 9, 2013, 13:59
Default
  #9
Member
 
Join Date: Jul 2013
Posts: 37
Rep Power: 3
Alex C. is on a distinguished road
As brought by Roman, I also suggest you run in batch mode (assuming windows...) You could then call starccm+ from the cmd promt and use a batch file (.bat) to automate multiple call. Assuming you're cmd prompt path is set to the folder where you're simulation is saved :

starccm+ "my_first_simulation.sim" -batch
starccm+ "my_second_simulation.sim" -batch

You can include a java macro to include automated feature (like meshing for example, or control over the boundary conditions)

starccm+ "my_second_simulation.sim" -batch "my_macro.java"

You can specify a lot a option. The one I use the most is number of process to run to enable multi-threading. (In the examples 3 parallel process are launched)

starccm+ "my_second_simulation.sim" -np 3 -batch "my_macro.java"
Alex C. is offline   Reply With Quote

Old   September 10, 2013, 05:53
Default
  #10
New Member
 
John Brown
Join Date: Jun 2013
Posts: 15
Rep Power: 4
frownless is on a distinguished road
Yeah Jimmy I have spent the week looking in to it and I think Co-Simulation is far too narrow for what I am doing here.. I am going to have to find a way to run two simulations simultaneously.. The batch idea is interesting. Is this just to run the code outside of star ccm? Its just that because the simulations depend on each other so heavily I need to be able for them to interact at every time step. Is there any java for changing the active simulation (such as simulation_0.setActiveSimulation()) or something like that?
Thanks for the help everybody!
frownless is offline   Reply With Quote

Old   September 12, 2013, 19:37
Default
  #11
New Member
 
Jimmy
Join Date: Apr 2011
Posts: 12
Rep Power: 6
Jimmy123 is on a distinguished road
Hi again,
Steve (the great CD-adapco support) told me that if you want to control both simulations from the same macro you can write:

///////////////////////////////////////////////////////////////////
Simulation sim1 = getActiveSimulation();

Simulation sim2 = new Simulation("G:/StarCCM/sim2.sim");

sim1.getSimulationIterator().step(1);
sim2.getSimulationIterator().step(1);
sim2.close();
///////////////////////////////////////////////////////////////////

But I think (since my macros are made mostly of recorded text) that it will be easier to write two macros, and use a trigger (for example as I described in my previous post) that decides when to import new data.

Basically, just to clarify, I do as described below. Before each "Step" I also do some changes that depend on the time.
Simulation 1 _______________ Simulation 2
1: Step ____________________ wait
2: export ____--triggers->_____ import and map
3: wait _____________________ Step
4: import and mapp _<-triggers--_ export
5: Back to 1. ________________ Back to 1.
Jimmy123 is offline   Reply With Quote

Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Sliding mesh and multiple cell domain simulations Akash C SU2 Shape Design 3 January 4, 2015 04:39
how to set periodic boundary conditions Ganesh FLUENT 13 January 22, 2014 05:11
OpenFOAM static build on Cray XT5 asaijo OpenFOAM Installation 9 April 6, 2011 12:21
How to have multiple simulations in one Fluid Flow (CFX) study? amrbekhit CFX 0 February 20, 2011 06:13
Running Multiple Simulations from Workbench 12.1 Josh CFX 3 August 10, 2010 19:51


All times are GMT -4. The time now is 17:50.