text: # When Invariants Aren't: DAI's Certora Surprise Authors: [Kurt Barry](https://twitter.com/Kurt_M_Barry) (MakerDAO), [Uri Kirstein](https://twitter.com/KirsteinUri) (Certora) ## Introduction > "It ain’t what you don’t know that gets you into trouble. It’s what you know for sure that just ain’t so." - *Mark Twain* Multi-Collateral DAI, the stablecoin managed by MakerDAO, is one of the largest cryptocurrencies. Launched in November 2019, it has, as of May 2022, a market cap of roughly 6.5B$backed by about 10B$ of collateral. Ancient by crypto standards, if its smart contracts contained any bugs, they should have been found long ago. Surprisingly, it was discovered that a relationship between system quantities considered to be an invariant, known since 2018 and even thought to be mathematically [provable](https://hackmd.io/lWCjLs9NSiORaEzaWRJdsQ?view), did not hold. This anomaly was found using the Certora Prover. Fortunately, no funds were or are at risk. This finding is an important reminder that one must be very careful to distinguish between things that are likely true and those that are actually proven (keeping in mind that proofs can contain mistakes too!). ## The Certora Prover To keep DAI and its backing collateral safe, the MakerDAO Protocol Engineering Core Unit (PECU) uses a variety of processes and technologies. Code changes undergo extensive internal review and must pass unit and integration tests. Mistakes are searched for via red teaming, fuzzing, and external audits. MakerDAO also has an Immunefi [bug bounty program](https://immunefi.com/bounty/makerdao/). Another essential piece of the PECU's security infrastructure is formal verification. Formal verification tries to prove that a program behaves according to some specification (generally defined separately). The system's code is transformed into a logical formula, and then mathematical methods are used to attempt to prove the properties described in the specification. The great advantage of Formal Verification is its exhaustiveness - all execution paths are checked, so we encounter rare edge cases. Certora offers an automatic formal verification tool called the Certora Prover. The MakerDAO PECU team has been writing specifications and verifying them with the Prover since June 2021. ## The Maker Protocol The Maker protocol consists of the smart contracts that create and sustain the DAI stablecoin. Some changes and updates to the contracts were needed in preparation for deployment on other chains (including layer 2 solutions like rollups). The Certora prover was used to perform formal verification on the modified contracts. In addition to function-level proofs similar to the original verification done with the K Framework, the ability of the Certora Prover to express contract-level properties (i.e. properties that hold for all functions of a contract) was leveraged. The most crucial such property is an invariant called the "Fundamental Equation of DAI". ## The Fundamental Equation of DAI DAI is backed by debt. Debt is either assigned to a Vault, meaning it is associated with a lien against some collateral asset, or it is "unbacked" (also: "bad"), meaning it is the protocol's (i.e., MKR holders') responsibility. These two sources of debt, when added, should equal the sum of all DAI balances. Mathematically, we can write: $$\sum_u \text{dai}_u = \sum_{i,u}\text{tab}_{i,u} + \text{vice}$$ Some definitions are in order for the above equation to make sense: $\text{dai}_u$ refers to the DAI balance of a user $u$, $\text{tab}_{i,u}$ refers to the debt of the Vault belonging to user $u$ with collateral type $i$, and $\text{vice}$ is the unbacked debt. Sums can be assumed to run over all valid values, with the convention that values of $\text{dai}_u$ and $\text{tab}_{i,u}$ default to zero until modified. In the context of Ethereum, the notion of "user" coincides with "Ethereum address" and may be a smart contract or an externally-owned account. The source of truth for DAI's accounting resides in a contract called the Vat. The Fundamental Equation of DAI (FEoD) can thus be expressed in terms of the Vat's storage variables. Because it is infeasible to loop over all Vaults when collecting borrowing fees, the Vat doesn't precisely store all the values that most naturally express the Fundamental Equation. The simplest way to express the FEoD in terms of Vat storage variables is: $$\text{Vat.debt} = \text{Vat.vice} + \sum_i \text{Vat.ilks}[i]\text{.Art} \cdot \text{Vat.ilks}[i]\text{.rate}$$ where the sum ranges over all valid collateral types. $\text{Vat.debt}$ is an _accumulator_ value that stores the sum over all DAI balances. $\text{Vat.vice}$ is just the total bad debt (it is also technically an accumulator since bad debt is always "assigned" to some address). $\text{Vat.ilks}[i]\text{.Art}$ is yet another accumulator that is the sum over "normalized" debt for a given collateral type ("ilk"). Normalized debt is a value that when multiplied the appropriate rate (which will be defined next) gives the current DAI debt. $\text{Vat.ilks}[i]\text{.rate}$ is a different kind of accumulator, a _rate_ accumulator. It tracks the total compounded fee accrued for a given collateral type since inception. For example, if a collateral has a constant stability fee of 5% annually and has existed for two years, its $\text{rate}$ in the Vat will be $1.05^2 = 1.1025$. If at that point someone drew 110.25 DAI from a Vault of that collateral type, the associated increase in $\text{Art}$ would be $110.25 / 1.1025 = 100$. More information on how fee calculations work in the Maker protocol can be found in the [documentation](https://docs.makerdao.com/smart-contract-modules/rates-module). Note that to truly prove the FEoD, the correctness of all accumulators should be established (i.e., they really equal the sums or products that they should). However, in the interest of brevity, here we'll just focus on the relationship between the accumulators. Now we have all the protocol-specific background that we need to understand the attempt to prove the FEoD using Certora's technology. ## Writing the Specification **Note:** A concise specification highlighting the bug is publicly available in a self-contained [repository](https://github.com/kmbarry1/fund-eq-of-dai-certora) with the code under test at the time of discovery. It contains instructions on how you can try it out yourself. Specifications for the Certora Prover are written in the Certora Verification Language, or CVL. In CVL, there is a construct called an _invariant_, which represents a property that the system should always have, no matter what changes it undergoes. Invariants are proven by [induction](https://en.wikipedia.org/wiki/Mathematical_induction). First, it is proven that an invariant holds right after the call to the constructor; this is the induction basis. Then, for each function in the contract, the invariant is assumed to hold before its invocation and proven to also hold afterward. Verifying each function is the inductive step. The invariant appears at the end of the [Vat.spec](https://github.com/kmbarry1/fund-eq-of-dai-certora/blob/master/Vat.spec) file in the condensed example:  invariant fundamental_equation_of_dai() debt() == vice() + sumOfVaultDebtGhost() filtered { f -> !f.isFallback }  The first line declares the invariant like a function - it has a name and arguments (none, in this case). The second line is the important part - the logical formula that describes the FEoD per the discussion above. The debt() and vice() expressions call Vat functions that read corresponding storage slots. Note that these are declared envfree (meaning they do not depend on call context like msg.sender) at the top of the file:  methods { debt() returns (uint256) envfree vice() returns (uint256) envfree }  The third line of the invariant tells the prover not to consider the Vat's fallback function, which always reverts and is thus irrelevant (if not done, a "rule sanity" warning would be issued by the prover). The sumOfVaultDebtGhost() in the second line of the invariant is a function not present on the contract. It is computed as a _ghost_. Ghosts model contract state that isn't directly available from a function call. No contract function returns the sum over all Vault debt, so we must use a ghost. More detailed information on ghosts can be found in the [Certora documentation](https://docs.certora.com/en/latest/docs/ref-manual/cvl/ghosts.html). Although only one ghost is explicitly used in the invariant, three are defined:  ghost sumOfVaultDebtGhost() returns uint256 { init_state axiom sumOfVaultDebtGhost() == 0; } ghost mapping(bytes32 => uint256) rateGhost { init_state axiom forall bytes32 ilk. rateGhost[ilk] == 0; } ghost mapping(bytes32 => uint256) ArtGhost { init_state axiom forall bytes32 ilk. ArtGhost[ilk] == 0; }  The other two (rateGhost and ArtGhost) are needed to construct the debt sum ghost. They represent, respectively, the cumulative compound interest and the total "normalized debt" for a given collateral type. Note that they are _mappings_ from a collateral identifier to its respective quantity, i.e. each ghost tracks a different value for each collateral type. The init_state axiom ... expressions define the initial values the ghosts should have right after calling the constructor and are set to zero to match Ethereum's behavior. Recall that the product of the rate and Art for an ilk gives the total DAI debt backed by loans against that ilk. Ghosts are updated using _hooks_, which modify ghost variables based on particular program behaviors. There is again [more detailed information](https://docs.certora.com/en/latest/docs/confluence/anatomy/hooks.html#) in the documentation for the curious. Vat.spec uses two types of hooks -Sload and Sstore. Consider the two Sload hooks first:  hook Sload uint256 v currentContract.ilks[KEY bytes32 ilk].(offset 0) STORAGE { require ArtGhost[ilk] == v; }   hook Sload uint256 v currentContract.ilks[KEY bytes32 ilk].(offset 32) STORAGE { require rateGhost[ilk] == v; }  The syntax may look complex, but conceptually these hooks are very simple: any time a rate or Art value is read from contract storage, the corresponding ghost is forced to be equal to the read value. This ensures the ghost values are consistent with whatever is in storage whenever they are used. The Sstore hooks take effect when either a rate or Art is written to storage, as opposed to read. Both the old and new values stored are available within the hook body. These values are used to update the ArtGhost[ilk] or rateGhost[ilk] value similarly to the Sload hooks, but also to update the sumOfVaulDebtGhost value according to the relationship defined earlier between rate, Art, and the DAI debt of an ilk.  hook Sstore currentContract.ilks[KEY bytes32 ilk].(offset 0) uint256 newArt (uint256 oldArt) STORAGE { havoc sumOfVaultDebtGhost assuming sumOfVaultDebtGhost@new() == sumOfVaultDebtGhost@old() + (newArt * rateGhost[ilk]) - (oldArt * rateGhost[ilk]); ArtGhost[ilk] = newArt; }   hook Sstore currentContract.ilks[KEY bytes32 ilk].(offset 32) uint256 newRate (uint256 oldRate) STORAGE { havoc sumOfVaultDebtGhost assuming sumOfVaultDebtGhost@new() == sumOfVaultDebtGhost@old() + (ArtGhost[ilk] * newRate) - (ArtGhost[ilk] * oldRate); rateGhost[ilk] = newRate; }  These Sstore hooks make ArtGhost and rateGhost necessary. It is not possible to call contract functions within hooks, as they are applied during program execution. Functions may not behave as expected since, e.g., the contract's storage might be in an unexpected state. As mentioned, this specification is not _sufficient_ to fully establish the FEoD. A complete proof would also require establishing the correctness of the debt and Art accumulators, among other things. However, any violation of this invariant **is** sufficient to demonstrate that the FEoD does not hold. Said another way, if the Vat contract is correct according to our expectations, this invariant should hold. Let's see what happens when we try to prove the FEoD! ## It Doesn't Hold!? The first thing we notice upon running the prover is the very end of the command line output: ![](https://i.imgur.com/M8mmzST.png) We can see immediately that there is a violation of the invariant, and it involves the Vat.init function. However, it's premature to conclude that the FEoD doesn't hold. The Certora Prover uses _overapproximation_ in its proving techniques, which means it may sometimes report violations which are false positives. However, barring bugs in the Prover itself, false negatives should never occur. Thus we can be confident of successful proofs, but must always check violations. Fortunately, the Prover always produces a concrete counterexample - a combination of inputs, storage, and call context that breaches the property - for any violation it finds. This makes it easy to check whether a violation is legitimate. We can inspect the counterexample by loading up the "Verification report" link in a web browser. We get a view like this: ![](https://i.imgur.com/UluU5eH.png) The next step is to drill down into the "fundamental_equation_of_dai" item under "Results". Doing so until clicking on "init(bytes32)" shows something like: ![](https://i.imgur.com/Sm79PHr.png) The "Call Trace" subwindow contains the information needed to extract the counterexample. Expanding "assume invariant in pre-state" shows that we're starting off with zero values for debt(), vice(), and sumOfVaultDebtGhost(): ![](https://i.imgur.com/OqGZ8cp.png) Looking at the post-state reveals that somehow sumOfVaultDebtGhost() became non-zero after the execution of init, which of course is a violation. Note that the exact numbers in the counterexample might differ in your own run of the tool. ![](https://i.imgur.com/hOyFFUX.png) But why? We can see the Sstore hook being applied during the function's execution: ![](https://i.imgur.com/idN71cZ.png) All the information needed is there, although some work is necessary to realize what happened. First, we need to understand how init works: for a new collateral type, init sets its rate to the fixed-point equivalent of one (in this case, 10^27) so that future compounding calculations work correctly.  function init(bytes32 ilk) external auth { require(ilks[ilk].rate == 0, "Vat/ilk-already-init"); ilks[ilk].rate = 10 ** 27; emit Init(ilk); }  This update to rate triggered the corresponding Sstore hook. Examining the equality at the end of the hook, we can deduce that sumOfVaultDebtGhost() becomes non-zero because ArtGhost[ilk] * newRate is non-zero. Therefore ArtGhost[ilk], and thus the Art storage value for ilk, must be non-zero. In summary, the FEoD does not hold if the functionVat.init(ilk) is called when Vat.ils[ilk].Rate is zero, yet Vat.ilks[ilk].Art is non-zero. Now that the counterexample is clear, we still need to answer the question "Is this possible in practice?". The Certora Prover only assumes that the initial storage state obeys the invariant in question - such states are not guaranteed to be _reachable_ via execution of the smart contract's functions. One could attempt to prove that the state is unreachable with the Certora Prover (and this attempt would fail). However, we will take a shortcut by describing a way to achieve the counterexample's preconditions, which was quickly recognized based on the PECU's familiarity with the Vat during the actual discovery. The Vat.fold function can set a rate back to zero after the associated Art becomes non-zero, allowing init to be called on an ilk that has already been activated. An example test case can be found in the [bug](https://github.com/makerdao/xdomain-dss/issues/2) filed after this counter example discovery. Note that fold itself respects the FEoD, so it is only the second init call that produces a violation. We have high confidence that this is the only way to violate the FEoD because (1) init requires rate to be zero, (2) debt can only be generated if rate is non-zero, and (3) the only Vat function that can decrease a rate is fold. This was a surprising result. The FEoD is the most famous Multi-Collateral DAI "invariant", known since at least 2018 and even believed to be mathematically provable. Happily, this edge case poses no threat to the system because the fold and init functions are limited to governance and trusted contracts. If the violating sequence were carried out, there would be more Vault debt than outstanding DAI, potentially pushing the price of DAI above peg and making it difficult for Vaults to repay their debt. Governance can already inflict much worse damage in other ways and is therefore limited by having its actions delayed. This allows users to exit the system prior to a malicious action taking effect. An honest minority of MKR holders can even trigger a shutdown process that unwinds the system gracefully. Future deployments on other chains will contain a fix making the FEoD a true invariant. ## Conclusions This finding supports our use of Formal Verification as part of a holistic approach to smart contract safety. Discovering that a long-held assumption was false underscores the importance of remaining humble and open-minded when developing smart contract systems. Beliefs about safety or correctness should be held only in proportion to the weight of evidence, never as absolutes. Bugs and imperfections can hide in plain sight for a long time. Effective tools are a great help, but only if applied correctly and consistently! If you have any questions, please reach out to either the MakerDAO Protocol Engineering Core Unit (find us in the protocol-engineering-public channel in the MakerDAO [Discord](https://discord.gg/5mr8FzWg)) or the Certora team ([Discord](https://t.co/2liLHaKHIK) or [Twitter](https://twitter.com/CertoraInc)).


text:
# Question & Answer: Thu Jul 27 15:22:24 2017 (GMT-04:00) 45 40 35 25 20 15 10 4000 3500 3000 2500 2000…..

Using IR data, what evidence shows that your product is trans-9-(2-phenylethenyl)anthracene?

Thu Jul 27 15:22:24 2017 (GMT-04:00) 45 40 35 25 20 15 10 4000 3500 3000 2500 2000 Wavenumbers (cm-1) 1500 1000

C$\equiv$C bond peak apperead at 2359 cm-1 and

format: plain


text:
Search for a tool
Trithemius Cipher

Tool to decrypt/encrypt Trithemius. The Trithemius cipher is a polyalphabetic encryption method invented by the German abbot Trithemius. This code is a sequence of shifts from 0 to N shift in the alphabet.

Results

Trithemius Cipher -

Tag(s) : Poly-Alphabetic Cipher

Share
dCode and more

dCode is free and its tools are a valuable help in games, maths, geocaching, puzzles and problems to solve every day!
A suggestion ? a feedback ? a bug ? an idea ? Write to dCode!

Please, check our dCode Discord community for help requests!
NB: for encrypted messages, test our automatic cipher identifier!

Thanks to your feedback and relevant comments, dCode has developed the best 'Trithemius Cipher' tool, so feel free to write! Thank you!

# Trithemius Cipher

## Trithemius Encoder

### How to encrypt using Trithemius cipher?

The Trithemius code is a successive shift cipher, using positive and ascending (ie. to the right) shifts in the alphabet from 0 to N where N is the length of the text. If the end of the alphabet is reached, start from the beginning.

Example: To code DCODE shift D from +0 an get D, shift C by +1 and get D, shift O by +2 and get Q, shift D by +3 and get G, and shift E by +4 and get I. The coded message is DDQGI.

Another method, more visual, consists of using the following grid, selecting the column whose name is the plain letter at the top, and for row the number of the letter on the right (arrived at 27, start again at 1), the intersection is the encrypted letter.

### How to decrypt Trithemius cipher?

Trithemius decryption requires successively shifting in the other direction in the alphabet: shifting $N$ to the left (or negatively to the right, adding $-N$).

Example: To decode TSKWLJSPCB shift T by 0 and get T, shift S by -1 and get R, shift K by -2 and get I, etc. The plain message is TRITHEMIUS.

### What are the variants of the trithemius cipher?

— The shift may be ascending/increasing or descending/decreasing.

— By default, the offset starts at 0, but it is conceivable to start it at 1 or any other number.

— The alphabet used can be a deranged alphabet or a completely personalized alphabet.

— Other types of shift sequences may be imagined (see shift ciphers).

With a classical alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZ, Trithemius cipher is equivalent to a Vigenere cipher with ABCDEFGHIJKLMNOPQRSTUVWXYZ.

Trithemius cipher is a variant to a Caesar cipher with a shift that increases by 1 by each letter starting at 0.

### How to recognize Trithemius ciphertext?

The ciphered message has a low index of coincidence (0.04-0.05).

A Vigenère-like key length analysis will return a likely size of 26.

### When Trithemius was invented?

Trithème (a German abbot) would have described it during the Renaissance, around 1480.

## Source code

dCode retains ownership of the "Trithemius Cipher" source code. Except explicit open source licence (indicated Creative Commons / free), the "Trithemius Cipher" algorithm, the applet or snippet (converter, solver, encryption / decryption, encoding / decoding, ciphering / deciphering, translator), or the "Trithemius Cipher" functions (calculate, convert, solve, decrypt / encrypt, decipher / cipher, decode / encode, translate) written in any informatic language (Python, Java, PHP, C#, Javascript, Matlab, etc.) and all data download, script, or API access for "Trithemius Cipher" are not public, same for offline use on PC, tablet, iPhone or Android !
The copy-paste of the page "Trithemius Cipher" or any of its results, is allowed as long as you cite the online source https://www.dcode.fr/trithemius-cipher
Reminder : dCode is free to use.

## Need Help ?

Please, check our dCode Discord community for help requests!
NB: for encrypted messages, test our automatic cipher identifier!


text:
Share

# Balbharati solutions for Maharashtra State Board (SSC) Class 10 Maths 1 Algebra chapter 3 - Arithmetic Progression [Latest edition]

Textbook page

## Chapter 3: Arithmetic Progression

Practice Set 3.1Practice Set 3.2Practice Set 3.3Practice Set 3.4Problem Set - 3

#### Balbharati solutions for Maharashtra State Board (SSC) Class 10 Maths 1 Algebra Chapter 3 Arithmetic Progression Exercise Practice Set 3.1 [Pages 61 - 62]

Practice Set 3.1 | Q 1.1 | Page 61

Which of the following sequences are A.P. ? If they are A.P. find the common difference .

2, 4, 6, 8,....

Practice Set 3.1 | Q 1.2 | Page 61

Which of the following sequences are A.P. ? If they are A.P. find the common difference .

2,$\frac{5}{2}$, 3,$\frac{7}{3}$,......
Practice Set 3.1 | Q 1.3 | Page 61

Which of the following sequences are A.P. ? If they are A.P. find the common difference .

–10, –6, –2, 2...

Practice Set 3.1 | Q 1.4 | Page 61

Which of the following sequences are A.P. ? If they are A.P. find the common difference .

0.3, 0.33, 0.333,...

Practice Set 3.1 | Q 1.5 | Page 61

Which of the following sequences are A.P. ? If they are A.P. find the common difference .

0, –4, –8, –12,...

Practice Set 3.1 | Q 1.6 | Page 61

Which of the following sequences are A.P. ? If they are A.P. find the common difference .

$- \frac{1}{5}, - \frac{1}{5}, - \frac{1}{5}, . . .$
Practice Set 3.1 | Q 1.7 | Page 61

Which of the following sequences are A.P. ? If they are A.P. find the common difference .

3,$3 + \sqrt{2}, 3 + 2\sqrt{2}, 3 + 3\sqrt{2}$

Practice Set 3.1 | Q 1.8 | Page 61

Which of the following sequences are A.P. ? If they are A.P. find the common difference .

127, 132, 137,...

Practice Set 3.1 | Q 2.1 | Page 61

Write an A.P. whose first term is a and common difference is d in  the following.

a = 10, d = 5

Practice Set 3.1 | Q 2.2 | Page 61

Write an A.P. whose first term is a and common difference is d in  the following.

a = –3, d = 0

Practice Set 3.1 | Q 2.3 | Page 61

Write an A.P. whose first term is a and common difference is d in the following.

a = –7, d = $\frac{1}{2}$
Practice Set 3.1 | Q 2.4 | Page 61

Write an A.P. whose first term is a and common difference is d in the following.

a = –1.25, d = 3

Practice Set 3.1 | Q 2.5 | Page 61

Write an A.P. whose first term is a and common difference is d in  the following.

a = 6, d = –3

Practice Set 3.1 | Q 2.6 | Page 61

Write an A.P. whose first term is a and common difference is d in  the following.

a = 19, d = –4

Practice Set 3.1 | Q 3.1 | Page 62

Find the first term and common difference for  the A.P.

5, 1, –3, –7,...

Practice Set 3.1 | Q 3.2 | Page 62

Find the first term and common difference for  the A.P.

0.6, 0.9, 1.2,1.5,...

Practice Set 3.1 | Q 3.3 | Page 62

Find the first term and common difference for  the A.P.

127, 135, 143, 151,...

Practice Set 3.1 | Q 3.4 | Page 62

Find the first term and common difference for  the A.P.

$\frac{1}{4}, \frac{3}{4}, \frac{5}{4}, \frac{7}{4}, . . . .$

#### Balbharati solutions for Maharashtra State Board (SSC) Class 10 Maths 1 Algebra Chapter 3 Arithmetic Progression Exercise Practice Set 3.2 [Pages 62 - 66]

Practice Set 3.2 | Q 1.1 | Page 66

Write the correct number in the given boxes from the following A. P.

1, 8, 15, 22,...
Here a =Here a = t= , t2 = , t3 = ,

t2 – t1 = =
t3 – t2 = =  ∴ d =

Practice Set 3.2 | Q 1.2 | Page 66

Write the correct number in the given boxes from the following A. P.

3, 6, 9, 12,...

Here  t=  t2 = t3 = t4 = ,
t2 – t1 = t3 – t2 =    ∴ d =

Practice Set 3.2 | Q 1.3 | Page 62

Write the correct number in the given boxes from the following A. P.

–3, –8, –13, –18,...

Here  t= , t2 = , t4 =, t1 = ,
t2 – t1 = , t3 – t2 =    ∴ a = , d =

Practice Set 3.2 | Q 1.4 | Page 66

Write the correct number in the given boxes from the following A. P.

70, 60, 50, 40,...
Here  t= , t2 = , t3 = ,...
∴ a = , d =

Practice Set 3.2 | Q 2 | Page 66

Decide whether following sequence is an A.P., if so find the 20th term of the progression.
–12, –5, 2, 9, 16, 23, 30,...

Practice Set 3.2 | Q 3 | Page 66

Given Arithmetic Progression 12, 16, 20, 24, . . . Find the 24th term of this progression.

Practice Set 3.2 | Q 4 | Page 66

Find the 19th term of the following A.P.

7, 13, 19, 25,....

Practice Set 3.2 | Q 5 | Page 66

Find the 27th term of the following A.P.
9, 4, –1, –6, –11,...

Practice Set 3.2 | Q 6 | Page 66

Find how many three digit natural numbers are divisible by 5.

Practice Set 3.2 | Q 7 | Page 66

The 11th term and the 21st term of an A.P. are 16 and 29 respectively, then find the 41thterm of that A.P.

Practice Set 3.2 | Q 8 | Page 66
11, 8, 5, 2,.... In this A.P. which term is number –151?
Practice Set 3.2 | Q 9 | Page 66

In the natural numbers from 10 to 250, how many are divisible by 4?

Practice Set 3.2 | Q 10 | Page 66

In an A.P. 17th term is 7 more than its 10th term. Find the common difference.

#### Balbharati solutions for Maharashtra State Board (SSC) Class 10 Maths 1 Algebra Chapter 3 Arithmetic Progression Exercise Practice Set 3.3 [Pages 72 - 73]

Practice Set 3.3 | Q 1 | Page 72
First term and common difference of an A.P. are 6 and 3 respectively ; find S27.
a = 6 , d = 3, S27 = ?
Sn = $\frac n2 [ \Box + (n-1) d ]$
S27 =  27/2 [12 + (27 - 1)$\Box ]$
=27/2 ×$\Box$
=27 ×45 = $\Box$
Practice Set 3.3 | Q 2 | Page 72

Find the Sum of First 123 Even Natural Numbers.

Practice Set 3.3 | Q 3 | Page 72
Find the sum of all even numbers from 1 to 350.
Practice Set 3.3 | Q 4 | Page 72

In an A.P. 19th term is 52 and 38th term is 128, find sum of first 56 terms.

Practice Set 3.3 | Q 5 | Page 72

Complete the following activity to find the sum of natural numbers from 1 to 140 which are divisible by 4.

Sum of numbers from 1 to 140, which are divisible by 4 =

Practice Set 3.3 | Q 6 | Page 72

Sum of first 55 terms in an A.P. is 3300, find its 28th term.

Practice Set 3.3 | Q 7 | Page 73

In an A.P. sum of three consecutive terms is 27 and their product is 504, find the terms.
( Assume that three consecutive terms in A.P. are a – d , a , a + d ).

Practice Set 3.3 | Q 8 | Page 73

Find four consecutive terms in an A.P. whose sum is 12 and sum of 3rd and 4th term is 14.

(Assume the four consecutive terms in A.P. are a – d, a, a + d, a +2d)

Practice Set 3.3 | Q 9 | Page 73

If the 9th term of an A.P. is zero then show that the 29th term is twice the 19th term ?

#### Balbharati solutions for Maharashtra State Board (SSC) Class 10 Maths 1 Algebra Chapter 3 Arithmetic Progression Exercise Practice Set 3.4 [Page 78]

Practice Set 3.4 | Q 1 | Page 78

On 1st Jan 2016, Sanika decides to save Rs 10, Rs 11 on second day, Rs 12 on third day. If she decides to save like this, then on 31st Dec 2016 what would be her total saving ?

Practice Set 3.4 | Q 2 | Page 78

A man borrows Rs 8000 and agrees to repay with a total interest of Rs 1360 in 12 monthly instalments. Each instalment being less than the preceding one by Rs 40. Find the amount of the first and last instalment.

Practice Set 3.4 | Q 3 | Page 78

Sachin invested in a national saving certificate scheme. In the first year he invested Rs 5000 , in the second year Rs 7000, in the third year Rs 9000 and so on. Find the total amount that he invested in 12 years.

Practice Set 3.4 | Q 4 | Page 78

There is an auditorium with 27 rows of seats. There are 20 seats in the first row, 22 seats in the second row, 24 seats in the third row and so on. Find the number of seats in the 15th row and also find how many total seats are there in the auditorium ?

Practice Set 3.4 | Q 5 | Page 78

Kargil’s temperature was recorded in a week from Monday to Saturday. All readings were in A.P. The sum of temperatures of Monday and Saturday was 5°C more than sum of temperatures of Tuesday and Saturday. If temperature of Wednesday was –30° celsius then find the temperature on the other five days.

Practice Set 3.4 | Q 6 | Page 78

On the world environment day tree plantation programme was arranged on a land which is triangular in shape. Trees are planted such that in the first row there is one tree, in the second row there are two trees, in the third row three trees and so on. Find the total number of trees in the 25 rows.

#### Balbharati solutions for Maharashtra State Board (SSC) Class 10 Maths 1 Algebra Chapter 3 Arithmetic Progression Exercise Problem Set - 3 [Pages 78 - 80]

Problem Set - 3 | Q 1.01 | Page 78

Choose the correct alternative answer for  the following question .
The sequence –10, –6, –2, 2,...

• is an A.P.,Reason d = -16

• is an A.P Reason d = 4

• is an A.P.,Reason d = -4

• is not an A.P.

Problem Set - 3 | Q 1.02 | Page 78

Choose the correct alternative answer for  the following question .

First four terms of an A.P. are ....., whose first term is –2 and common difference is –2.

• -2,0,2,4

• -2,4 ,-8,16

• -2, -4,-6,-8

• -2, -4 ,-8,-16

Problem Set - 3 | Q 1.03 | Page 78

Choose the correct alternative answer for  the following question .

What is the sum of the first 30 natural numbers ?

• 464

• 465

• 462

• 461

Problem Set - 3 | Q 1.04 | Page 78

Choose the correct alternative answer for  the following question .

For an given A.P. t7 = 4, d = –4, n = 101, then a = .....

• 6

• 7

• 20

• 28

Problem Set - 3 | Q 1.05 | Page 78

Choose the correct alternative answer for  the following question .

For an given A.P. a = 3.5, d = 0, n = 101, then tn = ....

• 0

• 3.5

• 103.5

• 14.5

Problem Set - 3 | Q 1.06 | Page 78

Choose the correct alternative answer for  the following question .

In an A.P. first two terms are –3, 4 then 21st term is ...

• -143

• 143

• 137

• 17

Problem Set - 3 | Q 1.07 | Page 78

Choose the correct alternative answer for  the following question .

If for any A.P. d = 5 then t18 – t13 = ....

• 5

• 20

• 25

• 30

Problem Set - 3 | Q 1.08 | Page 78

Choose the correct alternative answer for  the following question .

Sum of first five multuiples of 3 is...

• 45

• 55

• 15

• 75

Problem Set - 3 | Q 1.09 | Page 78

Choose the correct alternative answer for  the following question .

15, 10, 5,... In this A.P sum of first 10 terms is...

• -75

• -125

• 75

• 125

Problem Set - 3 | Q 1.1 | Page 78

Choose the correct alternative answer for  the following question .

In an A.P. 1st term is 1 and the last term is 20. The sum of all terms is = 399 then n = ....

• 42

• 38

• 21

• 19

Problem Set - 3 | Q 2 | Page 79

Find the fourth term from the end in an A.P. –11, –8, –5,...., 49.

Problem Set - 3 | Q 3 | Page 79

In an A.P. the 10th term is 46 sum of the 5th and 7th term is 52. Find the A.P.

Problem Set - 3 | Q 4 | Page 79

The A.P. in which 4th term is –15 and 9th term is –30. Find the sum of the first 10 numbers.

Problem Set - 3 | Q 5 | Page 79

Two A.P.’ s are given 9, 7, 5, . . . and 24, 21, 18, . . . . If nth term of both the progressions are equal then find the value of n and n th term.

Problem Set - 3 | Q 6 | Page 79

If sum of 3rd and 8th terms of an A.P. is 7 and sum of 7th and 14th terms is –3 then find the 10 th term .

Problem Set - 3 | Q 7 | Page 79

In an A.P. the first term is –5 and last term is 45. If sum of all numbers in the A.P. is 120, then how many terms are there ? What is the common difference ?

Problem Set - 3 | Q 8 | Page 79

Sum of 1 to n natural numbers is 36, then find the value of n .

Problem Set - 3 | Q 9 | Page 80

Divide 207 in three parts, such that all parts are in A.P. and product of two smaller parts will be 4623.

Problem Set - 3 | Q 10 | Page 80

There are 37 terms in an A.P., the sum of three terms placed exactly at the middle is 225 and the sum of last three terms is 429. Write the A.P.

Problem Set - 3 | Q 11 | Page 80

If first term of an A.P. is a, second term is b and last term is c, then show that sum of all terms is  $\frac{\left( a + c \right) \left( b + c - 2a \right)}{2\left( b - a \right)}$.

Problem Set - 3 | Q 12 | Page 80

If the sum of first p terms of an A.P. is equal to the sum of first q terms then show that the sum of its first (p + q) terms is zero. (p ≠ q)?

Problem Set - 3 | Q 13 | Page 80

If m times the mth term of an A.P. is eqaul to n times nth term then show that the (m + n)th term of the A.P. is zero.

Problem Set - 3 | Q 14 | Page 80

Rs 1000 is invested at 10 percent simple interest. Check at the end of every year if the total interest amount is in A.P. If this is an A.P. then find interest amount after 20 years. For this complete the following activity.

## Chapter 3: Arithmetic Progression

Practice Set 3.1Practice Set 3.2Practice Set 3.3Practice Set 3.4Problem Set - 3

## Balbharati solutions for Maharashtra State Board (SSC) Class 10 Maths 1 Algebra chapter 3 - Arithmetic Progression

Balbharati solutions for Maharashtra State Board (SSC) Class 10 Maths 1 Algebra chapter 3 (Arithmetic Progression) include all questions with solution and detail explanation. This will clear students doubts about any question and improve application skills while preparing for board exams. The detailed, step-by-step solutions will help you understand the concepts better and clear your confusions, if any. Shaalaa.com has the Maharashtra State Board Maharashtra State Board (SSC) Class 10 Maths 1 Algebra solutions in a manner that help students grasp basic concepts better and faster.

Further, we at Shaalaa.com provide such solutions so that students can prepare for written exams. Balbharati textbook solutions can be a core help for self-study and acts as a perfect self-help guidance for students.

Concepts covered in Maharashtra State Board (SSC) Class 10 Maths 1 Algebra chapter 3 Arithmetic Progression are Introduction to Sequence, Arithmetic Progression Examples and Solutions, Terms in a sequence, Geometric Mean, Arithmetic Progression, Geometric Progression, General Term of an Arithmetic Progression, General Term of an Geomatric Progression, Sum of First n Terms of an AP, Sum of the First 'N' Terms of an Geometric Progression, Arithmetic Mean, Comparison of Ratios.

Using Balbharati Class 10th Board Exam solutions Arithmetic Progression exercise by students are an easy way to prepare for the exams, as they involve solutions arranged chapter-wise also page wise. The questions involved in Balbharati Solutions are important questions that can be asked in the final exam. Maximum students of Maharashtra State Board Class 10th Board Exam prefer Balbharati Textbook Solutions to score more in exam.

Get the free view of chapter 3 Arithmetic Progression Class 10th Board Exam extra questions for Maharashtra State Board (SSC) Class 10 Maths 1 Algebra and can use Shaalaa.com to keep it handy for your exam preparation


text:
# Power Flow¶

See the module pypsa.pf.

## Full non-linear power flow¶

The non-linear power flow network.pf() works for AC networks and by extension for DC networks too (with a work-around described below).

The non-linear power flow network.pf() can be called for a particular snapshot as network.pf(snapshot) or on an iterable of snapshots as network.pf(snapshots) to calculate the non-linear power flow on a selection of snapshots at once (which is more performant than calling network.pf on each snapshot separately). If no argument is passed, it will be called on all network.snapshots.

Network.pf(snapshots=None, skip_pre=False, x_tol=1e-06, use_seed=False, distribute_slack=False, slack_weights='p_set')

Full non-linear power flow for generic network.

Parameters
• snapshots (list-like|single snapshot) – A subset or an elements of network.snapshots on which to run the power flow, defaults to network.snapshots

• skip_pre (bool, default False) – Skip the preliminary steps of computing topology, calculating dependent values and finding bus controls.

• x_tol (float) – Tolerance for Newton-Raphson power flow.

• use_seed (bool, default False) – Use a seed for the initial guess for the Newton-Raphson algorithm.

• distribute_slack (bool, default False) – If True, distribute the slack power across generators proportional to generator dispatch by default or according to the distribution scheme provided in slack_weights. If False only the slack generator takes up the slack.

• slack_weights (dict|str, default 'p_set') – Distribution scheme describing how to determine the fraction of the total slack power (of each sub network individually) a bus of the subnetwork takes up. Default is to distribute proportional to generator dispatch (‘p_set’). Another option is to distribute proportional to (optimised) nominal capacity (‘p_nom’ or ‘p_nom_opt’). Custom weights can be specified via a dictionary that has a key for each subnetwork index (network.sub_networks.index) and a pandas.Series/dict with buses or generators of the corresponding subnetwork as index/keys. When specifying custom weights with buses as index/keys the slack power of a bus is distributed among its generators in proportion to their nominal capacity (p_nom) if given, otherwise evenly.

Returns

Dictionary with keys ‘n_iter’, ‘converged’, ‘error’ and dataframe values indicating number of iterations, convergence status, and iteration error for each snapshot (rows) and sub_network (columns)

Return type

dict

### Non-linear power flow for AC networks¶

The power flow ensures for given inputs (load and power plant dispatch) that the following equation is satisfied for each bus $$i$$:

$S_i = P_i + j Q_i = V_i I_i^* = V_i \left(\sum_j Y_{ij} V_j\right)^*$

where $$V_i = |V_i|e^{j\theta_i}$$ is the complex voltage, whose rotating angle is taken relative to the slack bus.

$$Y_{ij}$$ is the bus admittance matrix, based on the branch impedances and any shunt admittances attached to the buses.

For the slack bus $$i=0$$ it is assumed $$|V_0|$$ is given and that $$\theta_0 = 0$$; P and Q are to be found.

For the PV buses, P and $$|V|$$ are given; Q and $$\theta$$ are to be found.

For the PQ buses, P and Q are given; $$|V|$$ and $$\theta$$ are to be found.

If PV and PQ are the sets of buses, then there are $$|PV| + 2|PQ|$$ real equations to solve:

$\begin{split}\textrm{Re}\left[ V_i \left(\sum_j Y_{ij} V_j\right)^* \right] - P_i & = 0 \hspace{.7cm}\forall\hspace{.1cm} i \in PV \cup PQ \\ \textrm{Im}\left[ V_i \left(\sum_j Y_{ij} V_j\right)^* \right] - Q_i & = 0 \hspace{.7cm}\forall\hspace{.1cm} i \in PQ\end{split}$

To be found: $$\theta_i \forall i \in PV \cup PQ$$ and $$|V_i| \forall i \in PQ$$.

These equations $$f(x) = 0$$ are solved using the Newton-Raphson method, with the Jacobian:

$\begin{split}\frac{\partial f}{\partial x} = \left( \begin{array}{cc} \frac{\partial P}{\partial \theta} & \frac{\partial P}{\partial |V|} \\ \frac{\partial Q}{\partial \theta} & \frac{\partial Q}{\partial |V|} \end{array} \right)\end{split}$

and the initial “flat” guess of $$\theta_i = 0$$ and $$|V_i| = 1$$ for unknown quantities.

### Non-linear power flow for AC networks with distributed slack¶

If the slack is to be distributed to all generators in proportion to their dispatch (distribute_slack=True), instead of being allocated fully to the slack bus, the active power balance is altered to

$\textrm{Re}\left[ V_i \left(\sum_j Y_{ij} V_j\right)^* \right] - P_i - P_{slack}\gamma_i = 0 \hspace{.7cm}\forall\hspace{.1cm} i \in PV \cup PQ \cup slack$

where $$P_{slack}$$ is the total slack power and $$\gamma_{i}$$ is the share of bus $$i$$ of the total generation that is used to distribute the slack power. Note that also an additional active power balance is included for the slack bus since it is now part of the distribution scheme.

This adds an additional row to the Jacobian for the derivatives of the slack bus active power balance and an additional column for the partial derivatives with respect to $$\gamma_i$$.

### Line model¶

Lines are modelled with the standard equivalent PI model. In the future a model with distributed parameters may be added.

If the series impedance is given by

$z = r+jx$

and the shunt admittance is given by

$y = g + jb$

then the currents and voltages at buses 0 and 1 for a line:

are related by

$\begin{split}\left( \begin{array}{c} i_0 \\ i_1 \end{array} \right) = \left( \begin{array}{cc} \frac{1}{z} + \frac{y}{2} & -\frac{1}{z} \\ -\frac{1}{z} & \frac{1}{z} + \frac{y}{2} \end{array} \right) \left( \begin{array}{c} v_0 \\ v_1 \end{array} \right)\end{split}$

### Transformer model¶

The transformer models here are largely based on the implementation in pandapower, which is loosely based on DIgSILENT PowerFactory.

Transformers are modelled either with the equivalent T model (the default, since this represents the physics better) or with the equivalent PI model. The can be controlled by setting transformer attribute model to either t or pi.

The tap changer can either be modelled on the primary, high voltage side 0 (the default) or on the secondary, low voltage side 1. This is set with attribute tap_side.

If the transformer type is not given, then tap_ratio is defined by the user, defaulting to 1.. If the type is given, then the user can specify the tap_position which results in a tap ratio $$\tau$$ given by:

$\tau = 1 + (\textrm{tap_position} - \textrm{tap_neutral})\cdot \frac{\textrm{tap_step}}{100}$

For a transformer with tap ratio $$\tau$$ on the primary side tap_side = 0 and phase shift $$\theta_{\textrm{shift}}$$, the equivalent T model is given by:

For a transformer with tap ratio $$\tau$$ on the secondary side tap_side = 1 and phase shift $$\theta_{\textrm{shift}}$$, the equivalent T model is given by:

For the admittance matrix, the T model is transformed into a PI model with the wye-delta transformation.

For a transformer with tap ratio $$\tau$$ on the primary side tap_side = 0 and phase shift $$\theta_{\textrm{shift}}$$, the equivalent PI model is given by:

for which the currents and voltages are related by:

$\begin{split}\left( \begin{array}{c} i_0 \\ i_1 \end{array} \right) = \left( \begin{array}{cc} \frac{1}{z} + \frac{y}{2} & -\frac{1}{z}\frac{1}{\tau e^{-j\theta}} \\ -\frac{1}{z}\frac{1}{\tau e^{j\theta}} & \left(\frac{1}{z} + \frac{y}{2} \right) \frac{1}{\tau^2} \end{array} \right) \left( \begin{array}{c} v_0 \\ v_1 \end{array} \right)\end{split}$

For a transformer with tap ratio $$\tau$$ on the secondary side tap_side = 1 and phase shift $$\theta_{\textrm{shift}}$$, the equivalent PI model is given by:

for which the currents and voltages are related by:

$\begin{split}\left( \begin{array}{c} i_0 \\ i_1 \end{array} \right) = \left( \begin{array}{cc} \left(\frac{1}{z} + \frac{y}{2} \right) \frac{1}{\tau^2} & -\frac{1}{z}\frac{1}{\tau e^{-j\theta}} \\ -\frac{1}{z}\frac{1}{\tau e^{j\theta}} & \frac{1}{z} + \frac{y}{2} \end{array} \right) \left( \begin{array}{c} v_0 \\ v_1 \end{array} \right)\end{split}$

### Non-linear power flow for DC networks¶

For meshed DC networks the equations are a special case of those for AC networks, with the difference that all quantities are real.

To solve the non-linear equations for a DC network, ensure that the series reactance $$x$$ and shunt susceptance $$b$$ are zero for all branches, pick a Slack bus (where $$V_0 = 1$$) and set all other buses to be ‘PQ’ buses. Then execute network.pf().

The voltage magnitudes then satisfy at each bus $$i$$:

$P_i = V_i I_i = V_i \sum_j G_{ij} V_j$

where all quantities are real.

$$G_{ij}$$ is based only on the branch resistances and any shunt conductances attached to the buses.

### Inputs¶

For the non-linear power flow, the following data for each component are used. For almost all values, defaults are assumed if not explicitly set. For the defaults and units, see Components.

bus.{v_nom, v_mag_pu_set (if PV generators are attached)}

generator.{control, p_set, q_set (for control PQ)}

storage_unit.{control, p_set, q_set (for control PQ)}

store.{p_set, q_set}

shunt_impedance.{b, g}

line.{x, r, b, g}

transformer.{x, r, b, g}

Note

Note that the control strategy for active and reactive power PQ/PV/Slack is set on the generators NOT on the buses. Buses then inherit the control strategy from the generators attached at the bus (defaulting to PQ if there is no generator attached). Any PV generator will make the whole bus a PV bus. For PV buses, the voltage magnitude set point is set on the bus, not the generator, with bus.v_mag_pu_set since it is a bus property.

Note

Note that for lines and transformers you MUST make sure that $$r+jx$$ is non-zero, otherwise the bus admittance matrix will be singular.

### Outputs¶

bus.{v_mag_pu, v_ang, p, q}

generator.{p, q}

storage_unit.{p, q}

store.{p, q}

shunt_impedance.{p, q}

line.{p0, q0, p1, q1}

transformer.{p0, q0, p1, q1}

## Linear power flow¶

The linear power flow network.lpf() can be called for a particular snapshot as network.lpf(snapshot) or on an iterable of snapshots as network.lpf(snapshots) to calculate the linear power flow on a selection of snapshots at once (which is more performant than calling network.lpf on each snapshot separately). If no argument is passed, it will be called on all network.snapshots.

Network.lpf(snapshots=None, skip_pre=False)

Linear power flow for generic network.

Parameters
• snapshots (list-like|single snapshot) – A subset or an elements of network.snapshots on which to run the power flow, defaults to network.snapshots

• skip_pre (bool, default False) – Skip the preliminary steps of computing topology, calculating dependent values and finding bus controls.

Returns

Return type

None

For AC networks, it is assumed for the linear power flow that reactive power decouples, there are no voltage magnitude variations, voltage angles differences across branches are small and branch resistances are much smaller than branch reactances (i.e. it is good for overhead transmission lines).

For AC networks, the linear load flow is calculated using small voltage angle differences and the series reactances alone.

It is assumed that the active powers $$P_i$$ are given for all buses except the slack bus and the task is to find the voltage angles $$\theta_i$$ at all buses except the slack bus, where it is assumed $$\theta_0 = 0$$.

To find the voltage angles, the following linear set of equations are solved

$P_i = \sum_j (KBK^T)_{ij} \theta_j - \sum_l K_{il} b_l \theta_l^{\textrm{shift}}$

where $$K$$ is the incidence matrix of the network, $$B$$ is the diagonal matrix of inverse branch series reactances $$x_l$$ multiplied by the tap ratio $$\tau_l$$, i.e. $$B_{ll} = b_l = \frac{1}{x_l\tau_l}$$ and $$\theta_l^{\textrm{shift}}$$ is the phase shift for a transformer. The matrix $$KBK^T$$ is singular with a single zero eigenvalue for a connected network, therefore the row and column corresponding to the slack bus is deleted before inverting.

The flows p0 in the network branches at bus0 can then be found by multiplying by the transpose incidence matrix and inverse series reactances:

$F_l = \sum_i (BK^T)_{li} \theta_i - b_l \theta_l^{\textrm{shift}}$

For DC networks, it is assumed for the linear power flow that voltage magnitude differences across branches are all small.

For DC networks, the linear load flow is calculated using small voltage magnitude differences and series resistances alone.

The linear load flow for DC networks follows the same calculation as for AC networks, but replacing the voltage angles by the difference in voltage magnitude $$\delta V_{n,t}$$ and the series reactance by the series resistance $$r_l$$.

### Inputs¶

For the linear power flow, the following data for each component are used. For almost all values, defaults are assumed if not explicitly set. For the defaults and units, see Components.

bus.{v_nom}

generator.{p_set}

storage_unit.{p_set}

store.{p_set}

shunt_impedance.{g}

line.{x}

transformer.{x}

Note

Note that for lines and transformers you MUST make sure that $$x$$ is non-zero, otherwise the bus admittance matrix will be singular.

### Outputs¶

bus.{v_mag_pu, v_ang, p}

generator.{p}

storage_unit.{p}

store.{p}

shunt_impedance.{p}

line.{p0, p1}

transformer.{p0, p1}

## Utility Functions¶

Power flow functionality.

pypsa.pf.aggregate_multi_graph(sub_network)

Aggregate branches between same buses and replace with a single branch with aggregated properties (e.g. s_nom is summed, length is averaged).

pypsa.pf.apply_line_types(network)

Calculate line electrical parameters x, r, b, g from standard types.

pypsa.pf.apply_transformer_t_model(network)

Convert given T-model parameters to PI-model parameters using wye-delta transformation

pypsa.pf.apply_transformer_types(network)

Calculate transformer electrical parameters x, r, b, g from standard types.

pypsa.pf.calculate_B_H(sub_network, skip_pre=False)

Calculate B and H matrices for AC or DC sub-networks.

pypsa.pf.calculate_PTDF(sub_network, skip_pre=False)

Calculate the Power Transfer Distribution Factor (PTDF) for sub_network.

Sets sub_network.PTDF as a (dense) numpy array.

Parameters
• sub_network (pypsa.SubNetwork) –

• skip_pre (bool, default False) – Skip the preliminary steps of computing topology, calculating dependent values, finding bus controls and computing B and H.

pypsa.pf.calculate_Y(sub_network, skip_pre=False)

Calculate bus admittance matrices for AC sub-networks.

pypsa.pf.calculate_dependent_values(network)

Calculate per unit impedances and append voltages to lines and shunt impedances.

pypsa.pf.find_bus_controls(sub_network)

Find slack and all PV and PQ buses for a sub_network. This function also fixes sub_network.buses_o, a DataFrame ordered by control type.

pypsa.pf.find_cycles(sub_network, weight='x_pu')

Find all cycles in the sub_network and record them in sub_network.C.

networkx collects the cycles with more than 2 edges; then the 2-edge cycles from the MultiGraph must be collected separately (for cases where there are multiple lines between the same pairs of buses).

Cycles with infinite impedance are skipped.

pypsa.pf.find_slack_bus(sub_network)

Find the slack bus in a connected sub-network.

pypsa.pf.find_tree(sub_network, weight='x_pu')

Get the spanning tree of the graph, choose the node with the highest degree as a central “tree slack” and then see for each branch which paths from the slack to each node go through the branch.

pypsa.pf.network_batch_lpf(network, snapshots=None)

Batched linear power flow with numpy.dot for several snapshots.

pypsa.pf.network_lpf(network, snapshots=None, skip_pre=False)

Linear power flow for generic network.

Parameters
• snapshots (list-like|single snapshot) – A subset or an elements of network.snapshots on which to run the power flow, defaults to network.snapshots

• skip_pre (bool, default False) – Skip the preliminary steps of computing topology, calculating dependent values and finding bus controls.

Returns

Return type

None

pypsa.pf.network_pf(network, snapshots=None, skip_pre=False, x_tol=1e-06, use_seed=False, distribute_slack=False, slack_weights='p_set')

Full non-linear power flow for generic network.

Parameters
• snapshots (list-like|single snapshot) – A subset or an elements of network.snapshots on which to run the power flow, defaults to network.snapshots

• skip_pre (bool, default False) – Skip the preliminary steps of computing topology, calculating dependent values and finding bus controls.

• x_tol (float) – Tolerance for Newton-Raphson power flow.

• use_seed (bool, default False) – Use a seed for the initial guess for the Newton-Raphson algorithm.

• distribute_slack (bool, default False) – If True, distribute the slack power across generators proportional to generator dispatch by default or according to the distribution scheme provided in slack_weights. If False only the slack generator takes up the slack.

• slack_weights (dict|str, default 'p_set') – Distribution scheme describing how to determine the fraction of the total slack power (of each sub network individually) a bus of the subnetwork takes up. Default is to distribute proportional to generator dispatch (‘p_set’). Another option is to distribute proportional to (optimised) nominal capacity (‘p_nom’ or ‘p_nom_opt’). Custom weights can be specified via a dictionary that has a key for each subnetwork index (network.sub_networks.index) and a pandas.Series/dict with buses or generators of the corresponding subnetwork as index/keys. When specifying custom weights with buses as index/keys the slack power of a bus is distributed among its generators in proportion to their nominal capacity (p_nom) if given, otherwise evenly.

Returns

Dictionary with keys ‘n_iter’, ‘converged’, ‘error’ and dataframe values indicating number of iterations, convergence status, and iteration error for each snapshot (rows) and sub_network (columns)

Return type

dict

pypsa.pf.newton_raphson_sparse(f, guess, dfdx, x_tol=1e-10, lim_iter=100, distribute_slack=False, slack_weights=None)

Solve f(x) = 0 with initial guess for x and dfdx(x). dfdx(x) should return a sparse Jacobian. Terminate if error on norm of f(x) is < x_tol or there were more than lim_iter iterations.

pypsa.pf.sub_network_lpf(sub_network, snapshots=None, skip_pre=False)

Linear power flow for connected sub-network.

Parameters
• snapshots (list-like|single snapshot) – A subset or an elements of network.snapshots on which to run the power flow, defaults to network.snapshots

• skip_pre (bool, default False) – Skip the preliminary steps of computing topology, calculating dependent values and finding bus controls.

Returns

Return type

None

pypsa.pf.sub_network_pf(sub_network, snapshots=None, skip_pre=False, x_tol=1e-06, use_seed=False, distribute_slack=False, slack_weights='p_set')

Non-linear power flow for connected sub-network.

Parameters
• snapshots (list-like|single snapshot) – A subset or an elements of network.snapshots on which to run the power flow, defaults to network.snapshots

• skip_pre (bool, default False) – Skip the preliminary steps of computing topology, calculating dependent values and finding bus controls.

• x_tol (float) – Tolerance for Newton-Raphson power flow.

• use_seed (bool, default False) – Use a seed for the initial guess for the Newton-Raphson algorithm.

• distribute_slack (bool, default False) – If True, distribute the slack power across generators proportional to generator dispatch by default or according to the distribution scheme provided in slack_weights. If False only the slack generator takes up the slack.

• slack_weights (pandas.Series|str, default 'p_set') – Distribution scheme describing how to determine the fraction of the total slack power a bus of the subnetwork takes up. Default is to distribute proportional to generator dispatch (‘p_set’). Another option is to distribute proportional to (optimised) nominal capacity (‘p_nom’ or ‘p_nom_opt’). Custom weights can be provided via a pandas.Series/dict that has the buses or the generators of the subnetwork as index/keys. When using custom weights with buses as index/keys the slack power of a bus is distributed among its generators in proportion to their nominal capacity (p_nom) if given, otherwise evenly.

Returns

• Tuple of three pandas.Series indicating number of iterations,

• remaining error, and convergence status for each snapshot

pypsa.pf.sub_network_pf_singlebus(sub_network, snapshots=None, skip_pre=False, distribute_slack=False, slack_weights='p_set', linear=False)

Non-linear power flow for a sub-network consiting of a single bus.

Parameters
• snapshots (list-like|single snapshot) – A subset or an elements of network.snapshots on which to run the power flow, defaults to network.snapshots

• skip_pre (bool, default False) – Skip the preliminary steps of computing topology, calculating dependent values and finding bus controls.

• distribute_slack (bool, default False) – If True, distribute the slack power across generators proportional to generator dispatch by default or according to the distribution scheme provided in slack_weights. If False only the slack generator takes up the slack.

• slack_weights (pandas.Series|str, default 'p_set') – Distribution scheme describing how to determine the fraction of the total slack power a bus of the subnetwork takes up. Default is to distribute proportional to generator dispatch (‘p_set’). Another option is to distribute proportional to (optimised) nominal capacity (‘p_nom’ or ‘p_nom_opt’). Custom weights can be provided via a pandas.Series/dict that has the generators of the single bus as index/keys.

pypsa.pf.wye_to_delta(z1, z2, z3)


text:
# Adding a sectioning level with titleclass and tocdepth

I want to add a subchapter sectioning level, between chapter and section. I use the \titleclass command from titlesec package.

According to titlesec documentation, \titleclass{\subchapter}{straight}[\chapter] should set the level of subchapter to 1, and increase by 1 the levels below (section of level 2, subsection of level 3, etc).

However, the following example :

\documentclass{book}
\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage{titlesec}
\usepackage{titletoc}

\titleclass{\subchapter}{straight}[\chapter]
\newcounter{subchapter}
\titleformat{\subchapter}[block]{}{}{0pt}{}
\titlespacing{\subchapter}{1pc}{*4}{*2.3}
\titlecontents{subchapter}[1.5em]{}{}{\hspace*{-2.3em}}{\titlerule*[0.75pc]{.}\contentspage} %bad formatting, but only here to produce a content line in ToC

\begin{document}
\setcounter{tocdepth}{1}
\tableofcontents

\chapter{Chapter one}

\subchapter{Subchapter one}

\section{Section one}
\subsection{A subsection}

\section{Section two}

\end{document}

produces a ToC showing both subchapter and section, meaning that the level of section is still equal to 1.

\makeatletter
\def\toclevel@section{2}
\makeatother

as suggested in How to add an extra level of sections with headings below \subsubsection, but it does nothing.

What am I missing?

Note that for now, I do not care about the formatting of the ToC and can manage this by myself later, I am only interested in the levels of the different sectioning titles.

The basic command \titlecontents is defined in the titlesec package as (see p.14):

\titlecontents{〈section〉}[〈left〉]{〈above-code〉}{〈numbered-entry-format〉}{〈numberless-entry-format〉}{〈filler-page-format〉}[〈below-code〉

I your case the option {〈numbered-entry-format〉} is "empty" , that is, it seems to be undefined. Therefore, after compiling my output does not show any subchapter number:

\contentslabelor \thecontentslabel print the subchapter number:

• \contentslabel{2.3em}:

• \thecontentslabel\enspace:

Without defining the option {〈numbered-entry-format〉} but combining it with the macro \dottedcontents, it also prints the subchapter number:

Nevertheless, in all the cases there is a problem with the level; but the manual says (p. 10):

"If the chapter level is 0, then the subchapter one is 1; the levels below are increased by one (section is 2, subsection is 3, and so on)."

This issue is addressed in GitHub as \titleclass doesn't increase levels below and it stills open by Javier Bezos, the author of \titlsec.

The code:

\documentclass{book}
\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage{titlesec}
\usepackage{titletoc}

\titleclass{\subchapter}{straight}[\chapter]
\newcounter{subchapter}
\titleformat{\subchapter}[block]{}{}{0pt}{}
\titlespacing{\subchapter}{1pc}{*4}{*2.3}

%------------ together
\titlecontents{subchapter}[1.5em]{}{}{\hspace*{-2.3em}}{\titlerule*[0.75pc]{.}\contentspage} %bad formatting, but only here to produce a content line in ToC
\dottedcontents{subchapter}[1cm]{}{2.3em}{1pc}
%------------

%------with \contentslabel ------
%\titlecontents{subchapter}[1.5em]{}{\contentslabel{2.3em}}{\hspace*{-2.3em}}{\titlerule*[0.75pc]{.}\contentspage}

%------with \thecontentslabel ------
%\titlecontents{subchapter}[1.5em]{}{\thecontentslabel\enspace}{\hspace*{-2.3em}}{\titlerule*[0.75pc]{.}\contentspage}

\begin{document}
\setcounter{tocdepth}{1}
\tableofcontents

\chapter{Chapter one}

\subchapter{Subchapter one}

\section{Section one}
\subsection{A subsection}

\section{Section two}
\end{document}

I've solved this issue if one uses the standard LaTeX \tableofcontents construction (rather than loading titletoc). My conclusion is that inserting a new section level via titlesec changes the level as far as secnumdepth is concerned, but doesn't affect the table of contents commands.

The following is my solution:

\documentclass{book}
\usepackage{titlesec}
%\usepackage{titletoc}

\titleclass{\subchapter}{straight}[\chapter]
\newcounter{subchapter}
\titleformat{\subchapter}[block]{}{}{0pt}{}
\titlespacing{\subchapter}{1pc}{*4}{*2.3}

\makeatletter
\newcommand{\l@subchapter}{\@dottedtocline{1}{1.5em}{2.3em}}

% The following redefines the \l@section so that \tableofcontents thinks
% that a section has Level 2, rather than Level 1.
\renewcommand{\l@section}{\@dottedtocline{2}{1.5em}{2.3em}}

\makeatother

\setcounter{tocdepth}{1}

\begin{document}
\tableofcontents
\chapter{Chapter one}
\subchapter{Subchapter one}
\section{Section one}
\subsection{A subsection}
\section{Section two}

\end{document}

I don't know what the correction is if you use titletoc, but I presume it is analogous.


text:
# The Digital Camera: Total Internal Reflection

Snell’s Law enables us to predict the way a light ray will refract — or bend — when it enters a new surrounding with a different refractive index. If the new surrounding has a larger refractive index the ray will bend toward the surface normal; if the new surrounding has a smaller refractive index the ray will bend away from the surface normal. For a ray that moves from air into water, for instance, Snell’s Law prescribes the following relationship between the angles for the incident and refracted rays:

Air-into-water refraction for all angles between 0 and 90 degrees.

A ray that enters the water directly in line with the surface normal (0 degrees) will not bend, but a ray that enters the water nearly perpendicular to the surface normal (90 degrees) will bend to about 48.6 degrees. No light ray that enters water from air can travel at an angle greater than 48.6 degrees from the surface normal. This important fact is a consequence of the mathematical form of Snell’s Law:

$\sin(\theta_{water}) = \frac{n_{air}}{n_{water}} \sin(\theta_{air}).$

When the angle in air is 90 degrees then its sine is 1.0, and, because the ratio of the refractive index in air to the refractive index in water is 0.75, a ray that enters water at 90 degrees will bend so that the sine of its new angle is equal to 0.75, which corresponds to an angle of 48.6 degrees. This angle is called the critical angle for an air-to-water or water-to-air interface. When a light ray travels into a medium with a larger refractive index — air into water, for instance — the critical angle limits the angle at which the ray can travel in the new medium. But when a light ray travels into a medium with a smaller refractive index — water into air, for instance — the critical angle has a different kind of significance.

Snell’s Law for a light ray in water that encounters a water-air boundary is:

$\sin(\theta_{air}) = \frac{4}{3} \sin(\theta_{water}),$

where I have explicitly written the ratio of the refractive indices in water and air as 4/3. When the sine for the angle in water is less than 3/4 and greater than -3/4, the sine for the angle in air will be between -1 and 1. But when the sine of the angle in water is greater than 3/4, Snell’s Law will require the sine for the angle in air to be larger than one. But the sine of any angle cannot be smaller than -1 or larger than 1, so something must be wrong. When this happens — when the incident angle is greater than the critical angle for a ray traveling into a surrounding with a smaller refractive index — the ray will not enter the new medium and will, instead, reflect completely into the original medium. This phenomenon is called total internal reflection.

Total internal reflection for light rays that travel from water into air.

When a ray encounters the boundary at an angle larger than the critical angle, then the reflection angle is equal to the incident angle, just as it is for standard reflection.

Because of total internal reflection, the region outside of Snell’s Window will be like a mirror for a fish that is looking toward the surface of the water.

Outside of Snell’s window the surface of the water reflects the bottom of the pool.
(Image from the Wikimedia Commons.)

The phenomenon of total internal reflection enables light to stay inside of an optical fiber even when the fiber is bent; however, an optical fiber will not work if you bend it so much that light encounters the fiber’s edge at an angle smaller than the critical angle for the fiber and its cladding.


text:
# Prove that ${2n \choose n} = {2n \choose n+1} + {2n \choose n-1}$

I am trying to prove that.

$\displaystyle {2n \choose n} = \displaystyle {2n \choose n+1} + {2n \choose n-1}$

Is this necessarily true / how should I try to tackle it if it is?

• Sorry, I typed my equation wrong, going to fix it! – op_finales Apr 6 '16 at 23:22
• Try $n=2$ to try to show it's not true. – user84413 Apr 6 '16 at 23:28
• As others have noted, what you have is not generally true. In fact, \begin{align*}\color{red}{\binom{2n+2}{n+1}}-2\binom{2n}n &=\color{red}{\binom{2n+1}{n+1}+\binom{2n+1}n}- 2\binom{2n}n\\ &=\color{blue}{\binom{2n+1}{n+1}}-\binom{2n}n+\color{green}{\binom{2n-1}n}- \binom{2n}n\\ &=\color{blue}{\binom{2n}{n+1}+\binom{2n}n}-\binom{2n}n+\color{green}{\binom{2n}n+\binom{2n}{n-1}}-\binom{2n}n\\ &=\binom{2n}{n+1}+\binom{2n}{n-1}\;. \end{align*} – Brian M. Scott Apr 6 '16 at 23:39
• What happened to your plan to fix the question, @op_finales ? – Thomas Andrews Apr 7 '16 at 0:02

It's not true in general that ${2n\choose n}={2n\choose n-1}+{2n\choose n+1}$. For instance, if $n=2$ then ${4\choose 2}=6$, while ${4\choose 1}+{4\choose 3}=8$.
In general, $$\binom{2n}{n-1}=\binom{2n}{n+1}=\frac{n}{n+1}\binom{2n}{n}$$ Therefore, $$\frac{\binom{2n}{n-1}+\binom{2n}{n+1}}{\binom{2n}{n}}=\frac{2n}{n+1}$$ which is $1$ if and only if $n=1$.


text:
The open source CFD toolbox
cyclicSlipPolyPatch.C
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2011 OpenFOAM Foundation
9-------------------------------------------------------------------------------
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26\*---------------------------------------------------------------------------*/
27
28#include "cyclicSlipPolyPatch.H"
30
31// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
32
33namespace Foam
34{
36
39}
40
41
42// ************************************************************************* //
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
Copy of cyclicSlip - used to be able to instantiate cyclicSlip pointPatch which is cyclicSlip with sl...
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
A patch is a list of labels that address the faces in the global face list.
Definition: polyPatch.H:75
A class for handling words, derived from Foam::string.
Definition: word.H:68
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
Definition: className.H:121
Namespace for OpenFOAM.


text:
# American Institute of Mathematical Sciences

• Previous Article
Instantaneous shrinking and extinction for a non-Newtonian polytropic filtration equation with orientated convection
• DCDS-B Home
• This Issue
• Next Article
Random attractor for stochastic Boissonade system with time-dependent deterministic forces and white noises
June  2017, 22(4): 1719-1741. doi: 10.3934/dcdsb.2017082

## Traveling waves for a nonlocal dispersal SIR model with general nonlinear incidence rate and spatio-temporal delay

 School of Science and Technology, Zhejiang International Studies University, Hangzhou 310012, China

* Corresponding author: yangyyj@126.com

Received  December 2015 Revised  November 2016 Published  February 2017

Fund Project: Supported by the National Natural Science Fund of China (Nos. 11501518, 11501519 and 11626219)

In this paper, we study a nonlocal dispersal SIR model with general nonlinear incidence rate and spatio-temporal delay. By Schauder's fixed point theorem and Laplace transform, we show that the existence and nonexistence of traveling wave solutions are determined by the basic reproduction number and the minimal wave speed. Some examples are listed to illustrate the theoretical results. Our results generalize some known results.

Citation: Jinling Zhou, Yu Yang. Traveling waves for a nonlocal dispersal SIR model with general nonlinear incidence rate and spatio-temporal delay. Discrete & Continuous Dynamical Systems - B, 2017, 22 (4) : 1719-1741. doi: 10.3934/dcdsb.2017082
##### References:

show all references

##### References:
 [1] Zhi-Xian Yu, Rong Yuan. Traveling wave fronts in reaction-diffusion systems with spatio-temporal delay and applications. Discrete & Continuous Dynamical Systems - B, 2010, 13 (3) : 709-728. doi: 10.3934/dcdsb.2010.13.709 [2] Raimund BÜrger, Gerardo Chowell, Elvis GavilÁn, Pep Mulet, Luis M. Villada. Numerical solution of a spatio-temporal gender-structured model for hantavirus infection in rodents. Mathematical Biosciences & Engineering, 2018, 15 (1) : 95-123. doi: 10.3934/mbe.2018004 [3] Rui Xu. Global convergence of a predator-prey model with stage structure and spatio-temporal delay. Discrete & Continuous Dynamical Systems - B, 2011, 15 (1) : 273-291. doi: 10.3934/dcdsb.2011.15.273 [4] C. Connell McCluskey. Global stability of an $SIR$ epidemic model with delay and general nonlinear incidence. Mathematical Biosciences & Engineering, 2010, 7 (4) : 837-850. doi: 10.3934/mbe.2010.7.837 [5] Wan-Tong Li, Guo Lin, Cong Ma, Fei-Ying Yang. Traveling wave solutions of a nonlocal delayed SIR model without outbreak threshold. Discrete & Continuous Dynamical Systems - B, 2014, 19 (2) : 467-484. doi: 10.3934/dcdsb.2014.19.467 [6] Cicely K. Macnamara, Mark A. J. Chaplain. Spatio-temporal models of synthetic genetic oscillators. Mathematical Biosciences & Engineering, 2017, 14 (1) : 249-262. doi: 10.3934/mbe.2017016 [7] Francesca Sapuppo, Elena Umana, Mattia Frasca, Manuela La Rosa, David Shannahoff-Khalsa, Luigi Fortuna, Maide Bucolo. Complex spatio-temporal features in meg data. Mathematical Biosciences & Engineering, 2006, 3 (4) : 697-716. doi: 10.3934/mbe.2006.3.697 [8] Noura Azzabou, Nikos Paragios. Spatio-temporal speckle reduction in ultrasound sequences. Inverse Problems & Imaging, 2010, 4 (2) : 211-222. doi: 10.3934/ipi.2010.4.211 [9] Xiaoying Chen, Chong Zhang, Zonglin Shi, Weidong Xiao. Spatio-temporal keywords queries in HBase. Big Data & Information Analytics, 2016, 1 (1) : 81-91. doi: 10.3934/bdia.2016.1.81 [10] Thomas Hillen, Jeffery Zielinski, Kevin J. Painter. Merging-emerging systems can describe spatio-temporal patterning in a chemotaxis model. Discrete & Continuous Dynamical Systems - B, 2013, 18 (10) : 2513-2536. doi: 10.3934/dcdsb.2013.18.2513 [11] Pietro-Luciano Buono, Daniel C. Offin. Instability criterion for periodic solutions with spatio-temporal symmetries in Hamiltonian systems. Journal of Geometric Mechanics, 2017, 9 (4) : 439-457. doi: 10.3934/jgm.2017017 [12] Zhaosheng Feng, Goong Chen. Traveling wave solutions in parametric forms for a diffusion model with a nonlinear rate of growth. Discrete & Continuous Dynamical Systems - A, 2009, 24 (3) : 763-780. doi: 10.3934/dcds.2009.24.763 [13] Zhixing Hu, Ping Bi, Wanbiao Ma, Shigui Ruan. Bifurcations of an SIRS epidemic model with nonlinear incidence rate. Discrete & Continuous Dynamical Systems - B, 2011, 15 (1) : 93-112. doi: 10.3934/dcdsb.2011.15.93 [14] Chengxia Lei, Fujun Li, Jiang Liu. Theoretical analysis on a diffusive SIR epidemic model with nonlinear incidence in a heterogeneous environment. Discrete & Continuous Dynamical Systems - B, 2018, 23 (10) : 4499-4517. doi: 10.3934/dcdsb.2018173 [15] Fei-Ying Yang, Yan Li, Wan-Tong Li, Zhi-Cheng Wang. Traveling waves in a nonlocal dispersal Kermack-McKendrick epidemic model. Discrete & Continuous Dynamical Systems - B, 2013, 18 (7) : 1969-1993. doi: 10.3934/dcdsb.2013.18.1969 [16] Wenjia Jing, Panagiotis E. Souganidis, Hung V. Tran. Large time average of reachable sets and Applications to Homogenization of interfaces moving with oscillatory spatio-temporal velocity. Discrete & Continuous Dynamical Systems - S, 2018, 11 (5) : 915-939. doi: 10.3934/dcdss.2018055 [17] Lin Wang, James Watmough, Fang Yu. Bifurcation analysis and transient spatio-temporal dynamics for a diffusive plant-herbivore system with Dirichlet boundary conditions. Mathematical Biosciences & Engineering, 2015, 12 (4) : 699-715. doi: 10.3934/mbe.2015.12.699 [18] Zelik S.. Formally gradient reaction-diffusion systems in Rn have zero spatio-temporal topological. Conference Publications, 2003, 2003 (Special) : 960-966. doi: 10.3934/proc.2003.2003.960 [19] Rodrigo A. Garrido, Ivan Aguirre. Emergency logistics for disaster management under spatio-temporal demand correlation: The earthquakes case. Journal of Industrial & Management Optimization, 2017, 13 (5) : 1-19. doi: 10.3934/jimo.2019058 [20] Kun Li, Jianhua Huang, Xiong Li. Traveling wave solutions in advection hyperbolic-parabolic system with nonlocal delay. Discrete & Continuous Dynamical Systems - B, 2018, 23 (6) : 2091-2119. doi: 10.3934/dcdsb.2018227

2018 Impact Factor: 1.008