NTNUJAVA Virtual Physics Laboratory
Enjoy the fun of physics with simulations!
Backup site http://enjoy.phy.ntnu.edu.tw/ntnujava/
October 18, 2017, 10:09:03 pm *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
 
   Home   Help Search Login Register  
Everything has its beauty but not every one sees it. ...Confucius (551-479 BC)
Google Bookmarks Yahoo My Web MSN Live Netscape Del.icio.us FURL Stumble Upon Delirious Ask FaceBook

Pages: [1]   Go Down
  Print  
Author Topic: Event for ODE Evolution Page in EJS  (Read 7175 times)
0 Members and 1 Guest are viewing this topic. Click to toggle author information(expand message area).
lookang
Hero Member
*****
Offline Offline

Posts: 1784


http://weelookang.blogspot.com


WWW
«
Embed this message
on: November 26, 2008, 09:42:01 am » posted from:SINGAPORE,SINGAPORE,SINGAPORE

Can explain what this do? I can't make sense of it

Zero condition

if(vy>0) return 1;  // particle is not falling  {what does return 1 mean?} which i found out later means do nothing



return y;  // displacement of particle above floor {why return y?} which i found out later means check for y = 0 to action



Action  Check box End step at event

// action if particle is falling and below the floor
vy = Math.abs(vy)*coef_of_restitution;  {to return the value of Math.abs(vy)*coef_of_restitution to variable vy to simulate hitting n bouncing up like collision}


ODE {Ordinary Differential Equations} page is

dy/dt = vy

and

dvy/dt = - g


thx for reply!
« Last Edit: November 26, 2008, 10:32:45 am by lookang » Logged
lookang
Hero Member
*****
Offline Offline

Posts: 1784


http://weelookang.blogspot.com


WWW
«
Embed this message
Reply #1 on: November 26, 2008, 10:29:49 am » posted from:SINGAPORE,SINGAPORE,SINGAPORE

I found this http://www.um.es/fem/Download/Ejs/EjsManual_en_3.4_050914.pdf


2.5.4 Events of a differential equation
Sometimes, when we are implementing the evolution of our simulation through the
solution of a system of differential equations, we want the computer to detect that
a given condition which depends on the variables of the system has taken place,
allowing us then to make some corrections to adjust the simulation.
For instance, suppose that the falling body that we are simulating using equations
(2.4) is an elastic ball that we have thrown against the floor. The numerical
solution of these equations doesn’t take into account, by itself, the fact that the
computed solution will eventually take the ball to a position below ground, that
is, y(t) < 0. As the method for numerical solution advances at constants step of
time, it is very likely that the exact moment of the collision of the ball with the
floor doesn’t coincide with any of the solution steps of the algorithm, taking the ball
to a, let’s put it this way, ‘illegal state’. Instead of this, we would have preferred
that the computer had detected the problem and had momentaneously stopped at
the precise instant of the collision, applying then the code necessary to simulate the
rebounding of the ball against the floor, and continuing the simulation from these
new initial conditions. This is the archetypical example of what we call an event.
More precisely, we define an event as the change of sign of a real-valued function
of the state variables (the variables that we differentiate) and of the independent
variable of an ODE. (Events caused only by the independent variable are traditionally
called time events, while those caused by the other variables are called state
events). To simplify the discussion that follows and, since actually all variables depend
on the independent variable, we will denote by h(t) the function that changes
sign in the event.


an event is specified by providing: (a) the function h
which depends on the state, (b) the desired tolerance, and (c) the action to invoke
at the event instant.


Creating events for an ODE
Notice that the editor for differential equations includes a button labeled “Events”
and a field that indicates that, by default, there are no events defined for this
equation. Clicking the button “Events” will bring in an independent window with
an editor with a behavior similar to that found in other parts of the model, and
which we can use to create as many pages of events for our differential equation as
we want.
There exist, however, some differences. Observe in Figure 2.16 that a page for
the edition of events appears divided into two sections (besides the text field for
comments)

In the upper section of this page we need to indicate how to detect the event. For
this, we need to write the code that computes the function h(t) from the values of

the state and the independent variable of our ODE. This code must end, necessarily,
returning a value of type double. To help us remember this, the editor writes by
default the next code (which, by the way, causes no event at all):
return 1.0;

In the “Tolerance” field on the upper right corner of this section we need to indicate
the value for the tolerance that we want for this event (this is the  in the discussion
above).
The lower section is used to tell the computer what to do when it detects (and
then precisely locates) an event. Recall that this action must solve, or at least
simplify, the situation that triggered the event. In the upper-right corner of this
second section we find a checkbox labeled “Stop at event”, currently activated, that
tells the computer whether it should return from the solution of the ODE at the
instant of the event or not. Notice that, if checked, this causes the real increment
of the independent variable to be smaller that the one originally desired. But still,
checking this option may be useful if you want to appreciate the exact moment of
the event.

We can use our example of the falling ball to construct a sample event. For this,
edit the code of the upper section of the page so that it reads:
return y;
This indicates that the event will take place when the ball reaches the level of the
ground, y = 0. The default value for the tolerance is adequate. As action for the
event, write the code:
vy = -vy;

which simulates a totally elastic rebounding at the instant the event takes place.
Leave the box “Stop at event” checked, so that the system visualizes the instant of
the rebounding.
« Last Edit: November 26, 2008, 10:35:33 am by lookang » Logged
lookang
Hero Member
*****
Offline Offline

Posts: 1784


http://weelookang.blogspot.com


WWW
«
Embed this message
Reply #2 on: November 26, 2008, 11:01:35 am » posted from:SINGAPORE,SINGAPORE,SINGAPORE

i messed around the code to come up with this easy to understand codes

if (y<-0.5) return y; // change the value to check where to rebounce example y<1.0
 else
return 1;


i finally understand my own codes

no worries! the original codes was confusing/misleading i think deeper meaning than i thought
« Last Edit: November 26, 2008, 02:40:05 pm by lookang » Logged
Fu-Kwun Hwang
Administrator
Hero Member
*****
Offline Offline

Posts: 3080



WWW
«
Embed this message
Reply #3 on: November 26, 2008, 01:46:41 pm » posted from:Taipei,T'ai-pei,Taiwan

The original code
Quote
if(vy>0) return 1;
return y;

The above code is the same as
if(vy>0) return 1;
else return y;

if(vy>0) it means that particle is moving upward, so there is no bouncing need to be take care of.
otherwise, it will check if y is less than bouncing point y=0;

You change the code to
if(y<-0.5)return y; it mean that particle will bounced at y=-0.5 (not y=0).

Logged
lookang
Hero Member
*****
Offline Offline

Posts: 1784


http://weelookang.blogspot.com


WWW
«
Embed this message
Reply #4 on: November 26, 2008, 02:27:52 pm » posted from:Singapore,,Singapore

The original code
The above code is the same as
if(vy>0) return 1;
else return y;

if(vy>0) it means that particle is moving upward, so there is no bouncing need to be take care of.
otherwise, it will check if y is less than bouncing point y=0;

Hi prof,
In the examination of the original code,
1. what must be done to include a position of y to rebounce that is to be determine by user instead of the default of y = zero?


Thx! Grin

my codes doesn't work when y = 0.5 for example
Code:
if (y<0.5) return y; // change the value to check where to rebounce example y<1.0 

else
return 1; // do nothing

it still bounce at y = 0 Huh strange
« Last Edit: November 26, 2008, 02:34:14 pm by lookang » Logged
Fu-Kwun Hwang
Administrator
Hero Member
*****
Offline Offline

Posts: 3080



WWW
«
Embed this message
Reply #5 on: November 26, 2008, 05:27:49 pm » posted from:Taipei,T'ai-pei,Taiwan

If you want to have particle bounced at y=y0; (You can add a slider for user to change y0,too. )
you should change the code to

if(vy>0)return 1;
return y-y0;


How it works in ejs:
If the return value is less than zero, EJS will know it is an event need to be processed.
And EJS will reduce time step to find the most precise point so that return value is almost equal to zero.
process the event, and move forward the time to it should be.

In your previous case,
if(y<0.5)return y;

you did not notice the error. Because the relative error is too small for your eye to notice it.
However, the error will accumulate.
If you change the range to y(maximum)=1 you will notice the error easily.
Logged
lookang
Hero Member
*****
Offline Offline

Posts: 1784


http://weelookang.blogspot.com


WWW
«
Embed this message
Reply #6 on: November 27, 2008, 07:42:23 am » posted from:SINGAPORE,SINGAPORE,SINGAPORE

if(vy>0)return 1;
return y-y0;

Thanks! i go try it! so the syntax is "return y-y0".

cool!
Logged
Pages: [1]   Go Up
  Print  
Everything has its beauty but not every one sees it. ...Confucius (551-479 BC)
 
Jump to:  


Related Topics
Subject Started by Replies Views Last post
A bouncing ball (learn how to create event to habdle bouncing condition in EJS)
Examples for beginner who want to learn EJS
Fu-Kwun Hwang 5 15187 Last post February 05, 2009, 05:51:46 am
by walkerouks
Free Fall modelling to understand the Event for ODE Evolution Page
Collaborative Community of EJS
lookang 2 8354 Last post August 03, 2009, 11:24:15 am
by lookang
how to view the valuesofvariables declared inside for ODE Evolution Page in EJS?
Questions related to EJS
lookang 1 4968 Last post November 28, 2008, 11:03:57 am
by Fu-Kwun Hwang
Elastic Collision (1D)
Dynamics
Fu-Kwun Hwang 3 12015 Last post April 13, 2013, 04:54:31 pm
by Fu-Kwun Hwang
Doubt in Easy Java Simulation/board:11-100-
Questions related to EJS
dhasthagheer 1 2840 Last post August 20, 2011, 07:01:50 pm
by Fu-Kwun Hwang
Powered by MySQL Powered by PHP Powered by SMF 1.1.13 | SMF © 2006-2011, Simple Machines LLC Valid XHTML 1.0! Valid CSS!
Page created in 0.073 seconds with 22 queries.since 2011/06/15