{
  "fetched_at": "2026-10-19T07:18:54Z",
  "source_url": "https://www.kaggle.com/competitions/cme-215-solving-2-d-elastic-wave-equation/data",
  "pages": [
    {
      "name": "data-description",
      "content": "This competition provides a synthetic dataset simulating 2D elastic wave propagation through the Earth. Each simulation is generated using a finite-difference elastic wave solver and contains both velocity models and wavefield responses.\n\n## Files\nThe dataset is organized into the following folders:\n\n/training\n    ├── layered_simulation/            # 250 simulations in layered velocity models\n    └── random_field_simulation/       # 250 simulations in random Gaussian velocity models\n\n/test\n    ├── layered_simulation_test/       # 50 test samples (layered)\n    └── random_field_simulation_test/  # 50 test samples (random field)\n\n### Training Set\nNumber of simulations: 500 total\nSpatial domain: 64 × 128 grid (dz = dx = 20m → 1.28 km × 2.56 km)\nTime frames: 60 (0–1.77 s)\nWavefield shape: (60, 64, 128, 2), (nt, nz, nx, channel)\n| Key               | Type / Shape        | Description                                |\n|------------------|---------------------|--------------------------------------------|\n| `vp`, `vs`        | (64, 128)            | Velocity models (in m/s)                   |\n| `wavefield_vx`    | (60, 64, 128)        | vx, x-direction wavefield over time            |\n| `wavefield_vz`    | (60, 64, 128)        | vz, z-direction wavefield over time            |\n| `source_loc`      | [float, float]       | Source location \\([x, z]\\) in meters       |\n| `focal_mechanism` | [strike, dip, rake]  | Focal mechanism angles                     |\n| Other fields      | Scalars (e.g. `dt`)  | Time step, frequency, metadata             |\n\n \n\nVelocity models: Provided as spatial maps for P-wave (Vp), and S-wave (Vs). Note you should only use 'vp', 'vs',  `wavefield_vx`, and `wavefield_vx` for this contest. \n\nYou can load each simulation data and get access to the keys as follows:\n<pre> ```\nsample_2_show = np.load('./layered_simulation/0.npy', allow_pickle=True)\n\nwavefield_vx = sample_2_show.item().get('wavefield_vx') # Extract the x-direction wavefield (shape: [15, 64, 128])\nwavefield_vz = sample_2_show.item().get('wavefield_vz') # Extract the z-direction wavefield (shape: [15, 64, 128])\nvp = sample_2_show.item().get('vp') # Extract the P-wave velocity field (Vp) [64×128], in m/s\nvs = sample_2_show.item().get('vs') # Extract the S-wave velocity field (Vs) [64×128], in m/s\n ``` </pre>\n\n### Test Set\nNumber of simulations: 100 (50 layered + 50 random field)\nFirst 15 time frames of the wavefield: (15, 64, 128, 2)\nCorresponding Vp and Vs velocity models\n\n### Your Task:\n\nPredict the remaining 45 time frames from 0.45 to 1.77 seconds\nSubmit your results in the required CSV format (see submission instructions)",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "Understanding seismic wave propagation is essential for earthquake early warning, seismic hazard assessment, and broader geophysical research. While classical numerical solvers such as finite-difference methods offer high accuracy, they are computationally intensive, particularly for large-scale or real-time simulations.\n\nIn this challenge, we invite participants to explore machine learning methods for accelerating 2D elastic wave simulations. The goal is to learn the dynamics of wave propagation from synthetic data generated by finite-difference simulations across diverse velocity models, earthquake locations, and focal mechanisms.\n\nIn this contest, your goal is to build a model that predicts the future wavefield evolution based on early wavefield snapshots and the spatial velocity model (Vp, Vs). This simulates a realistic forecasting problem, where only partial wave data is available at early times.\n\nYou’ll be provided with a dataset consisting of:  \n**Training Data**  \n--500 simulations of 2D elastic wave propagation  \n--Each on a 128×64 spatial grid with 60 time frames (total duration: 0–1.77s)  \n--Corresponding P-wave (Vp) and S-wave (Vs) velocity fields for each simulation  \n\n**Test Data**   \n--100 new simulations on the same grid and corresponding P-wave (Vp) and S-wave (Vs) velocity fields for each simulation   \n--Only the first 15 time frames (0–0.42s) of wavefield data are provided   \n--**Your task is to predict the remaining 45 time frames (0.45–1.77s)**   \n\n## Breakdown of Kaggle contest scores (45 points):   \n- Leaderboard Performance: 5 points   \nIf ranked top 5: 5 points   \nEveryone else: 3 points   \n- Final Paper: Literature review, methodology, and results 40 points\n- Code submission: You must submit your code for the Kaggle contest so we can check the reproducibility of your results. If we detect any manual manipulation of the predictions you submit (as detailed on the Kaggle contest page), you will not receive any points for the contest.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "Submissions are evaluated using the [mean squared error](https://en.wikipedia.org/wiki/Mean_squared_error) between the predicted wavefield and the simulated wavefield on the test set (100 simulations in total). Note, as you will have the first 15 frames (0-0.42s), we will only evaluate on the wavefield predicted by your model, which is the next 45 frames (0.45s to 1.77s, frames 16 to 60). ",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "## Please see the \"Rules and Guidelines\" under the \"Overview\" section.\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "abstract",
      "content": "Stanford University CME-215/GEOPHYS-148 class contest (2025 Spring)",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "foundational-rules",
      "content": "The following Kaggle Competition Foundational Rules (“ Foundational Rules ”) apply to every competition regardless of whether the Sponsor creates competition-specific rules. Any competition-specific rules provided by the Sponsor are in addition to these rules, and in the case of any conflict or inconsistency, these Foundational Rules control and nullify contrary competition-specific rules.\n###GENERAL COMPETITION RULES - BINDING AGREEMENT\n####1. ELIGIBILITY\na. To be eligible to enter the Competition, you must be:</h5>\n1. a registered account holder at Kaggle.com; </h6>\n2. the older of 18 years old or the age of majority in your jurisdiction of residence (unless otherwise agreed to by Competition Sponsor and appropriate parental/guardian consents have been obtained by Competition Sponsor); </h6>\n3. not a resident of Crimea, so-called Donetsk People's Republic (DNR) or Luhansk People's Republic (LNR), Cuba, Iran, Syria, or North Korea; and</h6>\n4. not a person or representative of an entity under U.S. export controls or sanctions (see: [https://www.treasury.gov/resourcecenter/sanctions/Programs/Pages/Programs.aspx][1]).</h6>\n\nb. Competitions are open to residents of the United States and worldwide, except that if you are a resident of Crimea, so-called Donetsk People's Republic (DNR) or Luhansk People's Republic (LNR), Cuba, Iran, Syria, North Korea, or are subject to U.S. export controls or sanctions, you may not enter the Competition. Other local rules and regulations may apply to you, so please check your local laws to ensure that you are eligible to participate in skills-based competitions. The Competition Host reserves the right to forego or award alternative Prizes where needed to comply with local laws. If a winner is located in a country where prizes cannot be awarded, then they are not eligible to receive a prize.</h5>\n\nc. If you are entering as a representative of a company, educational institution or other legal entity, or on behalf of your employer, these rules are binding on you, individually, and the entity you represent or where you are an employee. If you are acting within the scope of your employment, or as an agent of another party, you warrant that such party or your employer has full knowledge of your actions and has consented thereto, including your potential receipt of a Prize. You further warrant that your actions do not violate your employer's or entity's policies and procedures.</h5>   \n\nd. The Competition Sponsor reserves the right to verify eligibility and to adjudicate on any dispute at any time. If you provide any false information relating to the Competition concerning your identity, residency, mailing address, telephone number, email address, ownership of right, or information required for entering the Competition, you may be immediately disqualified from the Competition.</h5>\n\n####2. SPONSOR AND HOSTING PLATFORM\n\na. The Competition is sponsored by Competition Sponsor named above. The Competition is hosted on behalf of Competition Sponsor by Kaggle Inc. (\"Kaggle\"). Kaggle is an independent contractor of Competition Sponsor, and is not a party to this or any agreement between you and Competition Sponsor. You understand that Kaggle has no responsibility with respect to selecting the potential Competition winner(s) or awarding any Prizes. Kaggle will perform certain administrative functions relating to hosting the Competition, and you agree to abide by the provisions relating to Kaggle under these Rules. As a Kaggle.com account holder and user of the Kaggle competition platform, remember you have accepted and are subject to the Kaggle Terms of Service at [www.kaggle.com/terms][2] in addition to these Rules.</h5>\n\n####3. COMPETITION PERIOD\na. For the purposes of Prizes, the Competition will run from the Start Date and time to the Final Submission Deadline (such duration the “Competition Period”). The Competition Timeline is subject to change, and Competition Sponsor may introduce additional hurdle deadlines during the Competition Period. Any updated or additional deadlines will be publicized on the Competition Website. It is your responsibility to check the Competition Website regularly to stay informed of any deadline changes. YOU ARE RESPONSIBLE FOR DETERMINING THE CORRESPONDING TIME ZONE IN YOUR LOCATION.</h5>\n\n####4. COMPETITION ENTRY\na. NO PURCHASE NECESSARY TO ENTER OR WIN. To enter the Competition, you must register on the Competition Website prior to the Entry Deadline, and follow the instructions for developing and entering your Submission through the Competition Website. Your Submissions must be made in the manner and format, and in compliance with all other requirements, stated on the Competition Website (the \"Requirements\"). Submissions must be received before any Submission deadlines stated on the Competition Website. Submissions not received by the stated deadlines will not be eligible to receive a Prize.</h5>\nb. Submissions may not use or incorporate information from hand labeling or human prediction of the validation dataset or test data records.</h5>\nc. If the Competition is a multi-stage competition with temporally separate training and/or test data, one or more valid Submissions may be required during each Competition stage in the manner described on the Competition Website in order for the Submissions to be Prize eligible.</h5>\nd. Submissions are void if they are in whole or part illegible, incomplete, damaged, altered, counterfeit, obtained through fraud, or late. Competition Sponsor reserves the right to disqualify any entrant who does not follow these Rules, including making a Submission that does not meet the Requirements. </h5>\n\n####5. INDIVIDUALS AND TEAMS\na. Individual Account. You may make Submissions only under one, unique Kaggle.com account. You will be disqualified if you make Submissions through more than one Kaggle account, or attempt to falsify an account to act as your proxy. You may submit up to the maximum number of Submissions per day as specified on the Competition Website. </h5>\nb. Teams. If permitted under the Competition Website guidelines, multiple individuals may collaborate as a Team; however, you may join or form only one Team. Each Team member must be a single individual with a separate Kaggle account. You must register individually for the Competition before joining a Team. You must confirm your Team membership to make it official by responding to the Team notification message sent to your Kaggle account. Team membership may not exceed the Maximum Team Size stated on the Competition Website.</h5>\nc. Team Merger. Teams may request to merge via the Competition Website. Team mergers may be allowed provided that: (i) the combined Team does not exceed the Maximum Team Size; (ii) the number of Submissions made by the merging Teams does not exceed the number of Submissions permissible for one Team at the date of the merger request; (iii) the merger is completed before the earlier of: any merger deadline or the Competition deadline; and (iv) the proposed combined Team otherwise meets all the requirements of these Rules. </h5>\nd. Private Sharing. No private sharing outside of Teams. Privately sharing code or data outside of Teams is not permitted. It's okay to share code if made available to all Participants on the forums.</h5>\n\n####6. SUBMISSION CODE REQUIREMENTS\na. Private Code Sharing. Unless otherwise specifically permitted under the Competition Website or Competition Specific Rules above, during the Competition Period, you are not allowed to privately share source or executable code developed in connection with or based upon the Competition Data or other source or executable code relevant to the Competition (“Competition Code”). This prohibition includes sharing Competition Code between separate Teams, unless a Team merger occurs. Any such sharing of Competition Code is a breach of these Competition Rules and may result in disqualification.</h5>\nb. Public Code Sharing. You are permitted to publicly share Competition Code, provided that such public sharing does not violate the intellectual property rights of any third party. If you do choose to share Competition Code or other such code, you are required to share it on Kaggle.com on the discussion forum or notebooks associated specifically with the Competition for the benefit of all competitors. By so sharing, you are deemed to have licensed the shared code under an Open Source Initiative-approved license (see [www.opensource.org][3]) that in no event limits commercial use of such Competition Code or model containing or depending on such Competition Code.</h5>\nc. Use of Open Source. Unless otherwise stated in the Specific Competition Rules above, if open source code is used in the model to generate the Submission, then you must only use open source code licensed under an Open Source Initiative-approved license (see [www.opensource.org][4]) that in no event limits commercial use of such code or model containing or depending on such code.</h5>\n\n####7. DETERMINING WINNERS\na. Each Submission will be scored and ranked by the evaluation metric stated on the Competition Website. During the Competition Period, the current ranking will be visible on the Competition Website's Public Leaderboard. The potential winner(s) are determined solely by the leaderboard ranking on the Private Leaderboard, subject to compliance with these Rules. The Public Leaderboard will be based on the public test set and the Private Leaderboard will be based on the private test set.</h5>\nb. In the event of a tie, the Submission that was entered first to the Competition will be the winner. In the event a potential winner is disqualified for any reason, the Submission that received the next highest score rank will be chosen as the potential winner.</h5>\n\n####8. NOTIFICATION OF WINNERS & DISQUALIFICATION\na. The potential winner(s) will be notified by email.</h5> \nb. If a potential winner (i) does not respond to the notification attempt within one (1) week from the first notification attempt or (ii) notifies Kaggle within one week after the Final Submission Deadline that the potential winner does not want to be nominated as a winner or does not want to receive a Prize, then, in each case (i) and (ii) such potential winner will not receive any Prize, and an alternate potential winner will be selected from among all eligible entries received based on the Competition’s judging criteria.</h5>\nc. In case (i) and (ii) above Kaggle may disqualify the Participant.  However, in case (ii) above, if requested by Kaggle, such potential winner may provide code and documentation to verify the Participant’s compliance with these Rules. If the potential winner provides code and documentation to the satisfaction of Kaggle, the Participant will not be disqualified pursuant to this paragraph.</h5>\nd. Competition Sponsor reserves the right to disqualify any Participant from the Competition if the Competition Sponsor reasonably believes that the Participant has attempted to undermine the legitimate operation of the Competition by cheating, deception, or other unfair playing practices or abuses, threatens or harasses any other Participants, Competition Sponsor or Kaggle.</h5>\ne. A disqualified Participant may be removed from the Competition leaderboard, at Kaggle's sole discretion. If a Participant is removed from the Competition Leaderboard, additional winning features associated with the Kaggle competition platform, for example Kaggle points or medals, may also not be awarded.</h5>\nf. The final leaderboard list will be publicly displayed at Kaggle.com. Determinations of Competition Sponsor are final and binding.</h5>\n\n####9. PRIZES\na. Prize(s) are as described on the Competition Website and are only available for winning during the time period described on the Competition Website. The odds of winning any Prize depends on the number of eligible Submissions received during the Competition Period and the skill of the Participants. </h5>\nb. All Prizes are subject to Competition Sponsor's review and verification of the Participant’s eligibility and compliance with these Rules, and the compliance of the winning Submissions with the Submissions Requirements. In the event that the Submission demonstrates non-compliance with these Competition Rules, Competition Sponsor may at its discretion take either of the following actions: (i) disqualify the Submission(s); or (ii) require the potential winner to remediate within one week after notice all issues identified in the Submission(s) (including, without limitation, the resolution of license conflicts, the fulfillment of all obligations required by software licenses, and the removal of any software that violates the software restrictions).</h5>\nc. A potential winner may decline to be nominated as a Competition winner in accordance with Section 3.8.</h5>\nd. Potential winners must return all required Prize acceptance documents within two (2) weeks following notification of such required documents, or such potential winner will be deemed to have forfeited the prize and another potential winner will be selected. Prize(s) will be awarded within approximately thirty (30) days after receipt by Competition Sponsor or Kaggle of the required Prize acceptance documents. Transfer or assignment of a Prize is not allowed. </h5>\ne. You are not eligible to receive any Prize if you do not meet the Eligibility requirements in Section 2.7 and Section 3.1 above.</h5>\nf. If a Team wins a monetary Prize, the Prize money will be allocated in even shares between the eligible Team members, unless the Team unanimously opts for a different Prize split and notifies Kaggle before Prizes are issued.</h5>\n\n####10. TAXES\na. ALL TAXES IMPOSED ON PRIZES ARE THE SOLE RESPONSIBILITY OF THE WINNERS. Payments to potential winners are subject to the express requirement that they submit all documentation requested by Competition Sponsor or Kaggle for compliance with applicable state, federal, local and foreign (including provincial) tax reporting and withholding requirements. Prizes will be net of any taxes that Competition Sponsor is required by law to withhold. If a potential winner fails to provide any required documentation or comply with applicable laws, the Prize may be forfeited and Competition Sponsor may select an alternative potential winner. Any winners who are U.S. residents will receive an IRS Form-1099 in the amount of their Prize.</h5>\n\n####11. GENERAL CONDITIONS\na. All federal, state, provincial and local laws and regulations apply.</h5>\n\n####12. PUBLICITY\na. You agree that Competition Sponsor, Kaggle and its affiliates may use your name and likeness for advertising and promotional purposes without additional compensation, unless prohibited by law.</h5>\n\n####13. PRIVACY\na. You acknowledge and agree that Competition Sponsor and Kaggle may collect, store, share and otherwise use personally identifiable information provided by you during the Kaggle account registration process and the Competition, including but not limited to, name, mailing address, phone number, and email address (“Personal Information”). Kaggle acts as an independent controller with regard to its collection, storage, sharing, and other use of this Personal Information, and will use this Personal Information in accordance with its Privacy Policy <[www.kaggle.com/privacy][6]>, including for administering the Competition. As a Kaggle.com account holder, you have the right to request access to, review, rectification, portability or deletion of any personal data held by Kaggle about you by logging into your account and/or contacting Kaggle Support at <[www.kaggle.com/contact][7]>.</h5>\nb. As part of Competition Sponsor performing this contract between you and the Competition Sponsor, Kaggle will transfer your Personal Information to Competition Sponsor, which acts as an independent controller with regard to this Personal Information. As a controller of such Personal Information, Competition Sponsor agrees to comply with all U.S. and foreign data protection obligations with regard to your Personal Information. Kaggle will transfer your Personal Information to Competition Sponsor in the country specified in the Competition Sponsor Address listed above, which may be a country outside the country of your residence. Such country may not have privacy laws and regulations similar to those of the country of your residence.</h5>\n\n####14. WARRANTY, INDEMNITY AND RELEASE \na. You warrant that your Submission is your own original work and, as such, you are the sole and exclusive owner and rights holder of the Submission, and you have the right to make the Submission and grant all required licenses.  You agree not to make any Submission that: (i) infringes any third party proprietary rights, intellectual property rights, industrial property rights, personal or moral rights or any other rights, including without limitation, copyright, trademark, patent, trade secret, privacy, publicity or confidentiality obligations, or defames any person; or (ii) otherwise violates any applicable U.S. or foreign state or federal law.</h5>\nb. To the maximum extent permitted by law, you indemnify and agree to keep indemnified Competition Entities at all times from and against any liability, claims, demands, losses, damages, costs and expenses resulting from any of your acts, defaults or omissions and/or a breach of any warranty set forth herein. To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless the Competition Entities from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from: (a) your Submission or other material uploaded or otherwise provided by you that infringes any third party proprietary rights, intellectual property rights, industrial property rights, personal or moral rights or any other rights, including without limitation, copyright, trademark, patent, trade secret, privacy, publicity or confidentiality obligations, or defames any person; (b) any misrepresentation made by you in connection with the Competition; (c) any non-compliance by you with these Rules or any applicable U.S. or foreign state or federal law; (d) claims brought by persons or entities other than the parties to these Rules arising from or related to your involvement with the Competition; and (e) your acceptance, possession, misuse or use of any Prize, or your participation in the Competition and any Competition-related activity.</h5>\nc. You hereby release Competition Entities from any liability associated with: (a) any malfunction or other problem with the Competition Website; (b) any error in the collection, processing, or retention of any Submission; or (c) any typographical or other error in the printing, offering or announcement of any Prize or winners.</h5>\n\n####15. INTERNET\na. Competition Entities are not responsible for any malfunction of the Competition Website or any late, lost, damaged, misdirected, incomplete, illegible, undeliverable, or destroyed Submissions or entry materials due to system errors, failed, incomplete or garbled computer or other telecommunication transmission malfunctions, hardware or software failures of any kind, lost or unavailable network connections, typographical or system/human errors and failures, technical malfunction(s) of any telephone network or lines, cable connections, satellite transmissions, servers or providers, or computer equipment, traffic congestion on the Internet or at the Competition Website, or any combination thereof, which may limit a Participant’s ability to participate.</h5>\n\n####16. RIGHT TO CANCEL, MODIFY OR DISQUALIFY\na. If for any reason the Competition is not capable of running as planned, including infection by computer virus, bugs, tampering, unauthorized intervention, fraud, technical failures, or any other causes which corrupt or affect the administration, security, fairness, integrity, or proper conduct of the Competition, Competition Sponsor reserves the right to cancel, terminate, modify or suspend the Competition. Competition Sponsor further reserves the right to disqualify any Participant who tampers with the submission process or any other part of the Competition or Competition Website.  Any attempt by a Participant to deliberately damage any website, including the Competition Website, or undermine the legitimate operation of the Competition is a violation of criminal and civil laws. Should such an attempt be made, Competition Sponsor and Kaggle each reserves the right to seek damages from any such Participant to the fullest extent of the applicable law.</h5>\n\n####17. NOT AN OFFER OR CONTRACT OF EMPLOYMENT\na. Under no circumstances will the entry of a Submission, the awarding of a Prize, or anything in these Rules be construed as an offer or contract of employment with Competition Sponsor or any of the Competition Entities. You acknowledge that you have submitted your Submission voluntarily and not in confidence or in trust. You acknowledge that no confidential, fiduciary, agency, employment or other similar relationship is created between you and Competition Sponsor or any of the Competition Entities by your acceptance of these Rules or your entry of your Submission.</h5>\n\n####18. DEFINITIONS\na. \"Competition Data\" are the data or datasets available from the Competition Website for the purpose of use in the Competition, including any prototype or executable code provided on the Competition Website. The Competition Data will contain private and public test sets. Which data belongs to which set will not be made available to Participants. </h5>\nb. An “Entry” is when a Participant has joined, signed up, or accepted the rules of a competition. Entry is required to make a Submission to a competition.</h5>\nc. A “Final Submission” is the Submission selected by the user, or automatically selected by Kaggle in the event not selected by the user, that is/are used for final placement on the competition leaderboard.</h5>\nd. A “Participant” or “Participant User” is an individual who participates in a competition by entering the competition and making a Submission.</h5>\ne. The “Private Leaderboard” is a ranked display of Participants’ Submission scores against the private test set. The Private Leaderboard determines the final standing in the competition.</h5>\nf. The “Public Leaderboard” is a ranked display of Participants’ Submission scores against a representative sample of the test data. This leaderboard is visible throughout the competition.</h5>\ng. A “Sponsor” is responsible for hosting the competition, which includes but is not limited to providing the data for the competition, determining winners, and enforcing competition rules.</h5>\nh. A “Submission” is anything provided by the Participant to the Sponsor to be evaluated for competition purposes and determine leaderboard position. A Submission may be made as a model, notebook, prediction file, or other format as determined by the Sponsor.</h5>\ni. A “Team” is one or more Participants participating together in a Kaggle competition, by officially merging together as a Team within the competition platform.</h5>\n\n  [1]: https://www.treasury.gov/resource-center/sanctions/Programs/Pages/Programs.aspx\n  [2]: http://www.kaggle.com/terms\n  [3]: http://www.opensource.org\n  [4]: http://www.opensource.org\n  [5]: https://www.kaggle.com/WinningModelDocumentationGuidelines\n  [6]: http://www.kaggle.com/privacy\n  [7]: http://www.kaggle.com/contact\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Physical Settings of our simulations",
      "content": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F17064182%2Fad44cd961ba875d23f04a29ee40b012f%2FScreenshot%202025-06-04%20at%2012.53.04PM.png?generation=1749067518002686&alt=media)\nvx, vz are wavefields, fx and fz are forces of earthquake sources, rho, lambda, mu are material properties, and Vp, Vs are velocity structure.\n\n## Waves in 2D isotropic elastic medium, subject to:\nAll simulation results are generated with a finite difference code program contributed by Ph.D. student Haipeng Li of the Geophysics department ([Stanford Profile](https://profiles.stanford.edu/haipeng-li?tab=bio), [Linkedin](https://www.linkedin.com/in/haipeng-li-343a7b216/)). Each simulation contains 60 time frames of 0.03s (1.8s in total) wavefield in a 128(horizontal)*64(vertical) evenly spaced grid with a spacing of 20m. We generate waves with a frequency up to 5 Hz under the settings of:\n1. Free surface boundary at the top (zero traction)\n2. Absorbing boundaries on both sides and the bottom\n3. Heterogeneous material properties: Vp, Vs. (Note: density is also an independent parameter that varies in space. Here, for the layered models, we use an empirical relation between Vp and density, density(g) = Vp(m/s)^0.25 * 310 ([Gardner's relation](https://en.wikipedia.org/wiki/Gardner%27s_relation)). For the random field models, we set the density(g) as a constant 3000kg/m^3. \n4. The source term fx and fz are functions of time and space (an earthquake at a certain location radiating waves). After 12 frames (~0.48s), the earthquake is finished, and both fx and fz go to almost zero.\n\nWhen neglecting the source terms, given the relationships between rho, lambda, mu and Vp Vs, the governing eqns depends only on Vp and Vs. Note: density will show up in the equation system when you still have the source term. Thus we provided rho, Vp, Vs, but you are only asked to use Vp and Vs, as the task is set up to solve the last 45 frames when we can neglect the source term.\n\n##Two types of velocity structures:\n--Random Gaussian fields\n--Layered velocity models\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F17064182%2Fee27024187f68dc9891dd6e64785492b%2FScreenshot%202025-05-08%20at%2010.49.25PM.png?generation=1746769813120001&alt=media)\nBetween different layered models, the layer thickness and the number of layers vary. For each layered model, it mostly follows the nature that the deeper layers have relatively larger velocity, but we also allow for the existence of a low velocity zone where a slower layer is sandwiched between two faster layers. For a 2D velocity profile generated with a Gaussian random field, it also follows the general trend of velocity increasing with depth. For all models, Vp sits between 2.5km/s and 6km/s, and Vs sits between 1.2km/s and 3.5km/s. \n\n##Varying earthquake focal mechanisms and Locations\nEvery source is a purely double couple source to simulate pure shear failure, represented by a beachball ([6-minute video](https://www.youtube.com/watch?v=MomVOkyDdLo) by USGS explaining what earthquake focal mechanisms are). \n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F17064182%2F3d8674b4262ae173c0171b8958fdf337%2Fdownload-2.png?generation=1746770451554985&alt=media)\nFor each simulation, we randomly generate a possible earthquake failure focal mechanism and a location within the domain. We avoid generating an earthquake that ruptures at the boundary of the simulation domain. The good news is that you do not have to worry about this, as this information should be included in the first few frames of the wavefield snapshots. For both the training set and the test set, you will have this information, as we will give you the full wavefield for the training set and the first 15 frames for the test set.\n\nBelow are two examples of simulation results: \n####Simulation with a layered velocity model:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F17064182%2Fa8043af52a0ffb0f1cad1fe100654ef7%2FUnknown-7.png?generation=1746822579842090&alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F17064182%2Fb6b9318fd36d0f010ba5116485a80b47%2Fwavefield-3.gif?generation=1746822600614751&alt=media)\n####Simulation with a Gaussian random field velocity model:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F17064182%2F5252da77a676ccdff6c0f9a917541b7e%2FUnknown.png?generation=1746822493493021&alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F17064182%2F3e4b86c4325afe362898ae515f241afd%2Fwavefield-2.gif?generation=1746822485267134&alt=media)",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Rules and Guidelines",
      "content": "###One Person Per Project\nWhile discussion among students about model design is allowed, each Kaggle contest submission must reflect your own effort and results, and no two students should submit identical work. Your final paper should also be your own work.\n\n###Submission Timelines\nOnce you have a trained model you're satisfied with, you can generate predictions on the provided test data and submit them to the Kaggle contest platform. You can upload and update your ML model prediction at anytime and multiple times (up to 10 times a day). The leaderboard will display your prediction score compared to the ground truth of the test data. **You must submit your model prediction before our last lecture on 6/3, so that we can announce the first few winners as of 6/3. After that you will still have time to improve and upload/update new model predictions and thus alter the contest result until final paper due date (6/12).**\n\n###No Additional Data\nYou can only use the data provided in this project. External datasets are not allowed.\n\n###No Pretrained Models\nModels must be trained from scratch. Using any pretrained weights or architectures trained on external data is not permitted.\n\n###Post-Processing Restrictions\nYou can not manually change the ML predictions. Only minimal post-processing of the prediction is allowed. You may clean your predictions by removing invalid values (e.g., NaN, Inf, -Inf), but additional filtering or smoothing operations are not permitted.\n\n###Training Data Considerations\nThe first 12 time frames of each simulation capture the initial wavefield build-up from the earthquake source. The remaining times in the simulation do not contain the source.\n\nIf you're using an ML auto-regressive model (like in the baseline), taking a single previous time frame and predicting the next, you should consider excluding the first 12 time frames to avoid implicit source injection effects, as the \"physics\" in the between the first 12 time frames and the time frames afterwards are different.\n\nIf you're using an end-to-end ML model that takes all 15 input time frames and predicts all 45 future time frames in one shot, including the first 12 time frames may still be beneficial, as the ML may learn how to map the initial time period with the source to the later time period without the source.\n\n### Submission Guidelines\nIt is tricky to submit your final results here, as Kaggle only accepts .csv files for submission. Your submission should be a single CSV file (wavefield_predictions.csv) containing predicted wavefields for all 100 test samples, each with 45 future time framesfs on a 64 × 128 spatial grid and 2 channels (vx, vz). \n##### Dimensions\nEach sample has: 45 time frames × 64 × 128 spatial grid × 2 channels = 737,280 predicted values\nFinal submission shape: 737,280 rows × 101 columns\nThe CSV should follow this structure:\n| ID     | 0   | 1   | 2   | ... | 98  | 99  |\n| ------ | --- | --- | --- | --- | --- | --- |\n| 0      | v   | v   | v   | ... | v   | v   |\n| 1      | v   | v   | v   | ... | v   | v   |\n| ...    | ... | ... | ... |     | ... | ... |\n| 737279 | v   | v   | v   | ... | v   | v   |\n\nThe ID column (0 to 737279) is required and must be the first column. Each subsequent column (0–99) represents predictions for the corresponding test sample. Each column must contain the flattened output of shape (45, 64, 128, 2) → flattened in C-order (default NumPy .reshape(-1)):\n\nColumn 1 is prediction for 0.npy\nColumn 2 for 1.npy\n...\nColumn 100 for 99.npy\n\nWe highly recommend you use the code below to structure your submission. \n\n<pre> ```\npython import numpy as np \nimport pandas as pd \nwavefield_data = ***YOUR PREDICTION, FILL THIS IN***  # prediction, 45 frames for all 100 samples: shape (100, 45, 64, 128, 2) \nwavefield_data = wavefield_data.astype('float32') \nflattened = wavefield_data.reshape(100, -1) # Flatten each sample: (100, 737280) \nsubmission = pd.DataFrame(flattened).T # Transpose so each column is one sample → (737280, 100) \nsubmission.insert(0, 'ID', np.arange(737280)) # Add ID column \nsubmission.to_csv(\"wavefield_predictions.csv\", index=False) # Save to CSV \n``` </pre>\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Kaggle Contest Baseline Code",
      "content": "We have uploaded the Kaggle contest baseline to our class GitHub repo: [**https://github.com/GP248CME215/Kaggle-2D-Elastic-Wave**](https://github.com/GP248CME215/Kaggle-2D-Elastic-Wave). This notebook is an example for those unfamiliar with model building, but please do not feel the need to use it.\n\nIt includes 2 files: \n**training_model_FNO_colab.ipynb** is the model using half of the dataset, a smaller size FNO compared to the baseline model (**training_model-FNO-baseline-2.ipynb**), to avoid crashing Colab RAM. Though the performance is pretty bad with this version, you can work with Colab to play with FNO and write your architecture. \n\n**At the bottom of the baseline code, we have also provided the part where you can create the CSV submission file for Kaggle. Please also check it out!**\n\nHere are a few visualizations of the baseline model: \n1. Example in the training set\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F26754135%2Fb8b1187f829259dc6a9c85c9de16aec5%2Ftraining_exmaple.gif?generation=1748993217946573&alt=media)\n2. Example in the Validation set: \n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F26754135%2F9757d19c30f6acdee94d07979f623991%2Fvalidation_exmaple-2.gif?generation=1748993227285650&alt=media)",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Computing Options",
      "content": "**1. Colab**\nYou might want to only use Colab to develop and debug your code, and use Sherlock or the Jupyterhub cluster to fully train the model, as you can easily crash your Colab RAM with a full dataset and a large model.\n\nIn Colab, in the \"Runtime\" panel, you can go into \"Change runtime type\" to choose CPU, GPU, or TPU. With a GPU (T4 provided by Colab), the acceleration of training FNO may easily reach 50+ times speedups compared to CPU. It will be highly recommended to run with a GPU for this task. But make sure that if you choose GPU, you shut down the runtime when finishing the program to avoid wasting limited runtime resources.\n\n**2. Jupyterhub cluster**\nYou can train for up to 10 hours at a time, as long as you can **keep your browser window open and the computer in non-sleep mode throughout the training periods**. It's not ideal, but it's similar to running code on your own laptop, just with a faster remote GPU. Use it with the following precautions:\n\n- Prevent Your Computer from Sleeping:\nYou can adjust this in your system settings. On Mac, apps like KeepingYouAwake or Caffeine allow easy toggling to keep your device awake. For overnight jobs, make sure your computer is plugged in and screen brightness is turned down.\n\n- Use Checkpoints:\nConsider saving your model's state at regular intervals. Implement logic to automatically resume from the latest checkpoint to reduce loss of progress after any unexpected disconnection.\n\n- Use a Secondary Browser:\nTo avoid accidentally closing your training session, consider running JupyterHub in a browser you don’t use for regular browsing (e.g., Safari if you normally use Chrome).\n\n[This document](https://docs.google.com/document/d/10akwR9tztA04XMvKKqC7cPHiw8Fsl7j9iGs8p2FQylA/edit?usp=sharing) containing detailed instructions on accessing and using the compute interface. Accounts have been created for each of you, and we have added the username and password in [this spreadsheet](https://docs.google.com/spreadsheets/d/1NwMOehALXiTOO2UMynRGSOw89H80TtP4BkNbhIS2pdk/edit?gid=289040126#gid=289040126). \n\n**3. Sherlock cluster**\nPhD students can ask their advisor to request Sherlock account for them. If you already have an Sherlock account, this is the best option as the GPUs are fast and it will not interrupt the local tasks on your laptop.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "References",
      "content": "See here for longer list of [useful papers] (https://docs.google.com/spreadsheets/d/1NwMOehALXiTOO2UMynRGSOw89H80TtP4BkNbhIS2pdk/edit?usp=sharing) for the Kaggle contest \n1. [Seismic Wave Propagation and Inversion with Neural Operators] (https://pubs.geoscienceworld.org/ssa/tsr/article/1/3/126/609317/Seismic-Wave-Propagation-and-Inversion-with-Neural)\n2. [Fourier Neural Operator for Parametric Partial Differential Equations](https://arxiv.org/abs/2010.08895) and [FNO's author, Zongyi Li's personal website for FNO](https://zongyi-li.github.io/blog/2020/fourier-pde/)\n3. [Fourier-DeepONet: Fourier-enhanced deep operator networks for full waveform inversion with improved accuracy, generalizability, and robustness ](https://arxiv.org/abs/2305.17289)\n4. [Learning to solve the elastic wave equation with Fourier neural operators ](https://pubs.geoscienceworld.org/seg/geophysics/article/88/3/T101/622138/Learning-to-solve-the-elastic-wave-equation-with)\n5. [WaveCastNet: An AI-enabled Wavefield Forecasting Framework for Earthquake Early Warning] (https://arxiv.org/abs/2405.20516)",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}