Tidal forces simulator

Interface

Launching the tool will bring you to the rappture interface, where you will be able to set the simulation parameters. An overview of using the rappture interface can be found at the using rappture page. After you have set the parameters to the values desired, click “simulate” to run the simulation. A progress bar will show up at the bottom. Below is a list of parameters and their description.

  • Apogee (ratio)
    This is the furthest away the cloud will get away from the planet expressed as a ratio of the Roche limit radius. For example: a value of ‘3’ means that the cloud’s maximum distance from the planet would be three times the Roche limit.
  • Perigee (ratio)
    This is the closest the cloud will get to the planet expressed as a ratio of the Roche limit radius. A value of ‘0.5’, for example, means that the cloud’s closest approach will be half of the Roche limit.
  • Mass ratio
    This parameter set the ratio of the planet (central) mass to the cloud mass. For example, if you want to simulate the Earth-Moon system, you would set the mass ratio to 81.3 because the Earth is 81.3 times heavier than the Moon.
  • Number of particles
    This parameters sets the (approximate) number of particles in the cloud that will be simulated. The actual particle count in the simulation will deviate from the value entered because of the way the particle cloud is generated. Details on the cloud generation method can be read in the cloud generation section. Computation time will increase with the square of particle count.
  • Seed
    This parameter sets the seed used for the random number generator. Using the same seed from a previous simulation (and keeping other parameters identical) will generate the exact same result. Changing the seed will change the random particle velocities when the cloud is generated.
  • Number of orbits
    This parameter sets number of orbits the cloud will make around the planet. Increasing the number of orbits will increase the computation time proportionally.

Simulation outline

After the parameters are set in the interface, the simulation goes through several steps: initializing the cloud, calculating the timestep, running the n-body simulation, and displaying the results. Click the following links to read more about the theory and steps involved.

Background

The Roche limit the distance between two bodies where the gravitational force becomes zero on the surface of the lighter body. The Roche limit can be calculated directly from Newton’s law of gravitation, resulting in

\(r_{roche}=r\left(\frac{2M}{m}\right)^{\frac{1}{3}}\)

where \(m\) and \(r\) are the mass and radius of the lighter body, and \(M\) is the mass of the heavier body.
As you approach the limit, the tidal forces become significant compared to gravitational force on the surface. As a particle cloud moves closer to the Roche limit, we expect the cloud to spread in its orbit more quickly.

Cloud generation

A particle cloud is used to visualize the tidal forces because simulating a solid body, like an asteroid, is very hard to do. A constant-density particle cloud is required for the cloud to be stable. The cloud can be generated by creating a cube in cartesian coordinates and carving a sphere out of it, but such a cloud lacks spherical symmetry. A spherically symmetric cloud is needed. Consider the equation for the mass of sphere:

\( M=\int_0^r\int_0^\theta\int_0^{\phi}\rho \left(r,\theta,\phi\right)r^2 \sin\left(\theta\right)\,dr\, d\theta\, d\phi \)

Assuming constant density:

\( M=-\rho\left(\frac{1}{3}\right)r^3\cos\left(\theta\right)\phi \)

If particles were placed equally spaced along the radial coordinate, the density would decrease from the center outward as \( r^{-3} \). To have constant density, the distance from the center of the cloud to a particle should increase in intervals proportional to \( r^{-3} \). A similar argument holds for the altitude coordinate (theta). If simple constant angle spacings are used, then there will be a larger density closer to the vertical axis. The density would increase according to cos(theta). Thus, the angle should increase with constant intervals of cos(theta). The azimuthal coordinate remains unchanged, as seen in the latter equation. We now know how to construct a sphere of average constant density.

This particle cloud is in virial equilibrium: the gravitational potential energy is twice the kinetic energy, or

\( 2\langle T\rangle=\langle U\rangle \)

where \( \langle x\rangle \) denotes the time average of the quantity \(x\).
The virial theorem gives us an order-of-magnitude approximation for the velocities inside the cloud. Each (cartesian) component of the velocity is chosen randomly from a normal distribution. The mean of the distribution is zero -- on average the same number of particles will be going in the positive coordinate direction as the negative direction. The variance of the distribution is determined by the virial theorem and an empirical constant. The variance is

\( \sigma^2 = C\frac{G M}{R} \)

where \( C = 1/5 \). \(C\) was chosen to be \(\frac{1}{5}\) because that is what gave the best results after testing. Some particles have speeds greater than the speed needed to escape the cloud (the escape velocity). The speed of these particles are reduced to half the escape velocity so that all particles are initially confined to the cloud.
The constant average density, particle velocity distribution, and fast particle culling method lead to a confined and well-behaved cloud of particles.
Now that the cloud is created, we must insert the cloud into an orbit around a central mass. The orbital velocity is given by

\( v_{orbital}=\left(G M_{central} \frac{b^2 A_p}{a}\right)^{1/2} \)

where \(a\) is the semimajor axis, \(b\) is the semiminor axis, and \(A_p\) is the apoapsis. The positions of the particles in the cloud are set to their current position plus the initial orbital position. The velocities are set to their current velocities plus the orbital velocity. This process inserts the particle cloud into an orbit around the central mass (the planet).

Timestep calculation

The period of the orbit can be found by the equation

\( \tau=2\pi\left(\frac{a^3}{G M_{central}}\right)^{\frac{1}{2}} \)

The timestep is then

\( \Delta t = \frac{N_{\frac{steps}{orbit}}}{\tau} \)

The timestep defaults to a value of 1600 steps per orbit at a distance of three times the Roche limit. The Roche limit distance is arbitrary, but it does not affect the simulation output because all orbital and cloud parameters depend on this value. This timestep is fixed for all simulations regardless of the number of orbits or major axis so that accurate comparisons can be made between any set of orbits.

N-body simulation

Newton’s law of gravity

\( F=G\frac{M m}{r^2} \)

is used to calculate the force on each particle on every other particle. This simulation is an “N-body” simulation because there are N bodies interacting gravitationally with one another. The number of force calculations increases as \( N^2 \).
As \(r \rightarrow 0\), the force between the masses approaches infinity; the particles will scatter and escape the system if they are too close. A force softening length, \(r_0\), must be introduced to eliminate this behavior. Newton’s law of gravity is modified so that

\( F=G\frac{M m}{\left(r+r_0\right)^2} \)

When \(r \rightarrow 0\), the force on the particles will be

\( F=G\frac{M m}{r_0^2} \)

At particle distances much greater than the force softening length, \(r \gg r_0\), the softening length term is negligible. The force-softening length is calculated by finding the inter-particle distance

\( \left( \frac{4}{3}\pi \frac{r_{cloud}^3}{N_{particles}}\right)^\frac{1}{3} \)

and dividing it by the softening length ratio of 1000. The softening length depends on the cloud radius so that very small clouds can be simulated realistically.
The acceleration of the particle depends on the position:

\( a_i = \ddot{x_i} = \sum_{j=1}^N \frac{G M}{\left(x_j - x_i\right)^2} \)

To find the positions of the particles as a function of time, the force equation must be twice integrated through time.
Many methods of numerically integrating the equations of motion. The method chosen for this simulation is the velocity verlet algorithm because it is fast and conserves the total energy of the system. The algorithm is shown below:

\( x_i\left( t + \Delta t \right) = x_i\left( t\right) + v_i\left( t\right) \Delta t + \frac{1}{2} a_i\left( t \right) \Delta t^2 \)
\( a_i\left( t + \Delta t\right) = \sum_{j=1}^N \frac{G M}{\left(x_j\left(t + \Delta t\right) - x_i\left(t + \Delta t\right)\right)^2} \)
\( v_i\left(t + \Delta t\right) = v_i\left( t\right) + \frac{1}{2} \left(a_i\left( t\right)+a_i\left(t + \Delta t\right)\right) \Delta t \)

In pseudocode, the algorithm is implemented as

   
x += v*∆t + 1/2*a*∆t^2
a_new = calculate forces(x)
v += ∆t * (a + a_new)/2
a = a_new
Each repetition is one timestep (which is a constant time interval).

Visualization

The orbit is drawn by analytically calculating the orbit. The Roche limit is a circle drawn with a radius of the Roche limit distance. The cloud particles and central mass particle are drawn as points.
In the lower part of the window, histograms of the angular displacement, the radial displacement, and vertical displacement are shown. These histograms make the spreading of the cloud in each dimension easier to see. The data for the histogram are calculated by comparing each particle to a test particle in the same orbit.
SFML is used to display text and create the OpenGL context. The scene is rendered using OpenGL. Screenshots and movies can be created and are saved in a zip file after the simulation visualization is closed.

Debug Console

Close14 MBRequestSessionTimelineDatabase20Events25
$_GET
Array( ) Array(

)
$_POST
Array( ) Array(

)
$_COOKIE
Array( 81f30cf708470b974874c8a96a6bcdb2 => f6955034e3e8812ab85bc326663c566a, d482552ea4a74f85... Array(
81f30cf708470b974874c8a96a6bcdb2 => f6955034e3e8812ab85bc326663c566a,
d482552ea4a74f85af0bb3d73890dabc => 5 E 45E43105E E 2444543 7406F5D 11B 37E B4A 3 05F41134B514059 4 951135F765817 3 B5C1243 B5612 F16 3 B 2 A1B5F E5C5653 8 7 65256 1 C 955 A 2 6 1 D 453 350 4 6 2565A D 6 6581B 3165952 2164044 C 016 A17 25056 31A 0 6 957 7 0 7515C B55 8 1 8 A 4 15E D5651 45752 2 7575B5652 F5944 B4358 6 A16164A515412 24A 256515C1A52 4 E5051 4 2505D50 1 1 057 251 0 A 556 6 A A 6 6 F A5B5055505916 94A
)
$_SERVER
Array( REDIRECT_UNIQUE_ID => Z84mfjxKn0lNENKym8ws9gAAAAM, REDIRECT_SCRIPT_URL => /advanced_ro... Array(
REDIRECT_UNIQUE_ID => Z84mfjxKn0lNENKym8ws9gAAAAM,
REDIRECT_SCRIPT_URL => /advanced_roche,
REDIRECT_SCRIPT_URI => https://iadd.astro.illinois.edu/advanced_roche,
REDIRECT_HTTPS => on,
REDIRECT_SSL_TLS_SNI => iadd.astro.illinois.edu,
REDIRECT_STATUS => 200,
UNIQUE_ID => Z84mfjxKn0lNENKym8ws9gAAAAM,
SCRIPT_URL => /advanced_roche,
SCRIPT_URI => https://iadd.astro.illinois.edu/advanced_roche,
HTTPS => on,
SSL_TLS_SNI => iadd.astro.illinois.edu,
HTTP_ACCEPT => */*,
HTTP_USER_AGENT => Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com),
HTTP_COOKIE => 81f30cf708470b974874c8a96a6bcdb2=f6955034e3e8812ab85bc326663c566a; d482552ea4a74f85af0bb3d73890dabc=+5+E+45E43105E+E+2444543+7406F5D+11B+37E+B4A+3+05F41134B514059+4+951135F765817+3+B5C1243+B5612+F16+3+B+2+A1B5F+E5C5653+8+7+65256+1+C+955+A+2+6+1+D+453+350+4+6+2565A+D+6+6581B+3165952+2164044+C+016+A17+25056+31A+0+6+957+7+0+7515C+B55+8+1+8+A+4+15E+D5651+45752+2+7575B5652+F5944+B4358+6+A16164A515412+24A+256515C1A52+4+E5051+4+2505D50+1+1+057+251+0+A+556+6+A+A+6+6+F+A5B5055505916+94A,
HTTP_ACCEPT_ENCODING => gzip, br, zstd, deflate,
HTTP_HOST => iadd.astro.illinois.edu,
PATH => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin,
SERVER_SIGNATURE => ,
SERVER_SOFTWARE => Apache/2.4.37 (AlmaLinux) OpenSSL/1.1.1k PHP/5.6.40 mod_python/3.5.0 Python/2.7.18 SVN/1.10.2,
SERVER_NAME => iadd.astro.illinois.edu,
SERVER_ADDR => 128.174.51.20,
SERVER_PORT => 443,
REMOTE_ADDR => 3.131.160.231,
DOCUMENT_ROOT => /var/www/iadd,
REQUEST_SCHEME => https,
CONTEXT_PREFIX => ,
CONTEXT_DOCUMENT_ROOT => /var/www/iadd,
SERVER_ADMIN => root@localhost,
SCRIPT_FILENAME => /var/www/iadd/index.php,
REMOTE_PORT => 65415,
REDIRECT_URL => /advanced_roche,
GATEWAY_INTERFACE => CGI/1.1,
SERVER_PROTOCOL => HTTP/1.1,
REQUEST_METHOD => GET,
QUERY_STRING => ,
REQUEST_URI => /advanced_roche,
SCRIPT_NAME => /index.php,
PHP_SELF => /index.php,
REQUEST_TIME_FLOAT => 1741563518.364,
REQUEST_TIME => 1741563518
)
separator .
orderBy id
orderDir asc
1 registerIP
2 access
always
renew
tracker.sid f6955034e3e8812ab85bc326663c566a
tracker.ssid f6955034e3e8812ab85bc326663c566a
tracker.rsid f6955034e3e8812ab85bc326663c566a
  • site 0.043 seconds (+0.043); 8.75 MB (+8.750) - afterInitialise
  • site 0.061 seconds (+0.018); 10.00 MB (+1.250) - afterRoute
  • site 0.104 seconds (+0.044); 12.75 MB (+2.750) - afterDispatch
  • site 0.112 seconds (+0.008); 13.25 MB (+0.500) - beforeRenderModule mod_custom (Hub Footer)
  • site 0.114 seconds (+0.001); 13.25 MB (0.000) - afterRenderModule mod_custom (Hub Footer)
  • site 0.116 seconds (+0.002); 13.75 MB (+0.500) - beforeRenderModule mod_collect (Collect)
  • site 0.117 seconds (+0.001); 13.75 MB (0.000) - afterRenderModule mod_collect (Collect)
  • site 0.117 seconds (+0.000); 13.75 MB (0.000) - beforeRenderModule mod_menu (Main Menu)
  • site 0.121 seconds (+0.004); 14.00 MB (+0.250) - afterRenderModule mod_menu (Main Menu)
  • site 0.123 seconds (+0.002); 14.00 MB (0.000) - onAfterRender
  • site 0.125 seconds (+0.002); 14.00 MB (0.000) - sessionStore
14 MB

20 Queries Logged: 0.014216899871826 seconds

  1. SELECT data
      FROM `jos_session`
      WHERE `session_id` = 'f6955034e3e8812ab85bc326663c566a'
  2. SELECT extension_id AS id,element AS "option",params,enabled
      FROM `jos_extensions`
      WHERE `type` = 'component'
      AND `element` = 'com_languages'
  3. SELECT extension_id AS id,element AS "option",params,enabled
      FROM `jos_extensions`
      WHERE `type` = 'component'
      AND `element` = 'com_members'
  4. SELECT b.id
      FROM `jos_usergroups` AS `a`
      LEFT JOIN jos_usergroups AS b
      ON b.lft <= a.lft
      AND b.rgt >= a.rgt
      WHERE `a`.`id` = '1'
  5. SELECT *
      FROM `jos_viewlevels`
  6. SELECT folder AS type,element AS name,protected,params
      FROM `jos_extensions`
      WHERE `enabled` >= '1'
      AND `type` = 'plugin'
      AND `state` >= '0'
      AND `access` IN ('1','1','4')
      ORDER BY `ordering` ASC
  7. SELECT m.id,m.menutype,m.title,m.alias,m.note,m.path AS route,m.link,m.type,m.level,m.language,m.browserNav,m.access,m.params,m.home,m.img,m.template_style_id,m.component_id,m.parent_id,e.element AS component
      FROM `jos_menu` AS `m`
      LEFT JOIN jos_extensions AS e
      ON e.extension_id = m.component_id
      WHERE `m`.`published` = '1'
      AND `m`.`parent_id` > '0'
      AND `m`.`client_id` = '0'
      ORDER BY `m`.`lft` ASC
  8. SELECT con.`id`, cat.`alias`, cat.`path`
      FROM `jos_content` AS con
      LEFT JOIN `jos_categories` AS cat
      ON con.catid = cat.id
      WHERE con.state=1
      AND con.`alias` = 'advanced_roche'
  9. SELECT jos_template_styles.id,jos_template_styles.home,jos_template_styles.template,jos_template_styles.params,jos_extensions.protected
      FROM `jos_template_styles`
      INNER JOIN jos_extensions
      ON jos_extensions.element = jos_template_styles.template
      WHERE `jos_template_styles`.`client_id` = '0'
      AND `jos_extensions`.`enabled` = '1'
      AND `jos_extensions`.`type` = 'template'
      AND jos_extensions.`client_id` = `jos_template_styles`.`client_id`
      ORDER BY `home` DESC
  10. SELECT extension_id AS id,element AS "option",params,enabled
      FROM `jos_extensions`
      WHERE `type` = 'component'
      AND `element` = 'com_content'
  11. SELECT extension_id AS id,element AS "option",params,enabled
      FROM `jos_extensions`
      WHERE `type` = 'component'
      AND `element` = 'com_categories'
  12. SELECT extension_id AS id,element AS "option",params,enabled
      FROM `jos_extensions`
      WHERE `type` = 'component'
      AND `element` = 'com_menus'
  13. SELECT a.rules
      FROM `jos_assets` AS `a`
      WHERE `a`.`id` = '1'
      GROUP BY a.id, a.rules, a.lft
  14. SELECT b.rules
      FROM `jos_assets` AS `a`
      LEFT JOIN jos_assets AS b
      ON b.lft <= a.lft
      AND b.rgt >= a.rgt
      WHERE `a`.`name` = 'com_content'
      GROUP BY b.id, b.rules, b.lft
      ORDER BY `b`.`lft` ASC
  15. SELECT a.*,a.id,a.asset_id,a.title,a.alias,a.title_alias,a.introtext,a.fulltext,
      CASE WHEN badcats.id IS NULL THEN a.state ELSE 0 END AS state,a.mask,a.catid,a.created,a.created_by,a.created_by_alias,
      CASE WHEN a.modified IS NULL THEN a.created ELSE a.modified END AS modified,a.modified_by,a.checked_out,a.checked_out_time,a.publish_up,a.publish_down,a.images,a.urls,a.attribs,a.version,a.parentid,a.ordering,a.metakey,a.metadesc,a.access,a.hits,a.metadata,a.featured,a.language,a.xreference,c.title AS category_title,c.alias AS category_alias,c.access AS category_access,u.name AS author,parent.title AS parent_title,parent.id AS parent_id,parent.path AS parent_route,parent.alias AS parent_alias,ROUND(v.rating_sum / v.rating_count, 0) AS rating,v.rating_count AS rating_count
      FROM `jos_content` AS `a`
      LEFT JOIN jos_categories AS c
      ON c.id = a.catid
      LEFT JOIN jos_users AS u
      ON u.id = a.created_by
      LEFT JOIN jos_categories as parent
      ON parent.id = c.parent_id
      LEFT JOIN jos_content_rating AS v
      ON a.id = v.content_id
      LEFT
      OUTER JOIN (SELECT cat.id as id
      FROM jos_categories AS cat JOIN jos_categories AS parent
      ON cat.lft BETWEEN parent.lft
      AND parent.rgt
      WHERE parent.extension = 'com_content'
      AND parent.published <= 0
      GROUP BY cat.id) AS badcats
      ON badcats.id = c.id
      WHERE `a`.`id` = '64'
      AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= '2025-03-09 23:38:38' )
      AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= '2025-03-09 23:38:38' )
      AND `a`.`state` IN ('1','2')
  16. SELECT c.*,
      CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(':', c.id, c.alias) ELSE c.id END as slug
      FROM `jos_categories` AS `c`
      LEFT JOIN jos_categories AS s
      ON (s.lft <= c.lft
      AND s.rgt >= c.rgt) OR (s.lft > c.lft
      AND s.rgt < c.rgt)
      LEFT JOIN (SELECT cat.id as id
      FROM jos_categories AS cat JOIN jos_categories AS parent
      ON cat.lft BETWEEN parent.lft
      AND parent.rgt
      WHERE parent.extension = 'com_content'
      AND parent.published != 1
      GROUP BY cat.id) AS badcats
      ON badcats.id = c.id
      WHERE (`c`.`extension` = 'com_content' OR `c`.`extension` = 'system' )
      AND `c`.`access` IN ('1','1','4')
      AND `c`.`published` = '1'
      AND `s`.`id` = '2'
      AND badcats.id is null
      GROUP BY c.id,c.asset_id,c.access,c.alias,c.checked_out,c.checked_out_time,c.created_time,c.created_user_id,c.description,c.extension,c.hits,c.language,c.level,c.lft,c.metadata,c.metadesc,c.metakey,c.modified_time,c.note,c.params,c.parent_id,c.path,c.published,c.rgt,c.title,c.modified_user_id
      ORDER BY `c`.`lft` ASC
  17. SELECT c.*,
      CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(':', c.id, c.alias) ELSE c.id END as slug
      FROM `jos_categories` AS `c`
      LEFT JOIN jos_categories AS s
      ON (s.lft <= c.lft
      AND s.rgt >= c.rgt) OR (s.lft > c.lft
      AND s.rgt < c.rgt)
      LEFT JOIN (SELECT cat.id as id
      FROM jos_categories AS cat JOIN jos_categories AS parent
      ON cat.lft BETWEEN parent.lft
      AND parent.rgt
      WHERE parent.extension = 'com_content'
      AND parent.published != 1
      GROUP BY cat.id) AS badcats
      ON badcats.id = c.id
      WHERE (`c`.`extension` = 'com_content' OR `c`.`extension` = 'system' )
      AND `c`.`access` IN ('1','1','4')
      AND `c`.`published` = '1'
      AND `s`.`id` = '2'
      AND badcats.id is null
      GROUP BY c.id,c.asset_id,c.access,c.alias,c.checked_out,c.checked_out_time,c.created_time,c.created_user_id,c.description,c.extension,c.hits,c.language,c.level,c.lft,c.metadata,c.metadesc,c.metakey,c.modified_time,c.note,c.params,c.parent_id,c.path,c.published,c.rgt,c.title,c.modified_user_id
      ORDER BY `c`.`lft` ASC
  18. SELECT extension_id AS id,element AS "option",params,enabled
      FROM `jos_extensions`
      WHERE `type` = 'component'
      AND `element` = 'com_users'
  19. SELECT m.id,m.title,m.module,m.position,m.content,m.showtitle,m.params,mm.menuid,e.protected
      FROM `jos_modules` AS `m`
      LEFT JOIN jos_modules_menu AS mm
      ON mm.moduleid = m.id
      LEFT JOIN jos_extensions AS e
      ON e.element = m.module
      AND e.client_id = m.client_id
      WHERE `m`.`published` = '1'
      AND `e`.`enabled` = '1'
      AND (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= '2025-03-09 23:38:38' )
      AND (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= '2025-03-09 23:38:38' )
      AND `m`.`access` IN ('1','1','4')
      AND `m`.`client_id` = '0'
      AND (`mm`.`menuid` = '0' OR `mm`.`menuid` <= '0' )
      ORDER BY `m`.`position` ASC,`m`.`ordering` ASC
  20. UPDATE `jos_session`
      SET `data` = '__default|a:9:{s:15:\"session.counter\";i:2;s:19:\"session.timer.start\";i:1741563510;s:18:\"session.timer.last\";i:1741563510;s:17:\"session.timer.now\";i:1741563518;s:8:\"registry\";O:23:\"Hubzero\\Config\\Registry\":2:{s:7:\"\0*\0data\";O:8:\"stdClass\":1:{s:1:\"0\";s:7:\"session\";}s:9:\"separator\";s:1:\".\";}s:4:\"user\";C:17:\"Hubzero\\User\\User\":22:{a:1:{s:5:\"guest\";b:1;}}s:11:\"tracker.sid\";s:32:\"f6955034e3e8812ab85bc326663c566a\";s:12:\"tracker.ssid\";s:32:\"f6955034e3e8812ab85bc326663c566a\";s:12:\"tracker.rsid\";s:32:\"f6955034e3e8812ab85bc326663c566a\";}',`time` = '1741563518',`ip` = '3.131.160.231'
      WHERE `session_id` = 'f6955034e3e8812ab85bc326663c566a'

14 Query Types Logged, Sorted by Occurrences.

SELECT Tables:
  1. 6 × SELECT extension_id AS id,element AS "option",params,enabled
      FROM `jos_extensions`
  2. 2 × SELECT c.*,
      CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(':', c.id, c.alias) ELSE c.id END as slug
      FROM `jos_categories` AS `c`
      LEFT JOIN jos_categories AS s
      ON (s.lft <= c.lft
      AND s.rgt >= c.rgt) OR (s.lft > c.lft
      AND s.rgt < c.rgt)
      LEFT JOIN (SELECT cat.id as id
      FROM jos_categories AS cat JOIN jos_categories AS parent
      ON cat.lft BETWEEN parent.lft
      AND parent.rgt
  3. 1 × SELECT a.rules
      FROM `jos_assets` AS `a`
  4. 1 × SELECT b.rules
      FROM `jos_assets` AS `a`
      LEFT JOIN jos_assets AS b
      ON b.lft <= a.lft
      AND b.rgt >= a.rgt
  5. 1 × SELECT a.*,a.id,a.asset_id,a.title,a.alias,a.title_alias,a.introtext,a.fulltext,
      CASE WHEN badcats.id IS NULL THEN a.state ELSE 0 END AS state,a.mask,a.catid,a.created,a.created_by,a.created_by_alias,
      CASE WHEN a.modified IS NULL THEN a.created ELSE a.modified END AS modified,a.modified_by,a.checked_out,a.checked_out_time,a.publish_up,a.publish_down,a.images,a.urls,a.attribs,a.version,a.parentid,a.ordering,a.metakey,a.metadesc,a.access,a.hits,a.metadata,a.featured,a.language,a.xreference,c.title AS category_title,c.alias AS category_alias,c.access AS category_access,u.name AS author,parent.title AS parent_title,parent.id AS parent_id,parent.path AS parent_route,parent.alias AS parent_alias,ROUND(v.rating_sum / v.rating_count, 0) AS rating,v.rating_count AS rating_count
      FROM `jos_content` AS `a`
      LEFT JOIN jos_categories AS c
      ON c.id = a.catid
      LEFT JOIN jos_users AS u
      ON u.id = a.created_by
      LEFT JOIN jos_categories as parent
      ON parent.id = c.parent_id
      LEFT JOIN jos_content_rating AS v
      ON a.id = v.content_id
      LEFT
      OUTER JOIN (SELECT cat.id as id
      FROM jos_categories AS cat JOIN jos_categories AS parent
      ON cat.lft BETWEEN parent.lft
      AND parent.rgt
  6. 1 × SELECT jos_template_styles.id,jos_template_styles.home,jos_template_styles.template,jos_template_styles.params,jos_extensions.protected
      FROM `jos_template_styles`
      INNER JOIN jos_extensions
      ON jos_extensions.element = jos_template_styles.template
  7. 1 × SELECT m.id,m.title,m.module,m.position,m.content,m.showtitle,m.params,mm.menuid,e.protected
      FROM `jos_modules` AS `m`
      LEFT JOIN jos_modules_menu AS mm
      ON mm.moduleid = m.id
      LEFT JOIN jos_extensions AS e
      ON e.element = m.module
      AND e.client_id = m.client_id
  8. 1 × SELECT con.`id`, cat.`alias`, cat.`path`
      FROM `jos_content` AS con
      LEFT JOIN `jos_categories` AS cat
      ON con.catid = cat.id
  9. 1 × SELECT b.id
      FROM `jos_usergroups` AS `a`
      LEFT JOIN jos_usergroups AS b
      ON b.lft <= a.lft
      AND b.rgt >= a.rgt
  10. 1 × SELECT *
      FROM `jos_viewlevels
  11. 1 × SELECT folder AS type,element AS name,protected,params
      FROM `jos_extensions`
  12. 1 × SELECT m.id,m.menutype,m.title,m.alias,m.note,m.path AS route,m.link,m.type,m.level,m.language,m.browserNav,m.access,m.params,m.home,m.img,m.template_style_id,m.component_id,m.parent_id,e.element AS component
      FROM `jos_menu` AS `m`
      LEFT JOIN jos_extensions AS e
      ON e.extension_id = m.component_id
  13. 1 × SELECT data
      FROM `jos_session`
OTHER Tables:
  1. 1 × UPDATE `jos_session`
      SET `data` = '__default|a:9:{s:15:\"session.counter\";i:2;s:19:\"session.timer.start\";i:1741563510;s:18:\"session.timer.last\";i:1741563510;s:17:\"session.timer.now\";i:1741563518;s:8:\"registry\";O:23:\"Hubzero\\Config\\Registry\":2:{s:7:\"\0*\0data\";O:8:\"stdClass\":1:{s:1:\"0\";s:7:\"session\";}s:9:\"separator\";s:1:\".\";}s:4:\"user\";C:17:\"Hubzero\\User\\User\":22:{a:1:{s:5:\"guest\";b:1;}}s:11:\"tracker.sid\";s:32:\"f6955034e3e8812ab85bc326663c566a\";s:12:\"tracker.ssid\";s:32:\"f6955034e3e8812ab85bc326663c566a\";s:12:\"tracker.rsid\";s:32:\"f6955034e3e8812ab85bc326663c566a\";}',`time` = '1741563518',`ip` = '3.131.160.231'
  • onAfterInitialise Method plgSystemP3p::onAfterInitialise /core/plugins/system/p3p/p3p.php:21
  • onAfterInitialise Method plgSystemRemember::onAfterInitialise /core/plugins/system/remember/remember.php:20
  • onAfterInitialise Method plgSystemHubzero::onAfterInitialise /core/plugins/system/hubzero/hubzero.php:21
  • onAfterInitialise Method plgSystemXFeed::onAfterInitialise /core/plugins/system/xfeed/xfeed.php:21
  • onAfterInitialise Method plgSystemSupergroup::onAfterInitialise /core/plugins/system/supergroup/supergroup.php:113
  • onAfterInitialise Method plgSystemReferrerpolicy::onAfterInitialise /core/plugins/system/referrerpolicy/referrerpolicy.php:21
  • onAfterRoute Method plgSystemJquery::onAfterRoute /core/plugins/system/jquery/jquery.php:21
  • onAfterRoute Method plgSystemSpamjail::onAfterRoute /core/plugins/system/spamjail/spamjail.php:21
  • onAfterRoute Method plgSystemIncomplete::onAfterRoute /core/plugins/system/incomplete/incomplete.php:21
  • onAfterRoute Method plgSystemUnconfirmed::onAfterRoute /core/plugins/system/unconfirmed/unconfirmed.php:21
  • onAfterRoute Method plgSystemUnapproved::onAfterRoute /core/plugins/system/unapproved/unapproved.php:21
  • onAfterRoute Method plgSystemPassword::onAfterRoute /core/plugins/system/password/password.php:21
  • onContentPrepare Method plgContentLoadmodule::onContentPrepare /core/plugins/content/loadmodule/loadmodule.php:35
  • onContentPrepare Method plgContentEmailcloak::onContentPrepare /core/plugins/content/emailcloak/emailcloak.php:25
  • onContentPrepare Method plgContentPagebreak::onContentPrepare /core/plugins/content/pagebreak/pagebreak.php:35
  • onContentPrepare Method plgContentXhubtags::onContentPrepare /core/plugins/content/xhubtags/xhubtags.php:25
  • onContentPrepare Method plgContentFormatwiki::onContentPrepare /core/plugins/content/formatwiki/formatwiki.php:63
  • onContentPrepare Method plgContentFormathtml::onContentPrepare /core/plugins/content/formathtml/formathtml.php:105
  • onContentPrepare Method plgContentExternalhref::onContentPrepare /core/plugins/content/externalhref/externalhref.php:41
  • onContentBeforeDisplay Method plgContentPagenavigation::onContentBeforeDisplay /core/plugins/content/pagenavigation/pagenavigation.php:25
  • onContentBeforeDisplay Method plgContentVote::onContentBeforeDisplay /core/plugins/content/vote/vote.php:32
  • onAfterDispatch Method plgSystemMobile::onAfterDispatch /core/plugins/system/mobile/mobile.php:22
  • onAfterDispatch Method plgSystemDebug::onAfterDispatch /core/plugins/system/debug/debug.php:60
  • onAfterDispatch Method PlgSystemHighlight::onAfterDispatch /core/plugins/system/highlight/highlight.php:25
  • onAfterRender Method plgSystemSef::onAfterRender /core/plugins/system/sef/sef.php:21