User Tag List

Results 1 to 15 of 15

Thread: Chemistry!

  1. #1
    2

    Science!

    Project Introduction and current Progress:




    --------------------------
    Original Post
    --------------------------
    Sort of a re-post from the marketplace thread I started on the subject, though instead of constantly updating that, decided to move it down to the WIP. Long history short, one of the game's I have going on is a Sci-Fi based on Reality game. As such, I am trying to put together a few "systems" that are based on real-world data. One of those systems is chemistry. There was a little bit of interest in the system, so I plan on releasing a blank project with the chemistry stuff (free of charge). Here is what is going on currently:

    The two main parts in this system is the (Technical) Periodic Table data table, henceforth known as: Element Table. The element table has:

    - Element Name
    - Element Symbol
    - Top 3 common usage
    - Allotropes for the Element (if any)
    - Atomic number
    - Element Group
    - Element Block
    - Electron Shells / Period
    - Electron Configuration Per Shell
    - Atomic Mass
    - Atomic Radius
    - Covalent Radius
    - Van Der Waals Radius
    - Phase
    - Element Category
    - Category Description
    - Melting Point
    - Boiling Point
    - Density (Room Temperature)
    - Density (Melting Point)
    - Critical Point
    - Heat of Fusion
    - Heat of Vaporization
    - Molar Heat Capacity
    - Thermal Conductivity
    - Thermal Expansion
    - Valence
    - Electronegativity
    - Electron Affinity
    - Ionization Energies
    - Electrical Type
    - Electrical Conductivity
    - Electrical Resistivity
    - Superconducting Point

    To go along with the Element Table, I am also including a Blueprint Function Library entitled ChemMathFunc. This function library combined with the data table makes up the heart of the system. The plan for ChemMathFunc is to include various chemical and physical laws / equations in which you can then use. Please note that I will most likely need a "scientific review" of the blueprint graphs. I can only hope that I am doing this right.. So far, Here is what I have now:

    - Temperature Conversions
    --- Kelvin to Celsius
    --- Celsius to Kelvin
    --- Fahrenheit to Celsius
    --- Celsius to Fahrenheit
    --- Kelvin to Fahrenheit
    --- Fahrenheit to Kelvin

    - General
    --- Density Equation
    --- Moles
    --- Reaction Rate
    --- de Broglie's Equation
    --- Planck Constant
    --- Momentum
    --- Coulomb's Constant

    - Element Data
    --- Get Element Data
    --- Get Compound Data

    - Atomic Structure
    --- Energy of Wave
    --- Wave Relation
    --- Coulomb's Law

    So, after 4 days of starting on this system, I currently have 28/103 elements stored in the Element Table, and the functions I listed completed. I also figured a way to use (double?) point precision floats in the engine by splitting the float into the Constant and the Exponent, so instead of 1.32 * 10^23, I use 2 floats:

    C = 1.32
    E = 23

    Anyways, I'll probably be making a generic Paper2D project with everything in it once it's ready to be released (ie: has undergone scientific review to make sure everything is legit), at which point, I'll check with the guys at Epic to see about putting it on the marketplace for free so I can keep (better) track of downloads for it.

  2. #2
    0
    Wow, that is quite impressive! I haven't seen something like this before. Good job
    JUSTIN SAUNDERS - THE GAME DEVELOPER IN DEVELOPMENT

  3. #3
    0
    Been awhile for an update, so figured I'd post at least something.

    I did a bit of "re-organization" which, while minor, should benefit in the long run, especially once this releases. Copied the system over to a blank project for easier load times as well as release stuff. Also thought about the implications of doing this (if this is successful, and does what I'm trying to push it to do). Decided to continue the project Since I've been playing "clean up", removed the "category description" field as their is no need to have that, at least, in the data table. I also created a BPC as a "Dictionary" - that is where the category descriptions will go.

    Looking at the direction this is taking me, it might be a bigger project than I thought, as it is also taking a turn towards atomic/quantum physics. Yay, strings.

  4. #4
    0
    Samaritan
    Join Date
    Aug 2015
    Posts
    118
    Hey SaviorNT,

    This is a very welcome asset. I thought about doing something similar, though got hung up with several other projects. It looks like what you're working on here is gonna blow what I had planned out of the water! I also had plans to do a reusable system for electronics engineering... Your organization from the first post has given me some more inspiration for the direction of that. I look forward to tinkering with this.

    Thanks again, and keep up the good work!

  5. #5
    0
    Edit: UE4 Integers are 11 digits long (just found out). So while this will work, I'll need to create an array and break up the numbers into smaller parts (5 digits long), and then calculate those. If the end result is > 11 digits long, then I'll have to parse it as a string. The same methodology below still applies, more or less though. Fun times! I'll try to split (at the most) into 3 different integers (33 digits total).. however, I would like to get up to a googolplex in accuracy though (10^100). That shouldn't be too hard though tbh, it's only an array of 20 items that are 5 digits each. Or I can just call it a day and estimate to the 10^10 decimal places instead. /sigh.

    Ok, so I have a bit of documentation to share, in regards to the float variables and how to work with HUGE numbers accurately. If this is off, PLEASE PLEASE PLEASE let me know. I am sort of hacking this together I haven't yet looked at how large the Integer variable type can go, however, here is the start:

    Let's look at the famous E = MC^2. Now, would the class like to let me know the energy output of our sun is? Let's break it down:

    All numbers must be in this format: X.YYYY * 10^Z
    X = Integer
    Y = Decimal
    Z = Exponent

    Take for example c; the speed of light, which is 2.99792458 * 10^8 m/s. This would be broken up to:

    SpeedOfLightInteger: 2
    SpeedOfLightDecimal: 99792458
    SpeedOfLightExponent: 8

    In order to do math with the speed of light, let's calculate the total energy output of the sun by using Einstein's e=mc^2

    Mass of the sun: 1.989 * 10^30 kg

    The normal equation for this would be:

    e = (1.989 * 10^30 kg)*((2.99792458 * 10^8 m/s)^2)

    First, we need to break down each number to it's basic forms:

    EnergyInteger = x
    EnergyDecimal = y
    EnergyExponent = z

    SunMassInteger = 1
    SunMassDecimal = 989
    SunMassExponent = 30

    SpeedOfLightInteger: 2
    SpeedOfLightDecimal: 99792458
    SpeedOfLightExponent: 8

    After this is done, it's time to do some math. First up is c^2, which, in normal form, is 8.9875517873681764 * 10^16

    First, let's get the simple thing out of the way:

    SpeedOfLightExponent = SpeedOfLightExponent + SpeedOfLightExponent

    This gives us 10^16

    Now, what we need to do is to combine the SpeedOfLightInteger with the SpeedOfLightDecimal:

    SpeedOfLightTemp = 299792458

    Once we have that integer, we then then multiply that by itself (TempInteger^2):

    SpeedOfLightTempInteger = SpeedOfLightTempInteger * SpeedOfLightTempInteger
    SpeedOfLightLightTempInteger = 299792458 * 299792458
    SpeedOfLightLightTempInteger = 89875517873681764

    After this is done, we then need to take the first number from the left, and set our SpeedOfLightInteger to that number.

    SpeedOfLightInteger = 8

    After that, we then set the SpeedOfLightDecimal to the remaining numbers:

    SpeedOfLightDecimal = 9875517873681764

    If we then perform an combine all the integers, and create a string from it:

    SpeedOfLightInteger + "." + SpeedOfLightDecimal + " x 10^" + "SpeedOfLightExponent" we will get:

    SpeedOfLightString = 8.9875517873681764 * 10^16

    So, this calculates c^2, what about multiplying that number by m? Same process applies!

    Take our exponents and add them together:

    EnergyExponent = SpeedOfLightExponent + SunMassExponent
    EnergyExponent = 16 + 30
    EnergyExponent = 46

    And then, we combine the xInteger with the xDecimal for both values and then multiply together:

    SpeedOfLightTempInteger = 89875517873681764
    MassOfSunTempInteger = 1989
    EnergyTempInteger = 178762405050753028596

    EnergyInteger = 1
    EnergyDecimal = 78762405050753028596
    EnergyExponent = 46
    EnergyString = 1.78762405050753028596 x 10^46

    --------------------------------------------

    So the plan here is to create separate math functions, Add, Subtract, Multiply, Divide with 6 different Integer inputs, and output 3 integers and a string variable using the same type of process as described above. I will also need to modify the Data Table's Struct to account for everything being in integers, as well as re-do the functions so the float values can be converted to the integer format instead. Also, it will be nice to get the naming normalized (as above, that's what I'm going with... <name>Integer, <name>Decimal, <name>Exponent, <name>String.

    Edit 2: Justification

    I'm pretty !@#% OCD when it comes to being accurate. Not sure why, but I just am. If you do a search on my answer for the energy output of the Sun, and cross reference to what is found on the web, you'll see that my answer is far different than say... NASA's answer!.. the reason why is that they are calculating the numbers as approximates, not exacts.

    Quote Originally Posted by http://helios.gsfc.nasa.gov/qa_sun.html, Dr. Louis Barbier

    The Sun's output is 3.8 x 1033 ergs/second, or about 5 x 1023 horsepower. How much is that? It is enough energy to melt a bridge of ice 2 miles wide, 1 mile thick, and extending the entire way from the Earth to the Sun, in one second.

    Dr. Louis Barbier

    How he/she got this radically different number? By calculating c as 300,000,000 m/s (it is in fact, 299,792,458 m/s), the mass of the sun as 2 * 10^30kg (it is 1.989 * 10^30 kg). Hopefully you guys can see why accuracy is so important to me. And we're going to let these guys fly us to Mars.....

    edit 3:

    Exponential math functions are done.

  6. #6
    0
    Another day, some progress.

    Decided to end up keeping floats rather than using integers due to the length limits of them, even if floats can be inaccurate to a fault. Up to the 5th period in the elements, hopefully tomorrow I get to the 7th. Got a bit bored of the periodic table, so created an actor component blueprint named definitions. This will hold the definitions for each subject matter in a series of events named Get (subject) Definitions", which then lead to a collapsed graph with those terms/definitions. The terms are all enumerated, switched, and then the definition variable is set.

    Worked a bit on the UMG side of things, and this might raise some eyebrows (in a good way, I hope!)

    Main Menu:

    Name:  mainMenuBasic.PNG
Views: 490
Size:  27.6 KB

    Learning Album:

    Name:  learningalbumbasic.PNG
Views: 491
Size:  43.5 KB

    PS: Who do I message to change the thread title.. since this is expanding from strictly chemistry, may as well name it as Science!

  7. #7

  8. #8
    0
    Quote Originally Posted by SaviorNT View Post

    I'm pretty !@#% OCD when it comes to being accurate. Not sure why, but I just am. If you do a search on my answer for the energy output of the Sun, and cross reference to what is found on the web, you'll see that my answer is far different than say... NASA's answer!.. the reason why is that they are calculating the numbers as approximates, not exacts.


    How he/she got this radically different number? By calculating c as 300,000,000 m/s (it is in fact, 299,792,458 m/s), the mass of the sun as 2 * 10^30kg (it is 1.989 * 10^30 kg). Hopefully you guys can see why accuracy is so important to me. And we're going to let these guys fly us to Mars.....

    edit 3:

    Exponential math functions are done.
    I believe the reason for the different results is that the quoted values are the power of the sun (energy per second) while you calculated the overall energy of the sun.
    The error introduced by approximating speed of light and sun mass is about 1%. ((1.989 * 10^30 kg))/(2 * 10^30 kg)).

    Also, to make your life simpler, you generally don't need 'safe' work-arounds for multiplication and division operations of floats. Both operations are 'immune' to rounding errors. In these cases float point precision only affects the number of significant digits of your result which is usually not a problem. You will rarely have input with greater precision anyway and your results can never be more precise than you starting values. This means that the true result of your computation is 1.787 x 10^46 which is well within the precision of single precision floats. The additional digits are not significant.

    I hope this doesn't sound too negative. I think its a cool project.

  9. #9
    0
    Quote Originally Posted by Praseodyl View Post
    I believe the reason for the different results is that the quoted values are the power of the sun (energy per second) while you calculated the overall energy of the sun.
    The error introduced by approximating speed of light and sun mass is about 1%. ((1.989 * 10^30 kg))/(2 * 10^30 kg)).

    Also, to make your life simpler, you generally don't need 'safe' work-arounds for multiplication and division operations of floats. Both operations are 'immune' to rounding errors. In these cases float point precision only affects the number of significant digits of your result which is usually not a problem. You will rarely have input with greater precision anyway and your results can never be more precise than you starting values. This means that the true result of your computation is 1.787 x 10^46 which is well within the precision of single precision floats. The additional digits are not significant.

    I hope this doesn't sound too negative. I think its a cool project.
    No, not at all I'm not exactly a physics major or anything

    Also, I'm getting close to being able to generate an atom using the values from my data table, yay!

  10. #10
    0
    Samaritan
    Join Date
    Aug 2015
    Posts
    118
    I'm getting more and more stoked about this, with each each update. I am also obsessed with accuracy- to a fault!

  11. #11
    0
    4 days.. 4 days I have been searching for a (quick) and (modular) way to create the electron shells, until it finally dawned on me while I was cooking some Ramen. Instead of trying to generate all of the torus' using the spline and spline mesh components, why not just make a !@#% torus in Max, and then just scale it up/down + rotation. So in four days, here is what I managed to get done (This is just the Shell Generation function, there are also functions for: GetAtomicInfo, BuildNucleusShell, and BuildNucleus).

    Name:  ElectronShellGeneration.PNG
Views: 423
Size:  75.4 KB

    Also!! I have something else to share Here is the first look at what a Carbon atom looks like.. or at least, my rendition of it

    Name:  IGCarbon.PNG
Views: 425
Size:  588.7 KB

    This is actually a pretty good milestone in the project, as while it is (hugely) simple, it shows that the enums, structs, data tables, and blueprints work. I just need to create a sphere volume that is the same size as the inner shell, and then randomly re-locate the protons and neutrons inside of it. After that, I can look at proton/neutron movement inside of the nucleus, and add material effects to "make it look pretty".

    Just a little technical explanation as well; there are 3 meshes being used, and I could reduce that down to 2.. everything is being spawned as HISMs, which are, from what I have heard, less expensive than using ISMs. Also there are 1 material, and 5 material instances. (The protons and neutrons cannot be seen, they're all stacked on each other in the center - but they are there, I promise )

    Edit: I just wanted to add, before I hit the sack this evening, now that everything is at scale ( 1:100 ), I looked at what a single molecule of H20 looks like.. and wonders never cease to amaze. How the !@#% did the universe decide that these two elements could combine together? If I could compare.. perhaps, it would be like a normal sized car, towing a matchbox car, and that matchbox car is towing another full size car behind it. Double ya tee eff.

  12. #12
    0
    Started looking into purification, namely for water (curiosity - how to build a "still-suit" from dune? Get a wicking material as the skin->material as the base, then use a charcoal lining on top, then a waterproof material. Line the inside with tubes to capture the water, feed it into a reverse osmosis + electrodialysis pack, and then feed the water to one container, the waste to another).. anyways, was looking into constants (faraday's constant), and came across another good site:

    http://www.ebyte.it/library/educards/constants/ConstantsOfPhysicsAndMath.html

    The entire site looks like it could be pretty useful.

    Doesn't need a new post, but if anyone is following the thread:

    Quote Originally Posted by http://bgr.com/2016/12/02/new-elements-discovered-periodic-names/

    The periodic table just got some new members, as the International Union of Pure and Applied Chemistry has officially accepted new names for four elements. Element numbers 113, 115, 117 and 118 will no longer be known by their placeholder names, and instead have all-new monikers decided upon by their discoverers.

    The discoveries were first recognized about a year ago, and the proposed names for them were decided upon this past June. Now, chemistry’s highest group has decided they are valid and will move forward with the all-new labels.

    - Nihonium (Nh), is element 113, and is named for the Japanese word for Japan, which is Nihon.
    - Moscovium (Mc), element 115, is named for Moscow.
    - Tennessine (Tn), element 117, is named for Tennessee.
    - Oganesson (Og), element 118, is named after Yuri Oganessian, honoring the 83-year-old physicist whose team is credited with being the top element hunters in the field.

    The official names will take the spot of placeholder titles that were given to the elemental numbers prior to their formal discovery. Those names — ununtrium, ununpentium, ununseptium and ununoctium — occupied the seventh row of the periodic table, and will now be discarded.

    “The names of the new elements reflect the realities of our present time,” IUPAC President Prof Natalia Tarasova says via press release. “Universality of science, honoring places from three continents, where the elements have been discovered — Japan, Russia, the United States — and the pivotal role of human capital in the development of science, honoring an outstanding scientist — Professor Yuri Oganessian”.

    With row seven now completed, chemists look to the road ahead, and hope to discover entirely new elements, keeping science on its toes and periodic table poster printers in business.

  13. #13
    0
    Bit of an update, and alot of work as been done on the project

    FunctionLibrary

    1. Normalized all Input/Output pins so that they have consistent terminology
    2. Created a simple BuildConstantString which takes the NumberIn, ExponentIn, and returns NumberOut, ExponentOut, and String (It builds a human readable string for the number and exponent, ex: 1.214586789 * 10^46). Any function that returns a number and exponent uses this function to also return a string.
    3. Added the following constant classes from Physics and Math Constants Library List:
      • Universal Constants
      • Electromagnetic Constants
      • Electromagnetic Radiation Constants
      • Electron and Atomic Physics Constants
      • Physico-Chemical Constants


    New Additions

    1. Enum: Terms_Common - This enum is apart of the dictionary BP Component, it includes terms which are universal in any science field.
    2. Enum: Terms_Chemistry - This enum includes terms which are only seen in the chemistry science field the majority of the time.
    3. Struct: Struct_UserNotes - This struct is designed so that the "player" can create and save notes.
    4. Struct: Struct_ChemistryLaws - This struct designs the data table for the list of chemistry laws.
    5. Struct: Struct_FiltrationMethods - This struct designs the data table for the list of filtration methods and steps.
    6. DataTable: Data_ChemistryLaws - List of laws in the chemistry field. This table does not include any thermodynamic laws (they will go into Data_PhysicsLaws).
    7. DataTable: Data_FiltrationMethods - Methods and steps for the following filtration methods:
      • Gravity Filtration
      • Vacuum Filtration
      • Distillation
      • Crystallization
      • Electrolysis


    What's Next?

    I am still (re-)learning all of my basic science fields, starting with chemistry. As I go along the books (Basic Chemistry/Highschool Level up to Advanced College levels), I am continuing to add definitions, formulas, constants, etc... that I find. I had attempted to create Schrodinger's Equation within blueprints, but.. umm.. yea. I'm not quite there yet I also have posted in the material part of the forums requesting help with creating a wave material that obeys wave dynamics with the expectation that I can use that to visualize the double-slit experiment within the quantum physics aspect of this project.

    Books and Study Materials

    I figured I would post the study materials that I am using to create this project, in case anyone would like to "follow along"

    1. Websites
    2. Books (Amazon Kindle for the win)
      • Astronomy Today
      • Campbell Biology - 10th Edition
      • Chemistry, The Central Science
      • Essentials of Geology - 11th Edition
      • Essentials of Oceanography - 10th Edition
      • Fundamentals of Physics Extended - 10th Edition
      • Physics - Principles with Applications
      • The Physics of Quantum Mechanics


    Newest Screenshot - Template_Textbook

    Name:  Template_Textbook.PNG
Views: 312
Size:  97.6 KB

    All of the "textbook" stuff will scale to whatever the current platform screen size is.

    And that's the update! I feel as if instead of being a "developer", I am instead being just a data entry clerk :\ Ah well, it's for the good of mankind, right?

  14. #14
    0
    Weekly update:

    Started on the basic physics stuff, basically adding the various formulas into the function library, as well as some basic trig functions such as sphere/circle information, displacements (time, location), calculating "the sum of" with a set of numbers in an array, the quadratic equation, and the Pythagorean theorem in their basic forms.

    With adding the various "laws", I have started to wonder why all of the formulas are in one dimensional format where we live in a three dimensional space. Of course, it's just vector math, but still.. in school we always dealt with one dimensional spaces, not three dimensional space. Let's take Force:

    Positional Displacement = X2 - X1
    Time Displacement = T2 - T2
    Velocity = Positional Displacement / Time Displacement
    Acceleration = Velocity / Time Displacement
    Force = Mass * Acceleration

    However, it is always taught that X sub 1 and X sub 2 (X1, X2) are individual floats, not vectors :\ Anyways, due to this, I'm adding one dimensional and three dimensional functions, which return either the float or vector. The above set of formulas return 1 dimensional figures, where as if you change the positional displacement to X1: (X1, Y1, Z1), X2: (X2, Y2, Z2), you can get the force in all three dimensions. I think

    In addition, to create a calculator with UMG, I also added a nifty function titled: "String: Set Array Elem With AutoIndex". It would be nice if the compiler wouldn't error when using wildcards, but yea. It does what the title says, it uses the input pins: Target Array (string array), Item (string), and Size to Fit (boolean), gets the length of the array, if the length is 0, then it sets the index to 0. If the length is more than 0, it increments the index (from 0), and then sets the array element. I also have an output pin with the Target Array Out so that the connections are a bit less spaghetti-fied.

  15. #15
    0
    Just an update on this. I have NOT stopped working on it, however, the project itself is kind of frozen as I'll need to get consultants in various fields to help (gotta pay them) as well as time/funds to complete.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •