Modelica.Media: Using trace components - modelica

I am trying to get the hang of trace components and how to use them in the context of Modelica.Media and Modelica.Fluid. I am currently working on a multi-component media where a couple of the components are present in minute amounts, i.e. not important for the fluid's bulk properties. On the other hand, these components undergo (chemical) reactions, and it is thus essential that they are included in the mass balances in a sound way in order to account for this behaviour.
I wanted to model these as trace components, but I could not quite figure out how to implement these components in the context described above. More specific, I could not figure out how to have the mass (fraction) of a trace component vary due to model-internal reactions or model-internal mass transfer. It seems to me that the mass fractions of the trace components are meant to be constant in a given media - am I right?
Currently, all components of my media (including the ones in minute amounts) are included as "normal" components, as I could not manage to make the trace components behave the way I needed them to. As I am making the media more or less form scratch anyway I figured that I could just omit the components present in small amounts when giving the equations for calculating the fluid properties. Does anyone have any experience with modeling media components in trace amounts this way?
If anyone could elaborate on the difference between normal components and trace components, and/or give some advice about whether or not trace components would be the best way to model the above system, I would be very thankful. Any help or comments will be greatly appreciated!

Sorry, I was on vacation and this one slipped by me. Although I haven't been too actively involved in the most recent fluid design activities, I think you are correct in your understanding of what the "trace components" dimensions are for.
I'm assuming that the fluid library assumes that the trace components are inert in all the standard library components so I would not expect to see the trace components changing. But I don't see why it would not be possible to create components that included reactions. It will depend on whether your reactions occur "in a volume" (where you need to consider things like mixing, transport delay, etc) or whether they simply occur "on the fly" in the flow. But either way, it should certainly be possible to formulate components where the in-flow and out-flow of trace components are not identical (which sounds like your concern).
Do you have any example code you could show of the issues you are facing or questions you have about the design of the trace components interface?
Again, sorry for the late response.

Related

How can I modify driver "aggression" in the Road Traffic Library?

Im doing a road traffic simulation and have noticed that the vehicles are far too passive. I know for a fact that in the area this simulation is supposed to be the people at the wheel are far more "aggressive" and give less headway and dont yield as much.
I have scoured every piece of official and non official documentation but cannot find an answer.
You can't.
The library is a black box that only "opens" the settings that you can see in the blocks. The only additional settings you can play with (beyond the block properties) is the "Road Network descriptor":
But there is no aggressiveness setting. If this is the key purpose of your model, you either create your own ABM logic from scratch or you'd need to check other tools that are focused on cars (but typically, these are then far more restrictive on other dimensions that AnyLogic is flexible on, it all depends on your model purpose)

AS/RS simulation in Anylogic Simulation Software

I need to simulate a fully functional AS/RS in warehousing. Moreover, I am a complete beginner in this field. Can some please let me know if I could get readymade simulation file? Or if not, please let me know how to learn to do it.
I have checked out the Anylogic website and it's tutorials (They are too lengthy).
fortunately for you, i have developed an AS/RS example that is a ready-made downloadable model for you, available at https://cloud.anylogic.com/model/1f5c7d1f-8782-40ac-957d-d3ba97bf6bf0?mode=SETTINGS
In general, when you want a model example, the first thing you should do is check the anylogic cloud, and if you are lucky the model is downloadable. Unfortunately, most people don't share
It really depends on what type of ASRS you are modeling (shuttle versus unit load) and level of detail you need. Do you need specific slotting and inventory tracking, or simplier black box delays with the assumption inventory is always available? The level of detail you need depends on questions you are asking, and should be addressed prior to starting development. If results from the model are critical and urgent, and you need anything more than simple black box delays, you should consider outsourcing to an experienced professional until you can get your AnyLogic skills up to speed.

Auto-generation of code in order to mass produce. Is this sensible?

Our company plans to auto-generate our projects from the domain area up-to the presentation layer so that we can mass produce software. The idea is we can produce a project within 24 hours. I think this is possible but that's not my concern.
What are the ramifications of such plan? I just think that the quality of software produced from such grandeur idea is below good quality. First, clients have varying requirements. Assuming we can standardize what's common among them, there are still requirements that will be beyond our original template.
Second, how can such software be reliable if not fully tested? Does a 24 hour period can cover a full unit/integration/other types of test?
At the end, it appears we won't be able to hit the 24 hour target thereby defeating our original purpose.
I just believe it's better to build quality software than mass producing them. How would I tell my boss that their idea is wrong?
Sorry, but I don't think this is sensible.
In order to build a system that can auto-generate any kind of software that would fill any kind of requirement, you will kind of have to implement more then the softwares you plan to generate.
Auto-generated code is great, when you have some repetitive tasks, information, or components, that are similar enough to enable you to make a one time effort to generate all repetitions.
But trying to write a system to produce any kind of project is not feasible. In order to meet a wide enough range of supported projects, your system will have to allow a very wide set of capabilities to describe project configuration and behavior, and the time required to describe each project's behavior will not necessarily be shorter than the time it would have taken to implement the project in the first place. You will just end up developing a development environment, and implementing projects in your own language.
So, instead, why not just take an existing development environment that is already available? Like Visual Studio?
Maybe you should have a big library reprository and stuff everything that could be reusable in it. This way, the software you have to write would be very small. There could be documentation templates associated with the library and you would just have to C&P them.
However, it takes time to build such a library.
Or do it this way.

Exhaustive website verifier

I have this grand idea to basically employ some brute force attack to test/verify that my web application doesn't crash.
Don't get me started on unit testing, and IoC stuff, this is something else entirely.
What I'm doing, and what I'm asking for help with is to create an intelligent exhaustive search, that explore parts of the program state.
What I have is a web page with things I can do, clicking is one thing, text input is another, some inputs like radio buttons and drop down lists are constrained to certain values. Pretty basic things. What I end up with a finite set of events and values and what I want to model is a progression of state. Maybe this is FSM optimization in a way, but the goal is to systematically go through arbitrary permutations of events and values and see what happens.
When a problem is found I want to try and provoke that error with as little effort as possible to be able to present a clear test case.
This relates to formal verification methods and I'm asking for help or insight from people with experience.
What you want to do sounds a little like model-checking, on the one hand, and automated test case generation on the other hand (in the latter category check out Concolic testing, a technique to avoid wasting time with unfeasible execution paths).
Model-checking would be the preferred method if you assume your web application is correct and want to prove that it is. But in the case of a warning, you may have to work to understand if the problem is real or not. Test case generation is oriented towards bug-finding: it does not prove that you app is correct, but if it finds a problem, it gives you an input vector to produce it so you don't need to wonder if the problem is real.
I am not aware of any existing tools for web apps, but that doesn't mean that they don't exist.
It sounds like you want a fuzzer. Peach is one such tool.
Exhaustive search can be non trivial task for limited resource (memory,space) ,but with many techniques the problem can be reduced ,like abstracting you code (ex: replacing database driver classes with stubs), an experience is presented in this paper: Abstract Model Checking of Web Applications Using Java PathFinder (Vinh Cuong Tran, Yoshinori Tanabe, Masami Hagiya, University of Tokyo).
If you look to a kind of formal verification of FSM like models, Java PathFinder has an extension to verify UML state charts written in Java+annotation (it depends on the Javapathfinder VM):
http://babelfish.arc.nasa.gov/trac/jpf/wiki/projects/jpf-statechart

For a large project, what planning should be done before coding and how should it be approached? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
What is your method of "mapping out" an idea before creating it?
Say I wanted to take on a big project, for example at the scale of a site like Facebook or MySpace. What planning/design steps should I take before I start the actual work?
For example, should I map everything out page by page (their functionalities, data, etc.)?
For a large project first think of a one-liner to description of your site (try to not use any buzzwords here). Next think of three design maxims (rules your design Should never conflict with). Then draw a few views and think up a few user cases (1 day) then work in code for 2 weeks (this will be a throw away prototype so just work as fast as you can forget about bugs and details, don't worry about code smells or design patterns, just make as much as you can), then revaluate all the steps above and throw away your two week prototype, and begin your project in a serious manner applying solid engineering and design. After a month has gone by evaluate your(team) moral and get feedback. If it all seems to be going ok, continue, you got a long ride ahead, otherwise just give up, do a postmortem, and start over with new goals.
I always start with the user interface design. I figure out what the user should be able to do and what controls I will give them to do it. Once I get that laid out in a way I like it, then I start with the code "wiring".
Make a list of all the features that site have.
Make a list of nice to have features.
Make a list of the weakness of the site.
Order that list and prioritize the items that will be built first.
Identify what will be possible to do and what is not.
Meet with your customer and present these results.
Usually I do a mindmap of
problem I am trying to solve,
translated into exact requirements,
then mapping that to user workflows.
The cross linking features of mindmapping softwares make it lot easy. Since mindmapping is 'kind of freeform', I end up concentrating on the 'task' rather than 'representation' (e.g which type of UML diagram should I use to represent this) ?
Once initial ideas are clear then I can work on project plan, spec/design documents using UML for more low level details. This approach usually works well for me.
To see if it works for you or not, you can use FreeMind (opensource mindmaping software, good but currently limited functionality). Then You can try Mindmanager or iMindmap for mindmaping. Both integrate well with other Office products.
Usually I start out by grabbing my scratchbook and just start writing down what I want as in terms of features, this should be quite detailed. And can be quite messy with every thing scrambled together, if so, when you're done make an 'official version' of you're ideas on paper (REAL pen and paper works best for this in my opinion).
Then I start making some scetches of how the pages would look like, what information it must contain and translate that to a global database design. Then work that global design to a more advanced level where all pages come together, with relations between tables and stuff.
After that I build up the most important pages on a code framework (I always make use of a framework, if you don't then forget the framework part), and by 'most important pages' I mean in for example a blog that would be the posts. After that build the not-so-important pages, in case of a blog that could be an archive of posts.
If you have that done, put the code together with a design, or do that while coding if you do not seperate code from HTML/CSS/JS.
Oh and yes, do NOT expand your first idea along the way. Just write that down and implement that afterwards. So if, in case of the blog again, you think half way you want Youtube tags in you're BB-code, write it down. Add that later, offcourse before you're initial site releases.
That's my workflow, at least a basic basic, basic description of it.
Start with "paper prototypes", i. e. take a pencil and sketch each page very roughly. This lets you start from the user perspective, which I think is a good idea.
You can then use the sketches for a first hallway usability test and later as the basis for "wireframes" you would give a web designer to work from.
If you've gone through the complete site once, you probably have a good idea of what the backend should be able to do. You can now use your page sketches and compile a list of the actions a user can trigger by clicking on things. This is the raw material for designing the server-side API that the frontend can call.
Using the calls that need to be served, you can design the backend: What functionalities group nicely, what data needs to be fetched, what do you need to store between page calls (== Session variables) etc.
In this process, I have fared quite well by postponing technology decisions (frameworks, protocols etc.) and even class structure etc., until I've gone through the whole thing once in terms of "what things should do what to what other things" (I guess there's a better term).
I think I would start with an open-source SNS solution that comes close to what you need and then figure out how to add use-specific plug-ins, modules, and themes that achieve your purposes. There are a lot of em out there. Building from scratch is going to take a lot more effort and planning. Most SNS functionality is not worth re-inventing. Focus on what will make your site unique and build upward toward that.
I'm a fairly visual person when it comes to designing software so I sketch out dataflows, class hierarchies, UI and flow charts on whiteboards and paper first.
Butcher paper and colored pens can be particularly fun to use as it's 3 feet wide and comes in 100 foot rolls. When you've got a design that's satisfying or sufficiently complete, tear it off the roll and pin to the wall. Update as necessary.
That technique has worked for some large refactors as well as new projects.
You could start with something very simple and then add features a little at a time. You may reach a point where you want to start over, but the groundwork you did will be beneficial. Or you can try to do the whole thing at once, in which case you'll need the advice already given in the other replies.
One more idea: Specify those features you are not going to include, and other restrictions. These are called constraints, and are as important as the rest of the plan, as it gives you boundaries so you know when you're done planning!
If you work for the same company as this person, start by getting everything in writing so you aren't the one to take the fall when the inevitable happens...