IP Library Granted Patent US 10,192,010
Granted Patent B1
US 10,192,010 · App. 15/164,125 · Granted Jan 29, 2019

Simulation of chemical reactions via multiple processing threads

Inventors: Jonathan Ross (Mountain View, CA); Jason Thompson (Redwood City, CA)
Assignee: X Development LLC
G06F17/5009G06F19/702
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,192,010
App. No.
15/164,125
Granted
Jan 29, 2019
Kind
B1
Abstract

An example method may include identifying (i) a first group of reactions that corresponds to a first set of precursors and a first set of reaction products and (ii) a second group of reactions that corresponds to a second set of precursors and a second set of reaction products. No precursor in the first set of precursors is also in the second set of precursors, no reaction product in the first set of reaction products is also a precursor in the second set of precursors, and no reaction product in the second set of reaction products is also a precursor in the first set of precursors. The method may also include executing a first processing thread to iteratively calculate respective quantities of the precursors in the first set of precursors and executing a second processing thread to iteratively calculate respective quantities of the precursors in the second set of precursors.

Claims (88)

1. A method comprising:

identifying a first group of one or more chemical reactions and a second group of one or more chemical reactions, wherein the first group of one or more chemical reactions use a first set of one or more precursors to produce a first set of one or more reaction products and the second group of one or more chemical reactions use a second set of one or more precursors to produce a second set of one or more reaction products, such that (a) no precursor in the first set of one or more precursors is also in the second set of one or more precursors, (b) no reaction product in the first set of one or more reaction products is also a precursor in the second set of one or more precursors, and (c) no reaction product in the second set of one or more reaction products is also a precursor in the first set of one or more precursors;

based on reaction kinetics of the one or more chemical reactions of the first group and initial respective quantities of the one or more precursors in the first set of one or more precursors, executing a first processing thread to iteratively calculate subsequent respective quantities of the one or more precursors in the first set of one or more precursors; and

based on reaction kinetics of the one or more chemical reactions of the second group and initial respective quantities of the one or more precursors in the second set of one or more precursors, executing a second processing thread to iteratively calculate subsequent respective quantities of the one or more precursors in the second set of one or more precursors,

wherein the first processing thread and the second processing thread are executed contemporaneously,

wherein the first group of one or more chemical reactions comprises a first chemical reaction, a second chemical reaction, and a third chemical reaction,

wherein the first set of one or more precursors comprises a first precursor, a second precursor, and a third precursor,

wherein the first precursor is a precursor of the first chemical reaction and a precursor of the second chemical reaction,

wherein the second precursor is a precursor of the second chemical reaction, and

wherein the third precursor is a precursor of the second chemical reaction and a precursor of the third chemical reaction, the method further comprising:

determining that an amount remaining of the second precursor is less than a threshold amount by executing the first processing thread;

iteratively calculating further subsequent quantities of the third precursor by executing a third processing thread; and

contemporaneous with the execution of the third processing thread, continuing to execute the first processing thread to iteratively calculate further subsequent quantities of the first precursor.

2. The method of claim 1 , further comprising:

executing the first processing thread to iteratively calculate respective quantities of the one or more reaction products in the first set of reaction products; and

executing the second processing thread to iteratively calculate respective quantities of the one or more reaction products in the second set of reaction products.

3. The method of claim 1 , wherein the first processing thread is executed by a first processor of a computing device and the second processing thread is executed by a second processor of the computing device.

4. The method of claim 1 , wherein the first processing thread is executed by a processor of a first computing device and the second processing thread is executed by a processor of a second computing device.

5. The method of claim 1 ,

wherein the first group of one or more chemical reactions comprises a fourth chemical reaction and one or more fifth chemical reactions, and

wherein the first set of one or more precursors comprises a particular precursor that is a precursor of the fourth chemical reaction, the method further comprising:

executing the first processing thread to determine that the fourth chemical reaction has become decoupled from the one or more fifth chemical reactions; and

in response to determining that the fourth chemical reaction has become decoupled from the one or more fifth chemical reactions, executing a fourth processing thread to iteratively calculate subsequent quantities of the particular precursor.

6. The method of claim 1 , further comprising:

determining that the first group of one or more chemical reactions has become recoupled to the second group of one or more chemical reactions; and

in response to determining that the first group of one or more chemical reactions has become recoupled to the second group of one or more chemical reactions, executing a single processing thread to iteratively calculate subsequent respective quantities of both the first set of one or more precursors and the second set of one or more precursors.

7. The method of claim 1 , further comprising:

determining that an amount of the second precursor is greater than the threshold amount; and

in response to determining that the amount of the second precursor is greater than the threshold amount, executing a single processing thread to iteratively calculate subsequent respective quantities of both (a) the second precursor and (b) the first precursor or the third precursor.

8. The method of claim 1 , further comprising:

prior to executing the first processing thread and executing the second processing thread, receiving input indicating (a) the initial respective quantities of the one or more precursors in the first set and (b) the initial respective quantities of the one or more precursors in the second set.

9. The method of claim 1 , wherein executing the first processing thread comprises:

based on the reaction kinetics of the one or more chemical reactions of the first group and the initial respective quantities of the one or more precursors in the first set, assigning respective probabilities to the one or more chemical reactions of the first group,

wherein the subsequent respective quantities of the one or more precursors in the first set are calculated by comparing a randomly generated number to at least one of the respective probabilities to determine which of the one or more chemical reactions of the first group occurs next.

10. The method of claim 1 , wherein executing the first processing thread comprises:

based on the reaction kinetics of the one or more chemical reactions of the first group and the initial respective quantities of the one or more precursors in the first set, determining respective reaction rates for each of the one or more chemical reactions of the first group,

wherein the subsequent respective quantities of the one or more precursors in the first set are calculated by using the determined respective reaction rates.

11. One or more units of non-transitory computer readable media storing instructions that, when executed by a computing system, cause the computing system to perform functions comprising:

identifying a first group of one or more chemical reactions and a second group of one or more chemical reactions, wherein the first group of one or more chemical reactions use a first set of one or more precursors to produce a first set of one or more reaction products and the second group of one or more chemical reactions use a second set of one or more precursors to produce a second set of one or more reaction products, such that (a) no precursor in the first set of one or more precursors is also in the second set of one or more precursors, (b) no reaction product in the first set of one or more reaction products is also a precursor in the second set of one or more precursors, and (c) no reaction product in the second set of one or more reaction products is also a precursor in the first set of one or more precursors;

based on reaction kinetics of the one or more chemical reactions of the first group and initial respective quantities of the one or more precursors in the first set of one or more precursors, executing a first processing thread to iteratively calculate subsequent respective quantities of the one or more precursors in the first set of one or more precursors; and

based on reaction kinetics of the one or more chemical reactions of the second group and initial respective quantities of the one or more precursors in the second set of one or more precursors, executing a second processing thread to iteratively calculate subsequent respective quantities of the one or more precursors in the second set of one or more precursors,

wherein the first processing thread and the second processing thread are executed contemporaneously,

wherein the first group of one or more chemical reactions comprises a first chemical reaction, a second chemical reaction, and a third chemical reaction,

wherein the first set of one or more precursors comprises a first precursor, a second precursor, and a third precursor,

wherein the first precursor is a precursor of the first chemical reaction and a precursor of the second chemical reaction,

wherein the second precursor is a precursor of the second chemical reaction, and

wherein the third precursor is a precursor of the second chemical reaction and a precursor of the third chemical reaction, the functions further comprising:

determining that an amount remaining of the second precursor is less than a threshold amount by executing the first processing thread;

iteratively calculating further subsequent quantities of the third precursor by executing a third processing thread; and

contemporaneous with the execution of the third processing thread, continuing to execute the first processing thread to iteratively calculate further subsequent quantities of the first precursor.

12. The one or more units of non-transitory computer readable media of claim 11 ,

wherein the first group of one or more chemical reactions comprises a fourth chemical reaction and one or more fifth chemical reactions, and

wherein the first set of one or more precursors comprises a particular precursor that is a precursor of the fourth chemical reaction, the functions further comprising:

executing the first processing thread to determine that the fourth chemical reaction has become decoupled from the one or more fifth chemical reactions; and

in response to determining that the fourth chemical reaction has become decoupled from the one or more fifth chemical reactions, executing a fourth processing thread to iteratively calculate subsequent quantities of the particular precursor.

13. The one or more units of non-transitory computer readable media of claim 12 , the functions further comprising:

determining that the first group of one or more chemical reactions has become recoupled to the second group of one or more chemical reactions; and

in response to determining that the first group of one or more chemical reactions has become recoupled to the second group of one or more chemical reactions, executing a single processing thread to iteratively calculate subsequent respective quantities of both the first set of one or more precursors and the second set of one or more precursors.

14. The one or more units of non-transitory computer readable media of claim 11 , the functions further comprising:

executing the first processing thread to iteratively calculate respective quantities of the one or more reaction products in the first set of reaction products; and

executing the second processing thread to iteratively calculate respective quantities of the one or more reaction products in the second set of reaction products.

15. The one or more units of non-transitory computer readable media of claim 11 , wherein the first processing thread is executed by a first processor of a computing device and the second processing thread is executed by a second processor of the computing device.

16. The one or more units of non-transitory computer readable media of claim 11 , wherein the first processing thread is executed by a processor of a first computing device and the second processing thread is executed by a processor of a second computing device.

17. The one or more units of non-transitory computer readable media of claim 11 , the functions further comprising:

determining that an amount of the second precursor is greater than the threshold amount; and

in response to determining that the amount of the second precursor is greater than the threshold amount, executing a single processing thread to iteratively calculate subsequent respective quantities of both (a) the second precursor and (b) the first precursor or the third precursor.

18. A computing system comprising:

one or more processors; and

one or more memory units storing instructions that, when executed by the one or more processors, cause the computing system to perform functions comprising:

identifying a first group of one or more chemical reactions and a second group of one or more chemical reactions, wherein the first group of one or more chemical reactions use a first set of one or more precursors to produce a first set of one or more reaction products and the second group of one or more chemical reactions use a second set of one or more precursors to produce a second set of one or more reaction products, such that (a) no precursor in the first set of one or more precursors is also in the second set of one or more precursors, (b) no reaction product in the first set of one or more reaction products is also a precursor in the second set of one or more precursors, and (c) no reaction product in the second set of one or more reaction products is also a precursor in the first set of one or more precursors;

based on reaction kinetics of the one or more chemical reactions of the first group and initial respective quantities of the one or more precursors in the first set of one or more precursors, executing a first processing thread to iteratively calculate subsequent respective quantities of the one or more precursors in the first set of one or more precursors; and

based on reaction kinetics of the one or more chemical reactions of the second group and initial respective quantities of the one or more precursors in the second set of one or more precursors, executing a second processing thread to iteratively calculate subsequent respective quantities of the one or more precursors in the second set of one or more precursors,

wherein the first processing thread and the second processing thread are executed contemporaneously,

wherein the first group of one or more chemical reactions comprises a first chemical reaction, a second chemical reaction, and a third chemical reaction,

wherein the first set of one or more precursors comprises a first precursor, a second precursor, and a third precursor,

wherein the first precursor is a precursor of the first chemical reaction and a precursor of the second chemical reaction,

wherein the second precursor is a precursor of the second chemical reaction, and

wherein the third precursor is a precursor of the second chemical reaction and a precursor of the third chemical reaction, the functions further comprising:

determining that an amount remaining of the second precursor is less than a threshold amount by executing the first processing thread;

iteratively calculating further subsequent quantities of the third precursor by executing a third processing thread; and

contemporaneous with the execution of the third processing thread, continuing to execute the first processing thread to iteratively calculate further subsequent quantities of the first precursor.

19. The computing system of claim 18 ,

wherein the computing system comprises a first computing device and a second computing device,

wherein the first computing device comprises a first processor of the one or more processors and the second computing device comprises a second processor of the one or more processors, and

wherein the first processing thread is executed by the first processor and the second processing thread is executed by the second processor.

20. The computing system of claim 18 ,

wherein the one or more processors comprise a first processor and a second processor, and

wherein the first processing thread is executed by the first processor and the second processing thread is executed by the second processor.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2016
From: GOOGLE INC.
To: X DEVELOPMENT LLC
Reel/Frame 039900/0610 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2016
From: ROSS, JONATHAN; THOMPSON, JASON
To: GOOGLE INC.
Reel/Frame 038717/0799 →
Cited By (1)
US 12,642,873