text:
# Mapping Python to LLVM

Firstly, thank you to everyone who engaged with, tried out, or gave feedback on Codon over the past few weeks! This is the first in a series of blog posts that describe how Codon works internally, various design decisions, performance considerations, and so on.

At a high level, the Codon compiler works in these steps:

1. Parse source code into an abstract syntax tree (AST).
2. Perform type checking on the AST using a modified Hindley-Milner-like algorithm.
3. Convert the typed AST to an intermediate representation called CIR.
4. Perform numerous analyses, transformations and optimizations on the CIR.
5. Convert from CIR to LLVM IR.
6. Run the LLVM optimization pipeline, among other things.

This post will mainly focus on the LLVM IR generation, and how we map various Python constructs to LLVM IR. Sometimes this is very straightforward, while other times it can be very tricky to get right, as we’ll see below.

(This post assumes a basic familiarity with LLVM and code generation. See Eli Bendersky’s excellent blog posts for an informal introduction or refresher, or this great tutorial.)

# Getting started: Python types to LLVM types

One of the first things we need to consider is how to convert from Python types to LLVM IR types. Some of the conversions are quite easy:

• int can become an LLVM i64 (note that this deviates from Python’s arbitrary- width integers, but it turns out 64 bits are more than enough for most applications)
• float can become an LLVM double
• bool can become an LLVM i8 (we could use i1 in theory, but i8 is compatible with C/C++)

What about tuples? We can convert tuple types to structs containing the tuple’s element types. For example, the type of (42, 3.14, True) becomes the LLVM structure type {i64, double, i8}. Since tuples are immutable, we can pass these structs by value, and in many cases tuples can be completely optimized out by LLVM’s optimization passes.

What about user-defined classes? We can actually do something very similar to what we did for tuples, except instead of passing by value, we dynamically allocate and pass by pointer, which allows mutations to be handled correctly. For example, consider:

class C:
a: int
b: float
c: bool

When we instantiate C(), under the hood we’ll dynamically allocate memory to store the contents of the same {i64, double, i8}, and return a pointer to that memory as the result of instantiation (after calling C.__init__()).

There are a few other LLVM types that we expose through Codon, like Ptr[T] to represent a pointer to an object of type T. Most of the other Python types, though, can be constructed from these building blocks. For example, the built-in collection types like list, dict and set are all implemented within Codon as classes; some other built-in types are implemented as named tuples, and so on.

# Operators

Now that we know how to do type conversions, we need to think about how to actually do operations on those types. For example, how do we add two ints as in 2 + 2? Python implements various operators like +, -, * etc. through its magic method interface. For example, a + b (typically) becomes a.__add__(b), a - b becomes a.__sub__(b) and so on.

It turns out we can do the same in Codon, and in fact, all operators are defined by magic methods within Codon’s standard library. For example, list.__add__ might look like:

class List:
...

result = copy(self)
result.extend(other)
return result

Magic methods are convenient because they allow all operators to be implemented in standard library code, rather than having some be hard-coded in the compiler. But, you may ask, what about operators of primitive types, like int.__add__? That’s where Codon’s inline LLVM IR functionality comes into play: primitive operators are all implemented using inline LLVM IR (via the @llvm decorator):

class int:
...

@llvm
def __add__(self, other: int) -> int:
%tmp = add i64 %self, %other
ret i64 %tmp

@llvm
def __add__(self, other: float) -> float:
%tmp1 = sitofp i64 %self to double
%tmp2 = fadd double %tmp1, %other
ret double %tmp2

Note that Codon supports method overloading: the compiler will choose the correct __add__ based on the right-hand side’s type. Now, actually figuring out which magic methods need to be called for a given expression is a complex task in itself and is handled by the type checker, which we’ll discuss in detail in a future blog post. For now, we’ll assume we have all of this information at our disposal, which is indeed the case by the time we’re generating LLVM IR.

# Control flow

At this point, we more or less know how to generate code for expressions, so the natural next step is higher-level control flow like if, while, for etc. Unlike (most) expressions, control flow constructs require us to generate multiple basic blocks—blocks of straight-line code without any branches, themselves linked together by branches or conditional branches. The basic block is a fundamental concept in LLVM (and compilers in general), and acts as the substrate for LLVM IR.

The compiler itself maintains a pointer to the “current” basic block, $$B$$. Different control flow constructs require us to generate a number of basic blocks and link them together in various ways. Let’s look at an example:

if condition:
true_branch
else:
false_branch

Compilation would roughly proceed as follows (remember, we always generate code in the current basic block $$B$$):

1. Create four new basic blocks: $$B_\mathrm{cond}$$, $$B_\mathrm{true}$$, $$B_\mathrm{false}$$ and $$B_\mathrm{exit}$$.

2. Generate a branch to $$B_\mathrm{cond}$$.

3. Set $$B \gets B_\mathrm{cond}$$ and generate code $$C$$ for condition, then generate a conditional branch to $$B_\mathrm{true}$$ and $$B_\mathrm{false}$$ based on $$C$$.

4. Set $$B \gets B_\mathrm{true}$$ and generate code for true_branch, then add a branch to $$B_\mathrm{exit}$$.

5. Set $$B \gets B_\mathrm{false}$$ and generate code for false_branch, then add a branch to $$B_\mathrm{exit}$$.

6. Set $$B \gets B_\mathrm{exit}$$.

As a diagram…

graph TD B_0(B0) ---> B_cond B_cond(Bcond) -- C is true --> B_true B_cond -- C is false --> B_false B_true(Btrue) ---> B_exit(Bexit) B_false(Bfalse) ---> B_exit

Let’s look at one other example:

while condition:
body

Here’s how compilation would go:

1. Create three new basic blocks: $$B_\mathrm{cond}$$, $$B_\mathrm{body}$$ and $$B_\mathrm{exit}$$

2. Generate a branch to $$B_\mathrm{cond}$$.

3. Set $$B \gets B_\mathrm{cond}$$ and generate code $$C$$ for condition, then generate a conditional branch to $$B_\mathrm{body}$$ and $$B_\mathrm{exit}$$ based on $$C$$.

4. Set $$B \gets B_\mathrm{body}$$ and generate code for body, then add a branch to $$B_\mathrm{cond}$$.

5. Set $$B \gets B_\mathrm{exit}$$.

Again as a diagram…

graph TD B_0(B0) ---> B_cond B_cond(Bcond) -- C is true --> B_body B_cond -- C is false --> B_exit(Bexit) B_body(Bbody) ----> B_cond

What about break and continue? These turn out to be very straightforward when thinking in terms of basic blocks: break simply becomes a branch to $$B_\mathrm{exit}$$ and continue becomes a branch to $$B_\mathrm{cond}$$.

Other control flow constructs (like elif) work in an analogous way, and in fact can be constructed using just if-else and while. There is one particular statement that requires special care, however, as we’ll see next.

# try-except-finally

While most of Python’s control flow constructs are relatively easy to compile, try-except-finally is quite possibly one of the most difficult and nuanced things to get right when it comes to mapping Python to LLVM IR, on a number of different levels. Exception handling itself is actually not too difficult, as we can use the Itanium C++ ABI for zero-cost exceptions along with LLVM’s exception handling instructions: (landingpad, resume, invoke) and appropriate personality function. We won’t go into too much detail since this is all very similar to what C++ does. Just know that there is some additional bookkeeping required for knowing when we’re inside a try block, which requires us to call functions with the LLVM invoke instruction (rather than the usual call) and to specify a basic block to branch to if an exception occurs (i.e. the basic block corresponding to except).

The real difficulty with try-except-finally comes from the finally. It turns out finally has certain semantics that many programmers might not even be aware of. For example, take a look at this code:

def foo():
try:
return 1
finally:
return 2

What does foo() return? If you’re not familiar with finally semantics, you might be inclined to say 1, but the correct answer is 2: finally blocks are always executed, which makes sense as they will typically be performing some cleanup action that shouldn’t be skipped.

This has some important implications for compilation: namely, branches always need to be aware of enclosing try-finally blocks. Let’s take another concrete example; remember when I said break and continue are straightforward? That turns out to not be entirely true in the presence of finally:

def bar():
for i in range(10):
print(i)
try:
if i == 5:
break
finally:
continue

What does bar() print? Well, when i == 5, we’ll reach the break statement, but the break needs to actually branch to the finally block, otherwise the finally block would we skipped over. Now, the finally itself has a continue, which overrides the previous break and resumes the loop. So, in the end, all the integers 09 are printed.

To actually generate correct code for try-except-finally, we need a couple different ingredients:

• Firstly, we need to maintain a stack of enclosing try-except-finally blocks, since if we reach a return, break or continue, we need to know whether we really need to branch to some finally block.

• Next, we need to set up a state machine for each series of nested try-except-finally blocks, since once we do reach the finally, we need to know how we got there in order to determine what action we need to take next. For instance, if we got there via a return, we need to actually execute that return statement at the end of the block; or perhaps we got there by catching an exception that needs to be delegated to a parent try-except-finally.

At the end of the day, we need to construct a state machine with the following states:

• NORMAL: We reached the finally through normal execution of the code. Nothing special needs to be done; we can just branch to the next block normally.

• THROWN: We’ve thrown an exception and are executing the finally before propagating the exception out of the function. The exception object itself will be stored in a pre-defined place that we can access from the finally block.

• CAUGHT: We’ve caught an exception and are reaching the finally through some except block. Again nothing special needs to be done here; we can just branch to the next block normally.

• RETURN: We’ve reached the finally after encountering an enclosed return statement. After executing the finally, we need to execute the return. The return value itself will be stored in a pre-defined place that we can access from the finally block.

• BREAK: We’ve reached the finally after encountering a break. We need to actually execute the break after executing the finally block.

• CONTINUE: We’ve reached the finally after encountering a continue. We need to actually execute the continue after executing the finally block.

Importantly, these actions are recursive, so when we say “execute the return after executing the finally block”, that may entail branching to another enclosing finally block and repeating the same action.

Let’s look at a real example of what this state machine looks like. Here’s a function:

def baz():
for i in range(5):
try:
try:
if i == 3:
return i
finally:
if i > 2:
break
finally:
if i < 4:
continue
return i

And here are the various transitions between the states for different conditions throughout the loop:

stateDiagram-v2 [*] --> NORMAL NORMAL --> RETURN: i = 3 NORMAL --> BREAK: i > 3 NORMAL --> CONTINUE: i ≤ 2 RETURN --> BREAK: i > 2 RETURN --> CONTINUE: i ≤ 2 RETURN --> [*]: otherwise BREAK --> CONTINUE: i < 4 BREAK --> [*]: otherwise CONTINUE --> NORMAL

The internal state machine will transition between the states based on these conditions until the loop terminates, signified by reaching the end state.

# Variables and functions

LLVM IR uses static single assignment form, or SSA, which effectively means LLVM IR variables must be assigned exactly once. As a result, we can’t map Python variables directly to LLVM IR variables. Instead, we map each Python variable to a stack-allocated piece of memory:

x = 42

becomes:

%x = alloca i64, align 8
store i64 42, i64* %x, align 8

alloca is an LLVM IR instruction that allocates space on the current stack frame; alloca i64 allocates space for a 64-bit integer. Treating variables this way is standard practice when compiling to LLVM IR, and C/C++ compilers will do the same (e.g. long x = 42 produces this exact code with Clang). Notice also that alloca actually returns a pointer, so when we dereference a variable (by e.g. using x in a later expression), the compiler inserts an implicit dereference of the underlying alloca pointer. In C, we can avoid this dereference via the address-of operator &, as in &x; Codon actually supports this via the __ptr__ built-in: __ptr__(x) returns the address of x. This is often useful when interfacing with C functions that take a pointer as an argument.

Many variables are implicitly introduced by the parser and/or type checker. For example:

a, b = b, a

… a common Python idiom for swapping the values of two variables, will implicitly be transformed into

tmp = (b, a)
a = tmp[0]
b = tmp[1]

thus introducing the new variable tmp. We’ll discuss these types of front-end transformations in much more detail in a subsequent blog post.

As for functions: we can actually map Python functions directly to LLVM functions:

def foo(a: int, b: int):
return a + b

becomes:

define i64 @foo(i64 %0, i64 %1) {
%a = alloca i64, align 8
%b = alloca i64, align 8
store i64 %0, i64* %a, align 8
store i64 %1, i64* %b, align 8
%a0 = load i64, i64* %a, align 8
%b0 = load i64, i64* %b, align 8
%ans = add nsw i64 %a0, %b0
ret i64 %ans
}

Notice that we allocate space for the arguments via alloca, since they should be treated like normal variables inside the function. The only complication to this otherwise fairly straightforward conversion is generators, which we’ll talk about next.

# Generators

Generators are one of the hallmarks of the Python language, and are used extensively in the standard library. For example, many of the built-in functions operate on or return generators:

map(lambda x: x + 1, [1, 2, 3])  # generator giving 2, 3, 4
reversed('abc')                  # generator giving 'c', 'b', 'a'
zip('abc', [1, 2, 3])            # generator giving ('a', 1), ('b', 2), ('c', 3)

Generators can be defined by using yield:

def squares(n):
for i in range(1, n + 1):
yield i * i

list(squares(5)) gives all the square numbers up to 52: [1, 4, 9, 16, 25].

Since generators are so fundamental in Python, we need a way to handle them efficiently in LLVM. Fortunately, LLVM supports coroutines, which we can use as the foundation for implementing generators. (Note that C++20 also adds support for coroutines.)

You can learn about all the intricacies of LLVM coroutines in the docs. Briefly, though, coroutines are like functions that allow suspension and resumption (much like what happens with Python’s yield). Coroutines maintain their state (i.e. local variables, position in the function, yielded value) in what’s called a coroutine frame. Coroutines in LLVM are indeed also like normal functions, but delineate their resume/suspend points with special intrinsics and “return” a handle to their coroutine frames. Here are some of the more important LLVM intrinsics we’ll use when generating code for coroutines:

• @llvm.coro.id: Gives us a token that can identify the coroutine, which we’ll pass to many of the other intrinsics.
• @llvm.coro.size.i64: Tells us the size of the coroutine frame for dynamic allocation.
• @llvm.coro.begin: Gives us a “handle” to the coroutine frame.
• @llvm.coro.suspend: Marks a suspension point.
• @llvm.coro.end: Marks the end of the coroutine and destroys the coroutine frame.

These intrinsics are all used within the coroutine function itself, but how do we actually call and manipulate the coroutine externally? Well, there are intrinsics for that as well:

• @llvm.coro.resume: Resumes a coroutine given a coroutine handle.
• @llvm.coro.done: Checks if a coroutine is at its final suspend point.
• @llvm.coro.promise: Returns a pointer to the coroutine promise: a region of memory that stores values “yielded” from the coroutine.
• @llvm.coro.destroy: Destroys a finished coroutine.

With these primitives in hand, we can implement all we need to support generators:

• Functions with yield will be converted to LLVM coroutines.
• We can generate code for yield statements by storing the yielded value in the coroutine promise, then calling @llvm.coro.suspend.
• We can implement Python’s next() built-in by calling @llvm.coro.done to see if the given generator is finished, then calling @llvm.coro.resume to resume it and finally @llvm.coro.promise to obtain the generated value.
• We can implement for x in generator by repeatedly calling @llvm.coro.resume/@llvm.coro.promise until @llvm.coro.done tells us to stop.

Let’s look at an example:

for i in range(3):
print(i)

Here’s the (simplified) LLVM IR we’ll generate for this snippet:

entry:
%g = call i8* @range(i64 3)
br label %for

for:
call void @llvm.coro.resume(i8* %g)
%done = call i1 @llvm.coro.done(i8* %g)
br i1 %done, label %exit, label %body

body:
%p1 = call i8* @llvm.coro.promise(i8* %g, i32 8, i1 false)
%p2 = bitcast i8* %p1 to i64*
%i = load i64, i64* %p2
call void @print(i32 %i)
br label %for

exit:
call void @llvm.coro.destroy(i8* %g)

Just to recap…

• The call to @range gives us a handle (with type i8*) to the range generator.
• We resume the generator with @llvm.coro.resume (note that all coroutines will be initially suspended to match Python’s generator semantics).
• If @llvm.coro.done tells us the generator is done, we exit the loop and call @llvm.coro.destroy to destroy it.
• Otherwise, in the body of the loop, we obtain the next value for i by calling @llvm.coro.promise (the other arguments are simply the alignment of the promise (i32 8) and whether we want to obtain a promise given a handle or vice versa (i1 false)).

At this point you might be asking yourself: isn’t that a lot of code to just loop over 0, 1, 2 and print each value? That’s where LLVM’s coroutine optimization passes come in: it turns out coroutines are particularly amenable to compiler optimizations that can typically eliminate all of the coroutine overhead entirely. Specifically, by far the most common case when dealing with generators in Python is for them to be created and destroyed in the same function, in which case the coroutine passes can inline them, elide heap allocation for the frame and so on. Here’s the result of running the coroutine passes on our example above:

  call void @print(i64 0)
call void @print(i64 1)
call void @print(i64 2)

We were able to get rid of everything coroutine-related! By default, LLVM’s coroutine passes rely on an analysis of @llvm.coro.destroy calls. Codon’s LLVM fork instead relies on an escape analysis of the coroutine handle, which we found to be much better at determining which coroutines can be optimized.

# Program structure

We have most of the key ingredients at this point, but what about the overarching program structure? Python doesn’t have an explicit main() function as an entry point like C does. LLVM, on the other hand, does, so we need to reconcile that difference.

The way we handle this in Codon is by putting everything at the top level into its own implicit function:

a = 42
print(a * 2)

becomes:

a = 0
def main():
global a
a = 42
print(a * 2)

This also allows us to do some setup and initialization as well, such as initializing the runtime/GC, setting up sys.argv, etc.

This approach usually works fairly seamlessly, but there is one subtle case that needs special care: exporting Codon functions in a shared library. For example, consider the following:

def bar() -> int:
... # some complex operation

M = bar()

def foo(n: int) -> int:
return n + M

and assume we want to generate a shared library libfoo.so from Codon that exposes the foo function. If we do so naively, the global variable M will actually not be initialized: we need to run the implicit main() we created in order to initialize M. We solve this by running main() as a global constructor if we’re compiling to a shared object.

# Optimizations

Now is a good time to talk about optimizations. LLVM has an extensive repertoire of IR passes for doing various things. These include many of the standard compiler optimizations like constant folding, dead code elimination, loop invariant code motion, etc. These passes are grouped into standard pipelines, like the “O0” pipeline or the “O3” pipeline, which correspond to the -O0 and -O3 flags on a C/C++ compiler like Clang.

Codon uses these default optimization pipelines, but also adds a few of its own LLVM passes. One example is AllocationRemover, which 1) removes unused heap (GC) allocations and 2) demotes small heap allocations to the stack (i.e. to an alloca instruction). This turns out to be useful when instantiating classes; for example creating an instance of a class C that never escapes its enclosing function can actually be done purely on the stack:

def foo():
c = C('hello')  # codegen'd as dynamic allocation; demoted to alloca
...  # C never escapes foo

The same goes for the built-in collection types like lists or dictionaries:

a = [1, 2, 3]
print(a[0] + a[1] + a[2])  # optimized to 6; no allocations take place

Codon uses a couple other custom LLVM passes, but the vast majority of its custom optimizations are performed in its own IR, which we’ll discuss in a future post.

# Examples

To conclude this post, I want to showcase a few neat examples that illustrate many of these pieces coming together, combined with LLVM’s optimization passes. I’ve simplified the naming in the LLVM IR outputs for clarity.

### User-defined generator with loop

def squares(n):
for i in range(1, n + 1):
yield i**2

x = 0
for s in squares(1000):
x += s

print(x)

This gets optimized away entirely, and the final answer 333833500 is printed directly:

%answer = call { i64, i8* } @int_to_str(i64 333833500)

### Tail recursion elimination

from sys import argv
N = int(argv[1])

def collatz(n):
if n == 1:
return 0
else:
return 1 + collatz(3*n + 1 if n % 2 else n // 2)

print(collatz(N))

The recursion is eliminated and replaced with a loop:

collatz_entry:
%tmp1 = icmp eq i64 %N, 1
br i1 %tmp1, label %collatz_exit, label %if.false

if.false:
%tmp2 = phi i64 [ %tmp7, %ternary.exit ], [ %N, %collatz_entry ]
%accumulator = phi i64 [ %tmp8, %ternary.exit ], [ 0, %collatz_entry ]
%tmp3 = and i64 %tmp2, 1
%not1 = icmp eq i64 %tmp3, 0
br i1 %not1, label %ternary.false, label %ternary.true

ternary.true:
%tmp4 = mul i64 %tmp2, 3
%tmp5 = add i64 %tmp4, 1
br label %ternary.exit

ternary.false:
%tmp6 = sdiv i64 %tmp2, 2
br label %ternary.exit

ternary.exit:
%tmp7 = phi i64 [ %tmp5, %ternary.true ], [ %tmp6, %ternary.false ]
%tmp8 = add i64 %accumulator, 1
%not2 = icmp eq i64 %tmp7, 1
br i1 %not2, label %collatz_exit, label %if.false

collatz_exit:
%answer = phi i64 [ 0, %collatz_entry ], [ %tmp8, %ternary.exit ]

### List of tuples

from sys import argv
from random import random
from math import hypot

points = [(random(), random()) for _ in range(10_000_000)]

# How many points are inside/outside of quarter-circle?
inside, outside = 0, 0
for x, y in points:
if hypot(x, y) < 1:
inside += 1
else:
outside += 1

# Estimate pi using the ratio
pi = 4 * inside / (inside + outside)
print(pi)

Tuples are eliminated, and the inside and outside variables are converted to LLVM IR SSA variables:

for.body:
%idx = phi i64 [ %idx_add, %for.body ], [ 0, %for.cleanup ]
%inside = phi i64 [ %inside_add, %for.body ], [ 0, %for.cleanup ]
%outside = phi i64 [ %outside_add, %for.body ], [ 0, %for.cleanup ]
%p1 = getelementptr { double, double }, ptr %points, i64 %idx
%x = load double, ptr %p1, align 8
%p2 = getelementptr { double, double }, ptr %points, i64 %idx, i32 1
%y = load double, ptr %p2, align 8
%h = tail call double @hypot(double %x, double %y)
%tmp1 = fcmp uge double %h, 1.000000e+00
%tmp2 = zext i1 %tmp1 to i64

I hope this post helped shed some light on the various methods we can employ to compile Python code to LLVM. You can view the LLVM IR output of your own code with codon build -llvm (remember to add the -release flag to enable optimizations).


text:
Diagonal of a Cube Formula

A cube is a special three-dimensional rectangular solid. A cube is a rectangular solid that has edges with all the same length. In other words, the length, width, and height are equal, and each of its six faces is a square. The main diagonal of a cube is the one that cuts through the center of the cube; the diagonal of a face of a cube is not the main diagonal. The main diagonal of any cube can be found my multiplying the length of one side by the square root of 3.
$\LARGE Diagonal\;of\;a\;Cube=\sqrt{3}x$

Solved Examples

Question 1: Find the diagonal of the cube with the given side 5 cm?

Solution:

Given: side x = 5 cm

Use diagonal formula,

Diagonal of cube = $\sqrt{3}x$

Diagonal of cube = $\sqrt{3}*5$

Diagonal of cube = 8.66 cm

format: plain


text:
# How can alkali metals form covalent bonds?

Alkali metals have spherical outer s orbitals unlike elements like carbon which have protruding p orbitals that can "attach" onto other orbitals to form covalent compounds. Even in cases like methane elements like carbon can form hybrid orbitals that still have a protruding p like character.

So how can covalent alkali metals form covalent bonds given that their orbitals are spherical and not protruding?

Does the s orbital distort to be more p like in covalent compounds?

Can the s orbital hybridize and steal a more protruding like character from internal orbitals or from the orbitals of another atom?

• hydrogen atom also only has s orbital. They can form covalent bond in H2. – Rodriguez Jul 6 '16 at 21:27
• You should really read about bonding and antibonding orbitals. – Mithoron Jul 6 '16 at 21:30

## 2 Answers

For the most part, they don't. However, lithium sometimes can. This is due to their valence shells being relatively close to the nucleus, so they have some electronegativity and can form somewhat covalent bonds.

For more info see this.

A covalent bond can be described as a bond between two atoms, where the bonding electrons are "shared" more-or-less equally between both atoms.

Therefore, for an alkali metal to form a covalent bond, it will need to be bonding to an element of similar electronegativity.
If this were to happen, then the s-orbital of the alkali metal will hybridize with an orbital from the bonded atom to form 2 molecular orbitals: one that is bonding (has significant electron density between both atoms) and one that is anti-bonding.

As mentioned above, the molecular orbitals of $\ce{H2}$ are a good example of how s-orbitals can form bonding molecular orbitals.


text:
## Review and Practice

It is time to review how to write expressions with addition, subtraction, multiplication, and division.

 The situation The model The answer Two sticks are joined together with tape. One stick is 5 centimeters long and the other is x centimeters long. What is the total length of the two sticks The total length of the two sticks is centimeters. A stick is x centimeters long. It is cut into two pieces. If the shorter piece is 5 centimeters long, what is the length of the longer piece The length of the longer piece is centimeters. A stick is x centimeters long. If it is cut into 5 equal pieces, what is the length of each piece The length of each piece is Five identical sticks are taped together to form one long stick. If each of the smaller sticks is x centimeters long, what will be the total length of the combined stick The total length of the sticks will be

Assuming x stands for a number that is larger than 1, there are four things we can say about the above algebraic expressions:

• Subtracting and dividing typically make the answer SMALLER.

-and-

• Adding and subtracting typically involve things that are NOT EQUAL in length, size, weight, etc.
• Multiplying and dividing typically involve things that are EQUAL in length, size, weight, etc.

These four statements can be arranged into a grid to help you know whether a situation involves addition, subtraction, multiplication, or division.

 The objects get bigger or smaller Bigger Smaller The objects in the situation are equal of NOT equal in size. Not equal Addition Two sticks are joined together with tape. One stick is 5 centimeters long and the other is x centimeters long. What is the total length of the two sticks? The total length of the two sticks is centimeters. Subtraction A stick is x centimeters long. It is cut into two pieces. If the shorter piece is 5 centimeters long, what is the length of the longer piece? The length of the longer piece is centimeters. Equal Multiplication Five identical sticks are taped together to form one long stick. If each of the smaller sticks is x centimeters long, what will be the total length of the combined stick? The total length of the sticks will be Division A stick is x centimeters long. If it is cut into 5 equal pieces, what is the length of each piece? The length of each piece is

Remember x must represent a number larger than 1 in order for these statements to be true!.

 EXPLORE! Move the red point up and down the number line and observe how the blue point moves in relation. What variable expression describes the blue point, if we consider the red point as $\large~x$? (The expression can include any of the four operations.)

# Self-Check

 Question 1 You have m marbles. You separate them into 4 equal piles. How many marbles are in each pile? [show answer]   $\large\frac{m}{4}$

 Question 2 Two pieces of wood are laid end-to-end. What is the total length of the wood? [show answer]   $\large~n+23$

 Question 3 Two pieces of wood are laid end-to-end. Their total length is 18 cm. If the shorter piece of wood is n cm, what is the length of the longer piece? [show answer]   $\large18-n$

 Question 4 These five stamps cost a total of m cents. How much does each stamp cost? [show answer]   $\large\frac{m}{5}$

 Question 5 David has 9 bags. He places x coins in each bag. How many coins does he have total? [show answer]   $\large9x$

 Question 6 Anna and Brian's combined weight is 140 pounds. If Brian weighs h pounds, how heavy is Anna? [show answer]   $\large140-h$

 Question 7 Jenny has d dolls. If she buys 5 more dolls, how many will she have altogether? [show answer]   $\large~d+5$

 Question 8 There are m apples in each bag. If you buy 5 bags, how many apples will you have? [show answer]   $\large5m$

 Question 9 At a movie cinema, adult tickets cost p dollars and child tickets cost k dollars. If 3 adults and 5 children go to the movies, how much is the total price for tickets? (Write a variable expression.) [show answer]   $\large3p+5k$


text:
# The degree of reaction for an impulse steam turbine is:

1. 0.5
2. 1
3. 0
4. -2

Option 3 : 0

## Impulse Turbine MCQ Question 1 Detailed Solution

Concept:

Degree of reaction is the ratio of enthalpy drop in the rotor to the enthalpy drop in a stage.

i.e. $${\rm{R}} = \frac{{{\rm{Static\;enthalpy\;drop\;or\;rise\;in\;rotor}}}}{{{\rm{Stagnation~enthalpy\;drop\;or\;rise\;in\;stage}}}}$$

Or, $$R = \frac{{static\;pressure\;drop\;or\;rise\;in\;rotor}}{{stagnation\;pressure\;drop\;or\;rise\;in\;stage}}$$

In the case of impulse turbine, there is no change in the enthalpy in the rotor, so the degree of reaction is zero.

R = 0.

And for Parson’s turbine or 50% reaction turbine R = 0.5 and for Hero’s turbine R = 1.

# On Mollier chart, flow through turbine is represented by

1. horizontal straight line
2. vertical straight line
3. straight inclined line
4. curved line

Option 2 : vertical straight line

## Impulse Turbine MCQ Question 2 Detailed Solution

Explanation:

Mollier chart is drawn between enthalpy (h) and entropy (s). The turbine output on the Mollier diagram represented by the vertical straight line in ideal conditions.

On Mollier diagram constant pressure lines diverge from one another as shown in the figure.

# In an impulse turbine:

1. The steam is expanded both in fix and moving blades continuously.
2. The steam is expanded in nozzles only and there is a pressure drop and heat drop.
3. Steam is expanded in moving blades only.
4. Pressure and temperature of steam remains constant

Option 2 : The steam is expanded in nozzles only and there is a pressure drop and heat drop.

## Impulse Turbine MCQ Question 3 Detailed Solution

Concept:

Impulse Turbine:

In impulse turbine, steam coming out at a very high velocity through the fixed nozzle strikes the blades fixed on the periphery of a rotor. The blades change the direction of the steam flow without changing its pressure.

Impulse-Reaction Turbine:

In an impulse reaction turbine, steam expands both in fixed and moving blades continuously as the steam passes over them. The pressure drop occurs continuously over both moving and fixed blades.

 Impulse turbine Reaction turbine In impulse turbine, the fluid is expanded completely in the nozzle (pressure drops and the velocity increases) and pressure remains constant during its passage though the moving blades. In reaction turbine, the fluid is partially expanded in the fixed blades and the remaining expansion takes place in moving blades. In impulse turbine, when the steam glides over the moving blades, the relative velocity of steam either remains constant or reduces slightly due to friction. In reaction turbine, the steam is continuously expanding, relative velocity increases in the fixed blade. Impulse turbine has the same pressure on the two sides of the moving blades. Different pressure exists on the two sides of the moving blades of a reaction turbine. Number of stages required for pressure drop is small for the same power. Number of stages required will be less.

# Compounding of steam turbine is done to

1. Balance the rotor
3. Reduce the rotor speed
4. Connect the shaft of one turbine to that of another

Option 3 : Reduce the rotor speed

## Impulse Turbine MCQ Question 4 Detailed Solution

Explanation:

• Compounding of steam turbines is the method in which energy from the steam is extracted in a number of stages rather than a single stage in a turbine.
• A compounded steam turbine has multiple stages i.e. it has more than one set of nozzles and rotors, in series, keyed to the shaft or fixed to the casing, so that either the steam pressure or the jet velocity is absorbed by the turbine in number of stages.
• Compounding of steam turbines are done, where rotor speed (flow speed) is reduced in steps, this prevent over speeding of turbine, which could lead to mechanical failures of turbine blades.

# Consider the following statements regarding compounding in steam turbines:1. In impulse turbine, steam pressure remains constant between ends of the moving blades.2. In reaction turbine, steam pressure drops from inlet to outlet of the blade.3. In velocity compounding, partial expansion of steam take place in the nozzle and further expansion takes place in the rotor blades.Which of the above statements are CORRECT?

1. 1 and 2 only
2. 1 and 3 only
3. 2 and 3 only
4. 1, 2 and 3

Option 1 : 1 and 2 only

## Impulse Turbine MCQ Question 5 Detailed Solution

Concept:

Impulse Turbine Working:

In the impulse turbine pressure drops and the velocity increases as the steam passes through the nozzles. When the steam passes through the moving blades the velocity drops but the pressure remains the same.

The fact that the pressure does not drop across the moving blades is the distinguishing feature of the impulse turbine. The pressure at the inlet of the moving blades is the same as the pressure at the outlet of moving blades.

Reaction Turbine Principle:

In the case of a reaction turbine, the moving blades of a turbine are shaped in such a way that the steam expands and drops in pressure as it passes through them. As a result of the pressure decrease in the moving blade, a reaction force will be produced. This force will make the blades to rotate.

Velocity Compounded Impulse Turbine:

The velocity-compounded impulse turbine (Curtis stage turbine), is composed of one stage of nozzles as the single-stage turbine, followed by two rows of moving blades instead of one. These two rows are separated by one row of fixed blades attached to the turbine stator, which has the function of redirecting the steam leaving the first row of moving blades to the second row of moving blades. In the Curtis stage, the total enthalpy drop and hence pressure drop occur in the nozzles so that the pressure remains constant in all three rows of blades.

Velocity is absorbed in two stages. In fixed (static) blade passage both pressure and velocity remain constant. Fixed blades are also called guide vanes.

Velocity is absorbed in two stages. In fixed (static) blade passage both pressure and velocity remain constant. Fixed blades are also called guide vanes.

# In a steam power plant, the value of the reheat factor is of the order of:

1. 0.5 to 1.0
2. 1.6 to 2.0
3. 1.1 to 1.5
4. 2.1 to 3.0

Option 3 : 1.1 to 1.5

## Impulse Turbine MCQ Question 6 Detailed Solution

Explanation:

Reheat factor:

• It is defined as the ratio of cumulative heat drop to the adiabatic heat drop in all stages of the turbine.
• The value of reheat factor depends on the type and efficiency of the turbine.
• The value of the reheat factor is of the order of 1.1 to 1.5

Reheat factor (R.F.) = $$\frac{{Cumulative\,\,heat\,\,drop\,\,(isentropic)}}{{Isentropic\,\,heat\,\,drop\,\,(overall)}}$$

# If the enthalpy drop in the moving blades and fixed blades of a steam turbine is 10 kJ/kg and 15 kJ/kg respectively then what is the degree of reaction?

1. 67 %
2. 60 %
3. 40 %
4. 33 %

Option 3 : 40 %

## Impulse Turbine MCQ Question 7 Detailed Solution

Concept:

Degree of Reaction

$$R = \frac{{enthalpy\;drop\;in\;moving\;blade}}{{Total\;enthalpy\;drop}}$$

It indicates how much enthalpy drop is taking place in the rotor of the turbine.

Calculation:

$$R = \frac {10}{10+15} = 0.4$$

∴ R = 40 %

# Which one of the following statements is TRUE?

1. Both Pelton and Francis turbines are impulse turbines
2. Francis turbine is reaction turbine but Kaplan turbine is an impulse turbine
3. Francis turbine is an axial-flow reaction turbine
4. Kaplan is an axial-flow reaction turbine

Option 4 : Kaplan is an axial-flow reaction turbine

## Impulse Turbine MCQ Question 8 Detailed Solution

Concept:

Impulse Turbine: If at the inlet of the turbine, the energy available is only kinetic energy, the turbine is known as impulse turbine. e.g. a Pelton wheel turbine.

Reaction Turbine: If at the inlet of the turbine, the water possesses kinetic energy as well as pressure energy, the turbine is known as a reaction turbine. e.g. e Francis and Kaplan turbine.

Tangential flow turbines: In this type of turbines, the water strikes the runner in the direction of the tangent to the wheel. Example: Pelton wheel turbine

Radial flow turbines: In this type of turbines, the water strikes in the radial direction. accordingly, it is further classified as

• Inward flow turbine: The flow is inward from periphery to the centre (centripetal type); Example: old Francis turbine
• Outward flow turbine: The flow is outward from the centre to periphery (centrifugal type); Example: Fourneyron turbine

Axial flow turbine: The flow of water is in the direction parallel to the axis of the shaft. Example: Kaplan turbine and propeller turbine

# In an impulse reaction turbine stage, the heat drop in fixed and moving blades are 20 kJ/kg and 30 kJ/kg respectively. The degree of reaction for this stage will be

1. $$\frac{3}{5}$$
2. $$\frac{5}{3}$$
3. $$\frac{2}{5}$$
4. $$\frac{5}{2}$$

Option 1 : $$\frac{3}{5}$$

## Impulse Turbine MCQ Question 9 Detailed Solution

Concept:

Degree of Reaction

$$R = \frac{{enthalpy\;drop\;in\;moving\;blade}}{{Total\;enthalpy\;drop}}$$

It indicates how much enthalpy drop is taking place in the rotor of the turbine.

Calculation:

Given:

Enthalpy drop in moving blade = 30 kJ/kg,

Enthalpy drop in fixed blade = 20 kJ/kg,

Total Enthalpy drop = Enthalpy drop in moving blade + Enthalpy drop in fixed blade = 50 kJ/kg

$$R = \frac {30}{30+20} = \frac{3}{5}$$

# In a simple impulse turbine, the nozzle angle at the entrance is 30°. What will be the blade-speed ratio for maximum diagram efficiency?

1. 0.433
2. 0.25
3. 0.5
4. 0.75

Option 1 : 0.433

## Impulse Turbine MCQ Question 10 Detailed Solution

Blade or diagram efficiency is defined as the ratio of work done on the blades to the energy supplied to the blades.

$${\eta _b} = \frac{{Work\;done\;on\;blades}}{{Energy\;supplied\;to\;blades}} = \frac{{2\left( {{V_{w1}} + {V_{w2}}} \right)u}}{{V_1^2}}$$

Blade speed ratio is the ratio of blade speed to a steam speed

$$\rho = \frac{u}{{{V_1}}}$$

ηb will be maximum when:

$$\frac{{d{\eta _b}}}{{d\rho }} = 0 \Rightarrow \rho = \frac{{\cos {\alpha _1}}}{2} = \frac{{\cos 30^\circ }}{2} = 0.433$$

α1 is of the order 18° to 22°

$${\eta _{b,max}} = {\cos ^2}{\alpha _1}\;$$

# Curtis turbine is an example of

1. Velocity compounded impulse turbine
2. Pressure compounded impulse steam turbine
3. Pressure velocity compounded impulse steam turbine
4. Reaction steam turbine

Option 1 : Velocity compounded impulse turbine

## Impulse Turbine MCQ Question 11 Detailed Solution

Explanation:

• The velocity-compounded impulse turbine (Curtis stage turbine), is composed of one stage of nozzles as the single-stage turbine, followed by two rows of moving blades instead of one.
• These two rows are separated by one row of fixed blades attached to the turbine stator, which has the function of redirecting the steam leaving the first row of moving blades to the second row of moving blades.
• In the Curtis stage, the total enthalpy drop and hence pressure drop occur in the nozzles so that the pressure remains constant in all three rows of blades.

Velocity is absorbed in two stages. In fixed (static) blade passage both pressure and velocity remain constant. Fixed blades are also called guide vanes.

# The overall efficiency of Pelton wheel is about

1. 0.55
2. 0.65
3. 0.85
4. 0.99

Option 3 : 0.85

## Impulse Turbine MCQ Question 12 Detailed Solution

Explanation:

The efficiency of any mechanical device is defined as the ratio of power output to energy input.

Hydraulic efficiency : $${\eta _h} = \frac{{Power\;delivered\;to\;runner}}{{Power\;supplied\;at\;inlet}} = \frac{{Runner\;Power}}{{Water\;Power}}$$

Mechanical efficiency : $${\eta _m} = \frac{{power\;delivered\;to\;shaft}}{{power\;delivered\;to\;runner}} = \frac{{Shaft\;Power}}{{Runner\;Power}}$$

Overall efficiency : $${\eta _o} = {\eta _h} \times {\eta _m} = \frac{{Runner\;Power}}{{Water\;Power}} \times \frac{{Shaft\;Power}}{{Runner\;Power}}$$

∴ $${\eta _o} = \frac{{Shaft\;Power}}{{Water\;Power}}$$

The overall efficiency of a turbine is the measure of the performance of the turbine.

The overall efficiency of Pelton wheel is approximately 0.85.

Because there are losses like mechanical friction loss, aerodynamic drag on the buckets or windage loss, friction along the inside walls of the buckets, nonalignment of the jet and bucket when bucket turns, back splashing and nozzle losses.

Also, the mechanical friction and aerodynamic drag losses increase with the increase in speed.

Important Points

• Theoretically, a Pelton turbine can have a 100% efficiency if the speed of the incoming water jet is two times the speed of the bucket (i.e. V = 2u) or bucket speed u = 0.5 V.
• In this case, water will attain a zero velocity with respect to earth (stationary reference frame) and transfer all its energy to the turbine.
• But for practical turbines, the bucket speed is 0.44 - 0.46 of the nozzle velocity.

# In steam turbine terminology, diaphragm refers to

1. separating wall between rotor carrying nozzles
2. the ring of guide blades between rotors
3. a partition between low and high velocity sides
4. the flange connecting the turbine exit to the condenser

Option 1 : separating wall between rotor carrying nozzles

## Impulse Turbine MCQ Question 13 Detailed Solution

Diaphragm in steam turbines is a separating wall between rotors carrying nozzles. Additionally, as there is a significant pressure drop across a reaction turbine stage, the diaphragm also acts as a partition between the pressure stages.

# Which of the following statements is correct regarding an impulse turbine?

1. The steam is initially compressed in a nozzle from low pressure to high pressure.
2. The steam is initially expanded in a nozzle from low pressure to high pressure.
3. The steam is initially compressed in a nozzle from high pressure to low pressure.
4. The steam is initially expanded in a nozzle from high pressure to low pressure.

Option 4 : The steam is initially expanded in a nozzle from high pressure to low pressure.

## Impulse Turbine MCQ Question 14 Detailed Solution

Explanation:

Impulse Turbine: If at the inlet of the turbine, the energy available is only kinetic energy, the turbine is known as impulse turbine. e.g. a Pelton wheel turbine.

• In the impulse turbine, the pressure head of the incoming steam is converted into a large velocity head at the exit of the supply nozzle. That is the entire available energy of the steam is converted into kinetic energy.

Reaction Turbine: If at the inlet of the turbine, the water possesses kinetic energy as well as pressure energy, the turbine is known as a reaction turbine. e.g. e Francis and Kaplan turbine.

Tangential flow turbines: In this type of turbines, the water strikes the runner in the direction of the tangent to the wheel. Example: Pelton wheel turbine

Radial flow turbines: In this type of turbines, the water strikes in the radial direction. accordingly, it is further classified as

• Inward flow turbine: The flow is inward from periphery to the centre (centripetal type); Example: old Francis turbine
• Outward flow turbine: The flow is outward from the centre to periphery (centrifugal type); Example: Fourneyron turbine

Axial flow turbine: The flow of water is in the direction parallel to the axis of the shaft. Example: Kaplan turbine and propeller turbine

∴ Francis turbine is a radial inward flowing reaction turbine.

# If the pressure of steam at the exhaust from the turbine is saturated corresponding to the temperature of process heat requirement, then this turbine is known as:

1. Back pressure turbine
2. Pass out turbine
3. Impulse turbine
4. Reaction turbine

Option 1 : Back pressure turbine

## Impulse Turbine MCQ Question 15 Detailed Solution

Back pressure turbine:  In a back pressure turbine the pressure at exhaust from the turbine is the saturation pressure corresponding to the temperature desired in the process heater, the exhaust steam from the turbine is utilized for industrial heating purposes.

Pass-out Turbine: When the heating steam flows is less than that required at the factory, pass out turbines are used in that cases where a certain amount of steam is continuously extracted from the turbine at intermediate stage for heating purposes at the desired temperature and pressure.

Reaction Turbines: In these turbines the pressure drops in noth the fixed row of blades as well moving row of blades.

Reaction Turbine: The fixed blades and moving blades are both of the nozzle shape. Due to expansion of steam flowing through the blades there is an increase in the kinetic energy and which gives rise to reaction in the opposite direction.

Blades rotate through the impulse effect of jets and the reaction force of the exiting jets impressed on the blades in opposite direction.

Impulse Turbine: In impulse turbine all the pressure drop occurs in the nozzle only and there is no pressure drop when it passes through the passage between the two blades. The wheel rotates only due to the impulsive effect of the jets i.e. the difference of momentum of the jets deflected by the blades.

# The function of fixed blades on reaction turbine is to:

1. Alter the direction of steam and expand it to higher velocity
2. Alter the direction of steam and increase its pressure
3. Alter the direction of steam and decrease its velocity
4. Only to alter the direction of steam

Option 1 : Alter the direction of steam and expand it to higher velocity

## Impulse Turbine MCQ Question 16 Detailed Solution

Reaction Turbines: In these turbines the pressure drops in both the fixed row of blades as well moving row of blades. The fixed blades and moving blades are both of the nozzle shape. Due to expansion of steam flowing through the blades there is an increase in the kinetic energy and which gives rise to reaction in the opposite direction. Blades rotate through the impulse effect of jets and the reaction force of the exiting jets impressed on the blades in opposite direction.

We can see from the stage diagram that direction is altered in the fixed blades as well as it is expanded to higher velocity while pressure reduces in both the fixed as well as moving blades.

# Consider the following statements about steam turbines:1. A single-stage impulse turbine has a nozzle angle α. The maximum blade efficiency of the turbine will be cos2α.2. For a reaction steam turbine with the identical stator and rotor blades, the blade velocity for maximum blade efficiency is equal to inlet steam velocity3. Velocity compounded impulse steam turbine gives less speed and less efficiency. Which of the above statements are correct?

1. 1 and 2 only
2. 1 and 3 only
3. 2 and 3 only
4. 1, 2 and 3

Option 2 : 1 and 3 only

## Impulse Turbine MCQ Question 17 Detailed Solution

Concept:

The maximum blade efficiency for a single stage impulse turbine is given by,

$${\eta _D} = 2\left( {\rho \cos \alpha - {\rho ^2}} \right)\left( {1 + {k_b}} \right)$$

Where, ρ is the blade speed ratio or flow ratio.

For single stage impulse turbine the optimum flow ratio, $$\rho = \frac{u}{v} = \frac{{cos\alpha }}{2}$$

The maximum efficiency $${\eta _D} = \left( {1 + {k_b}} \right)\frac{{co{s^2}\alpha }}{2}$$

kb is the blade friction factor, which is equal to the ratio of relative velocity at the exit to that at inlet.

If the energy loss due to friction in blades is small then kb ≈ 1

then

$${\eta _{max}} = \frac{{{\rm{co}}{{\rm{s}}^2}{\rm{\alpha }}}}{2}\left( {1 + 1} \right) = {\rm{co}}{{\rm{s}}^2}{\rm{\alpha }}$$

u = V1 cosα

Where, V1 is the inlet steam velocity, therefore blade velocity is not equal to inlet steam velocity.

For velocity compounded steam turbine, the flow ratio $$\rho = \frac{u}{{{V_1}}} = \frac{{cos\alpha }}{{2n}}$$

Where n = number of stages

For 2 stage velocity compounding, $$u = \frac{{{V_1}\;cos\alpha }}{4}$$

For impulse turbine with one stage, $$u = \frac{{{V_1}\;cos\alpha }}{2}$$

Hence blade speed reduces as velocity compounding stage increases

For two stage velocity compounded turbine the maximum blade efficiency η = 8 (ρ cos α – 2ρ2)

And $$\rho = \frac{{cos\alpha }}{{2 \times 2}} = \frac{{\cos \alpha }}{4}$$

$${\eta _D} = 8\left( {\frac{{{\rm{co}}{{\rm{s}}^2}{\rm{\alpha }}}}{4} - \frac{{{\rm{co}}{{\rm{s}}^2}{\rm{\alpha }}}}{8}} \right) = {\rm{co}}{{\rm{s}}^2}{\rm{\alpha }}$$

This is the maximum efficiency that can be achieved which is the same as the maximum efficiency achieved in the case of one stage friction less blade, however if the friction effects are considered then the efficiency of the velocity compounded stage is considerably lower than the efficiency of simple blading.

# Assertion (A): Steam expands in nozzles of impulse steam turbine.  Reason (R): Pressure of steam is converted into kinetic energy of steam in the nozzles.

1. Both (A) and (R) are true
2. Only (A) is true
3. Only (R) is true
4. Both (A) and (R) are not true

Option 1 : Both (A) and (R) are true

## Impulse Turbine MCQ Question 18 Detailed Solution

Explanation:

Impulse turbine

• In an Impulse turbine, the steam enters at a higher pressure and undergoes expansion.
• The pressure of the steam reduces in the nozzle and remains constant while passing through the moving blades.
• The velocity or kinetic energy of the steam increases in the nozzle and reduces while passing through the moving blades.
• The reduction of pressure energy causes an increase in kinetic energy of the steam in the nozzle.
• The simplest type of impulse turbine is De-Laval turbine.
• Other types of impulse turbines are Curtis, Rateau and Zoelly impulse turbines.

Reaction turbine

•  In a reaction turbine, the pressure is reduced in the fixed blades as well as in moving blades.
• The velocity of steam increases in fixed blades and reduces while passing through the moving blades.
• The simplest type of reaction turbine is Parson's turbine.

# Steam expands in a turbine from 40 bar, 500°C to 0.10 bar isentropically. Assuming ideal conditions, given enthalpy drop 1198.8 kJ/kg, nozzle angle 16° and N as 3000 rpm. Mean diameter of the wheel, if the turbine were of simple impulse stage, will be

1. 3.73 m
2. 4.73 m
3. 5.63 m
4. 4.96 m

Option 2 : 4.73 m

## Impulse Turbine MCQ Question 19 Detailed Solution

Concept:

Energy at inlet = Energy at an outlet

$${h_1} + \frac{{v_1^2}}{{2000}} + g{Z_1} = {h_2} + \frac{{V_2^2}}{{2000}} + g{Z_2}$$

For nozzle V1 = 0 and for horizontal position Z1 = Z2

∴ $${V_2} = \sqrt {2000\left( {{h_1} - {h_2}} \right)}$$

And for simple impulse stage turbine & for maximum efficiency.

$$ρ = \frac{{Blade\;Velocity(u)}}{{Jet\;Velocity\;(V_2)}} = \frac{cos α}{2}$$

Calculation:

Given:

(h1 - h2) = 1198.8 kJ/kg, α = 16°, N = 3000 rpm,

$${V_2} = \sqrt {2000 \times 1198.8}$$

V2 = 1548.41 m/s

For simple impulse stage turbine & for maximum efficiency.

$$\frac{u}{{1548.41}} = \frac{cos16}{2}$$

u = 744.21 m/s

$$⇒\frac{{\pi DN}}{{60}} = 744.21$$

$$D=\frac{744.21~\times~60}{\pi ~\times~3000}$$

D = 4.737 m

Impulse steam turbine:

Pressure and velocity variation in nozzle (stationary passage) and moving blades (moving passage):

Referring to the velocity diagram,

So, keeping ‘u’ as common, superimpose both inlet and outlet velocity triangles,

V = Absolute velocity

Va = Axial component of velocity

Vw = Whirl component of velocity

Vr = Relative velocity

1→ Inlet conditions of steam, 2→ Exit conditions of steam,

Vr2 = kVr1

For no change in pressure as no friction is assumed,

Vr1 = Vr2

Referring to super imposed velocity diagram,

Vr1cosβ1 = V1cosα1 - u      ...(1)

ΔVw =Vr1cosβ1 + Vr2cosβ2

ΔVw =Vr1cosβ1 + kVr1cosβ2      …(2)

In common practice for impulse steam turbine,

β1 = β2

ΔVw =Vr1cosβ1(1 + k)

Using equation (1) and (2),

ΔVw = (V1cosα1 -u) (1 + k)      ...(3)

$$η = \frac{m_s.Δ Vw.u}{\frac{1}{2}m_sV^2_1}{{\;\;\;\;\;}} \ldots \left( 4 \right)$$

Velocity ratio,

$$ρ =\frac{u}{V_1}$$

Replace value of ΔVw and ρ in equation (4) and differentiate η with respect to ρ to maximize η. Then we get,

$$\Rightarrow \rho = \frac{cosα_1 }{2}$$

$$\Rightarrow\eta = \frac{cosα^2_1 }{2}(1+k)$$

Where,

α= Nozzle angle

# Power developed per unit mass flow rate of steam by an stage of impulse turbine is 60 KW. The velocity of steam from nozzle is 400 m/s. Diagram efficiency will be

1. 65%
2. 75%
3. 85%
4. 95%

Option 2 : 75%

## Impulse Turbine MCQ Question 20 Detailed Solution

Concept:

Blade or diagram efficiency is defined as the ratio of work done on the blades to the energy supplied to the blades.

$${\eta _b} = \frac{{Work\;done\;on\;blades}}{{Energy\;supplied\;to\;blades}}$$

Calculation:

Given, Work done/unit mass flow = 60 kW, Velocity of steam = 400 m/s.

$${\eta _b} = \frac{{60 \times 1000}}{{\frac{1}{2} \times {{400}^2}}} = 0.75 = 75\%$$


text:
# Another Binomial Identity with Proofs

The purpose of this page is to present two proofs of an identity that involves binomial coefficients. I'll be using a shorter than usual notation ${n \choose m}$ for the binomial coefficient $C^{n}_{m}$.

$\displaystyle\sum_{k=0}^{n}{n \choose k}^{2}={2n \choose n}.$

### Combinatorial Proof

Recollect that ${n \choose k}={n \choose n-k}$ and rewrite the required identity as

$\displaystyle\sum_{k=0}^{n}{n \choose k}{n \choose n-k}={2n \choose n}.$

In this form it admits a simple interpretation. It is required to select an $n$-members committee out of a group of $n$ men and $n$ women. The number of possibilities is ${2n \choose n}$, the right hand side of the identity.

On the other hand, if the number of men in a group of $n$ grownups is $k$ then the number of women is $n-k$, and all possible variants are expressed by the left hand side of the identity.

### Proof with Generating Functions

$(1+x)^n$ is the generating function for the binomial coefficients ${n \choose k}, 0\le k\le n$. Obviously, $(1+x)^{n}(1+x)^{n}=(1+x)^{2n}$. On the right, the coefficient by $x^n$ is ${2n \choose n}.$ On the left, it is $\sum_{k=0}^{n}{n \choose k}{n \choose n-k}$.

In fact, with a little change of the language, we can prove a more general identity:

$\displaystyle\sum_{k\ge 0}{n \choose k}{m \choose k}={n+m \choose n}.$

(The assumption here is that, for $a\lt b,\space {a \choose b}=0$.)

For a combinatorial argument, the number of men $n$ is not necessarily equal to the number of women $m$. With generating functions, we use $(1+x)^{n}(1+x)^{m}=(1+x)^{n+m}$.

### References

1. A. T. Benjamin, J. J. Quinn, Proofs That Really Count: The Art of Combinatorial Proof, MAA, 2003
2. R. Graham, D. Knuth, O. Patashnik, Concrete Mathematics, 2nd edition, Addison-Wesley, 1994.


text:
A generalization of the notion of a derivative to fields of different geometrical objects on manifolds, such as vectors, tensors, forms, etc. The deﬁnitions for contravariant and covariant tensors are inevitably deﬁned at the beginning of all discussion on tensors. V is The curl operation can be handled in a similar manner. The gradient g = is an example of a covariant tensor, and the differential position d = dx is an example of a contravariant tensor. also called a (m,n) tensor, is deﬁned to be a scalar function of mone-forms and nvectors that is linear in all of its arguments. References. Once the covariant derivative is defined for fields of vectors and covectors it can be defined for arbitrary tensor fields by imposing the following identities for every pair of tensor fields $\varphi$ and $\psi\,$ in a neighborhood of the point p: You can of course insist that this be the case and in doing so you have what we call a metric compatible connection. We’re talking blithely about derivatives, but it’s not obvious how to define a derivative in the context of general relativity in such a way that taking a derivative results in well-behaved tensor. \nabla _ {X} U \otimes V + U Inversely, any non-zero result of applying the commutator to covariant differentiation can therefore be attributed to the curvature of the space, and therefore to the Riemann tensor. Download as PDF. This article was adapted from an original article by I.Kh. The nonlinear part of $(1)$ is zero, thus we only have the second derivatives of metric tensor i.e. Tensor Riemann curvature tensor Scalar (physics) Vector field Metric tensor. The main diﬀerence between contravaariant and co- variant tensors is in how they are transformed. (Weinberg 1972, p. 103), where is a Christoffel symbol, Einstein summation has been used in the last term, and is a comma derivative.The notation , which is a generalization of the symbol commonly used to denote the divergence of a vector function in three dimensions, is sometimes also used.. For example, a rotation of a vector. One doubt about the introduction of Covariant Derivative. and similarly for the dx 1, dx 2, and dx 3. The covariant derivative of the r component in the r direction is the regular derivative. Ricci calculus is the modern formalism and notation for tensor indices: indicating inner and outer products, covariance and contravariance, summations of tensor components, symmetry and antisymmetry, and partial and covariant derivatives. It is called the covariant derivative of a covariant vector. Likewise the derivative of a contravariant vector A i can be defined as ∂A i /∂x j + {pj,i}A p . To find the correct transformation rule for the gradient (and for covariant tensors in general), note that if the system of functions F i is invertible ... Now we can evaluate the total derivatives of the original coordinates in terms of the new coordinates. $\begingroup$ It seems like you are confusing covariant derivative with gradient. The components of this tensor, which can be in covariant (g ij) or contravariant (gij) forms, are in general continuous variable functions of coordi-nates, i.e. Free-to-play (Free2play, F2P, от англ. If a vector field is constant, then Ar;r =0. Let's work in the three dimensions of classical space (forget time, relativity, four-vectors etc). We recalll from our article Local Flatness or Local Inertial Frames and SpaceTime curvature that if the surface is curved, we can not find a frame for which all of the second derivatives of the metric could be null. A (covariant) derivative may be defined more generally in tensor calculus; the comma notation is employed to indicate such an operator, which adds an index to the object operated upon, but the operation is more complicated than simple differentiation if the object is not a scalar. 19 0. what would R a bcd;e look like in terms of it's christoffels? Contravariant and Covariant Tensors. Derivatives of Tensors 22 XII. Covariant derivative of riemann tensor Thread starter solveforX; Start date Aug 3, 2011; Aug 3, 2011 #1 solveforX. We have also mentionned the name of the most important tensor in General Relativity, i.e. 2) $\nabla _ {X} ( f U ) = f \nabla _ {X} U + ( X f ) U$, defined above; see also Covariant differentiation. (The idea is that we're taking "space" to be the 2-dimensional surface of the earth, and the javelin is the "little arrow" or "tangent vector", which must remain tangent to "space".). Examples of how to use “covariant derivative” in a sentence from the Cambridge Dictionary Labs We show that for Riemannian manifolds connection coincides with the Christoffel symbols and geodesic equations acquire a clear geometric meaning. The covariant derivative of a covariant tensor isWhen things are stated in this way, it looks like the "ordinary" divergence theorem is valid (in local coordinates) for tensors of all rank, whereas the "covariant" divergence theorem is only valid for vector fields. ... Covariant derivative of a tensor field. This method can be used to find the covariant derivative of any tensor of arbitrary rank. Just a quick little derivation of the covariant derivative of a tensor. First, let’s ﬁnd the covariant derivative of a covariant vector B i. g ij = g ij(u1;u2;:::;un) and gij = gij(u1;u2;:::;un) where ui symbolize general coordinates. Covariant Derivative; Metric Tensor; Christoffel Symbol; Contravariant; coordinate system ξ ; View all Topics. Symmetrization (of tensors)). Surface Integrals, the Divergence Theorem and Stokes’ Theorem 34 XV. We use a connection to deﬁne a co-variant derivative operator and apply this operator to the degrees of freedom. Alternation) and symmetrization of tensors (cf. After marching down to the equator, march 90 degrees around the equator, and then march back up to the north pole, always keeping the javelin pointing horizontally and "in as same a direction as possible" along the meridian. The commutator of two covariant derivatives, then, measures the difference between parallel transporting the tensor first one way and then the other, versus the opposite. In computing the covariant derivative, $$\Gamma$$ often gets multiplied (aka contracted) with vectors and 2 dimensional tensors. There is not much of a difference between the notions of a covariant derivative and covariant differentiation and both are used in the same context. The European Mathematical Society. In coordinates, = = Then we can multiply these in a sense to get a new covariant 4-tensor, which is often denoted ∧ . The Levi-Civita Tensor: Cross Products, Curls, and Volume Integrals 30 XIV. We want to add a correction term onto the derivative operator $$d/ dX$$, forming a new derivative operator $$∇_X$$ that gives the right answer. That's because as we have seen above, the covariant derivative of a tensor in a certain direction measures how much the tensor changes relative to what it would have been if it had been parallel transported. A covariant derivative is a (Koszul) connection on the tangent bundle and other tensor bundles. Covariant and Lie Derivatives Notation. a linear connection (and the corresponding parallel displacement) and on the basis of this, to give a local definition of a covariant derivative which, when extended to the whole manifold, coincides with the operator $\nabla _ {X}$ Formal definition. The expression in parentheses is the Einstein tensor, so ∇ =, Q.E.D. Further Reading 37 covector fields) and to arbitrary tensor fields, in a unique way that ensures compatibility with the tensor product and trace operations (tensor contraction). The commutator of two covariant derivatives, then, measures the difference between parallel transporting the tensor first one way and then the other, versus the opposite. In this usage, "commutator" refers to the difference that results from performing two operations first in one order and then in the reverse order. ... We next define the covariant derivative of a scalar field to be the same as its partial derivative, i.e. In multilinear algebra and tensor analysis, covariance and contravariance describe how the quantitative description of certain geometric or physical entities changes with a change of basis. The definition extends to a differentiation on the duals of vector fields (i.e. But there is also another more indirect way using what is called the commutator of the covariant derivative of a vector. A covariant derivative is a (Koszul) connection on the tangent bundle and other tensor bundles: it differentiates vector fields in a way analogous to the usual differential on functions. for vector fields) allow one to introduce on $M$ on a manifold $M$ Lecture 8: covariant derivatives Yacine Ali-Ha moud September 26th 2019 METRIC IN NON-COORDINATE BASES Last lecture we de ned the metric tensor eld g as a \special" tensor eld, used to convey notions of in nitesimal spacetime \lengths". 1 The index notation Before we start with the main topic of this booklet, tensors, we will ﬁrst introduce a new notation for vectors and matrices, and their algebraic manipulations: the index Here we see how to generalize this to get the absolute gradient of tensors of any rank. Divergences, Laplacians and More 28 XIII. Does a DHCP server really check for conflicts using "ping"? The covariant derivative of a second rank covariant tensor A ij is given by the formula A ij, k = ∂A ij /∂x k − {ik,p}A pj − {kj,p}A ip . Since a general rank $(3,0)$ tensor can be written as a sum of these types of "reducible" tensors, and the covariant derivative is linear, this rule holds for all rank $(3,0)$ tensors. In other words, the vanishing of the Riemann tensor is both a necessary and sufficient condition for Euclidean - flat -  space. is a scalar density of weight 1, and is a scalar density of weight w. (Note that is a density of weight 1, where is the determinant of the metric. The Lie derivative of the metric Proof Answers and Replies Related Special and General Relativity News on Phys.org. of different valency: $$Formal definition. The WELL known definition of Local Inertial Frame (or LIF) is a local flat space which is the mathematical counterpart of the general equivalence principle. Examples of how to use “covariant derivative” in a sentence from the Cambridge Dictionary Labs Till now ”time intervals” from which, on deﬁnition, the material ﬁeld of time is consists, were treated as ”points” of time sets. У этого термина существуют и другие значения, см. It can be verified (as is done by Kostrikin and Manin) that the resulting product is in fact commutative and associative. Einstein Relatively Easy - Copyright 2020, "The essence of my theory is precisely that no independent properties are attributed to space on its own. Covariant and contravariant indices can be used simultaneously in a Mixed Tensor.. See also Covariant Tensor, Four-Vector, Lorentz Tensor, Metric Tensor, Mixed Tensor, Tensor. Given two tensors T 1 ∈ Sym k 1 (V) and T 2 ∈ Sym k 2 (V), we use the symmetrization operator to define: ⊙ =  (⊗) (∈ +  ()). Thus  \nabla _ {X}  is the metric, and are the Christoffel symbols.. is the covariant derivative, and is the partial derivative with respect to .. is a scalar, is a contravariant vector, and is a covariant vector. Even though the Christoffel symbol is not a tensor, this metric can be used to define a new set of quantities: This quantity ... vectors are constants, r;, = 0, and the covariant derivative simplifies to (F.27) as you would expect. In some cases the operator is omitted: T 1 T 2 = T 1 ⊙ T 2. 24. Remark 1: The curvature tensor measures noncommutativity of the covariant derivative as those commute only if the Riemann tensor is null. In flat space the order of covariant differentiation makes no difference - as covariant differentiation reduces to partial differentiation -, so the commutator must yield zero. To define a tensor derivative we shall introduce a quantity called an affine connection and use it to define covariant differentiation. This mapping is trivially extended by linearity to the algebra of tensor fields and one additionally requires for the action on tensors  U , V  So far, I understand that if Z is a vector field, \nabla Z is a (1,1) tensor field, i.e. derivatives differential-geometry tensors vector-fields general-relativity The covariant derivative of a function ... Let and be symmetric covariant 2-tensors. Further Reading 37 Acknowledgments 38 References 38. Because it has 3 dimensions and 3 letters, there are actually 6 different ways of arranging the letters. The difference between these two kinds of tensors is how they transform under a continuous change of coordinates. Properties 1) and 2) of  \nabla _ {X} ( The starting is to consider Ñ j AiB i. and  f , g  It follows at once that scalars are tensors of rank (0,0), vectors are tensors of rank (1,0) and one-forms are tensors of rank (0,1). Free to play (фильм). One doubt about the introduction of Covariant Derivative. That's because the surface of the earth is curved. The covariant derivative of a tensor field is presented as an extension of the same concept. Say you start at the north pole holding a javelin that points horizontally in some direction, and you carry the javelin to the equator, always keeping the javelin pointing "in as same a direction as possible", subject to the constraint that it point horizontally, i.e., tangent to the earth. www.springer.com The covariant derivative of this vector is a tensor, unlike the ordinary derivative. Does Odo have eyes? To get the Riemann tensor, the operation of choice is covariant derivative. Then we define what is connection, parallel transport and covariant differential. If you like this content, you can help maintaining this website with a small tip on my tipeee page. Frank E. Harris, in Mathematics for Physical Science and Engineering, 2014. There is no reason at all why the covariant derivative (aka a connection) of the metric tensor should vanish. are differentiable functions on  M . Surface Integrals, the Divergence Theorem and Stokes’ Theorem 34 XV. acting on the module of tensor fields  T _ {s} ^ { r } ( M)  where the symbol {ij,k} is the Christoffel 3-index symbol of the second kind. Also, taking the covariant derivative of this expression, which is a tensor of rank 2 we get: Considering the first right-hand side term, we get: Considering now the second and third right-hand terms, we can write: Putting all these terms together, we find equation (A), Now interchanging b and c gives equation (B), Substracting (A) - (B), the first term and last term compensate each other (we remember that the Christoffel symbol is symmetric relative to the lower indices) therefore we end up with the following remaining terms, Multiplying out the brackets in the last terms and factorizing out the terms with Vd, But by the definition of the Christoffel symbol as explained in the article Christoffel Symbol or Connection coefficient, we know that, And by swapping dummy indexes μ and ν we have obviously, Finally the expression of the covariant derivative commutator is, We define the expression inside the brackets on the right-hand side to be the Riemann tensor, meaning. The covariant derivatives with respect to tensor t ... covariant derivatives (1), including the relations (1) as a special case. This page was last edited on 5 June 2020, at 17:31. The tensor R ijk p is called the Riemann-Christoffel tensor of the second kind. Tensor Analysis. The covariant derivative component is the component parallel to the cylinder's surface, and is the same as that before you rolled the sheet into a cylinder. 3.1 Summary: Tensor derivatives Absolute derivative of a contravariant tensor over some path D λ a ds = dλ ds +λbΓa bc dxc ds gives a tensor ﬁeld of same type (contravariant ﬁrst order) in this case. Even if a vector field is constant, Ar;q∫0. At minute 54:00 he explains why covariant derivative is a (1,1) tensor: basically he takes the limit of a fraction in which the numerator is a collection of vector components (living in the tangent space at point Q) and the denominator is … I am trying to understand covariant derivatives in GR. In physics, we use the notation in which a covariant tensor of rank two has two lower indices, e.g. Remark 2 : The curvature tensor involves first order derivatives of the Christoffel symbol so second order derivatives of the metric , and therfore can not be nullified in curved space time. Tensor fields. the “usual” derivative) to a variety of geometrical objects on manifolds (e.g. does this prove that the covariant derivative is a (1,1) tensor? A covariant derivative (∇ x) generalizes an ordinary derivative (i.e. 0. covariant derivatives: of contravariant vector from covariant derivative covariant vector. I cannot see how the last equation helps prove this. will be $$\nabla_{X} T = \frac{dT}{dX} − G^{-1} (\frac{dG}{dX})T$$.Physically, the correction term is a derivative of the metric, and we’ve already seen that the derivatives of the metric (1) are the closest thing we get in general relativity to the gravitational field, and (2) are not tensors. So in theory there are 6x2=12 ways of contracting $$\Gamma$$ with a two dimensional tensor (which has 2 ways of arrange its letters). For example, dx 0 can be written as . Torsion tensor. Contraction of a tensor), skew-symmetrization (cf. In some cases an exponential notation is used: ⊙ = ⊙ ⊙ ⋯ ⊙ � is a covariant tensor of rank two and is denoted as A i, j. \nabla _ {X} ( U \otimes V ) = \ Actually, "parallel transport" has a very precise definition in curved space: it is defined as transport for which the covariant derivative - as defined previously in Introduction to Covariant Differentiation - is zero. In this article, our aim is to try to derive its exact expression from the concept of parallel transport of vectors/tensors.$$. Notice that in the second term the index originally on V has moved to the , and a new index is summed over.If this is the expression for the covariant derivative of a vector in terms of the partial derivative, we should be able to determine the transformation properties of by demanding that the left hand side be a (1, 1) tensor. In a coordinate basis, we write ds2 = g dx dx to mean g = g dx( ) dx( ). ' for covariant indices and opposite that for contravariant indices. role, only covariant derivatives can appear in the con-stitutive relations ensuring the covariant nature of the conserved currents. This is the transformation rule for a covariant tensor of rank two. denotes the tensor product. In that spirit we begin our discussion of rank 1 tensors. Derivation in a ring); it has the additional properties of commuting with operations of contraction (cf. This will put some condition of the connection coefficients and furthermore insisting that they be symmetric in lower indices will produce the unique Christoffel … Hi all I'm having trouble understanding what I'm missing here. Coordinate Invariance and Tensors 16 X. Transformations of the Metric and the Unit Vector Basis 20 XI. of given valency and defined with respect to a vector field $X$ Remark 3: Having four indices, in n-dimensions the Riemann curvature tensor has n4 components, i.e 24 = 16 in two-dimensional space, 34=81 in three dimensions and 44=256 in four dimensions (as in spacetime). The covariant derivative component is the component parallel to the cylinder's surface, and is the same as that before you rolled the sheet into a cylinder. By the time you get back to the north pole, the javelin is pointing a different direction! Set alert. It was considered possi- ble toneglectby interiorstructureoftime sets component those ”time intervals”. Sabitov (originator), which appeared in Encyclopedia of Mathematics - ISBN 1402006098. https://encyclopediaofmath.org/index.php?title=Covariant_derivative&oldid=46543. This property is used to check, for example, that even though the Lie derivative and covariant derivative are not tensors, the torsion and curvature tensors built from them are. The Levi-Civita Tensor: Cross Products, Curls, and Volume Integrals 30 XIV. the tensor in which all this curvature information is embedded: the Riemann tensor  - named after the nineteenth-century German mathematician Bernhard Riemann - or curvature tensor. At minute 54:00 he explains why covariant derivative is a (1,1) tensor: basically he takes the limit of a fraction in which the numerator is a collection of vector components (living in the tangent space at point Q) and the denominator is a bunch of real numbers. It is a linear operator $\nabla _ {X}$ acting on the module of tensor fields $T _ {s} ^ { r } ( M)$ of given valency and defined with respect to a vector field $X$ on a manifold $M$ and satisfying the following properties: $(2)$ which are related to the derivatives of Christoffel symbols in $(1)$. About this page. $\endgroup$ – Jacob Schneider Jun 14 at 14:33 $\begingroup$ also the Levi-civita symbol (not the tensor) isn't even a tensor, so how can you apply the product rule if its not a product of two tensors? Robert J. Kolker's answer gives the gory detail, but here's a quick and dirty version. In fact, if we parallel transport a vector around an infinitesimal loop on a manifold, the vector we end up wih will only be equal to the vector we started with if the manifold is flat. The connections play a special role since can be used to deﬁne curvature tensors using the ordinary derivatives (∂µ). Thus if the sequence of the two operations has no impact on the result, the commutator has a value of zero. The G term accounts for the change in the coordinates. Arfken, G. Noncartesian Tensors, Covariant Differentiation.'' Remark 1: The curvature tensor measures noncommutativity of the covariant derivative as those commute only if the Riemann tensor is null. $$∇_X$$ is called the covariant derivative. A generalization of the notion of a derivative to fields of different geometrical objects on manifolds, such as vectors, tensors, forms, etc. is a derivation on the algebra of tensor fields (cf. The Riemann-Christoffel tensor arises as the difference of cross covariant derivatives. The covariant derivative of a covariant tensor is In our previous article Local Flatness or Local Inertial Frames and SpaceTime curvature, we have come to the conclusion that in a curved spacetime, it was impossible to find a frame for which all of the second derivatives of the metric tensor could be null. \otimes \nabla _ {X} V , It is not completely clear what do you mean by your question, I will answer it as I understand it. this is just the general transformation law or tensors, although when mathematicians say that something is a tensor I believe it means that "something is linear with respect to more than 1 argument, hence why the dot product is a tensor mathematically. (return to article) this means that the covariant divergence of the Einstein tensor vanishes. It is a linear operator $\nabla _ {X}$ While we will mostly use coordinate bases, we don’t always have to. The covariant derivative of the r component in the q direction is the regular derivative plus another term. §3.8 in Mathematical Methods for Physicists, 3rd ed. It can be put jokingly this way. 158-164, 1985. Divergences, Laplacians and More 28 XIII. Orlando, FL: Academic Press, pp. Let A i be any covariant tensor of rank one. The Covariant Derivative in Electromagnetism. So if one operator is denoted by A and another is denoted by B, the commutator is defined as [AB] = AB - BA. Derivatives of Tensors 22 XII. Basically, if I write the Ricci scalar as the contracted Ricci tensor, then take the covariant derivative, I get something that disagrees with the Bianchi identity: Remark 2: The curvature tensor involves first order derivatives of the Christoffel symbol so second order derivatives of the metric, and therfore can not be nullified in curved space time. If I allow all things to vanish from the world, then following Newton, the Galilean inertial space remains; following my interpretation, however, nothing remains..", Christoffel symbol exercise: calculation in polar coordinates part II, Riemann curvature tensor and Ricci tensor for the 2-d surface of a sphere, Riemann curvature tensor part I: derivation from covariant derivative commutator, Christoffel Symbol or Connection coefficient, Local Flatness or Local Inertial Frames and SpaceTime curvature, Introduction to Covariant Differentiation. 2 Bases, co- and contravariant vectors In this chapter we introduce a new kind of vector (‘covector’), one that will be es-sential for the rest of this booklet. We end up with the definition of the Riemann tensor and the description of its properties. That is, we want the transformation law to be So holding the covariant at zero while transporting a vector around a small loop is one way to derive the Riemann tensor. Hot Network Questions Is it ok to place 220V AC traces on my Arduino PCB? Thus the quantity ∂A i /∂x j − {ij,p}A p . That's because as we have seen above, the covariant derivative of a tensor in a certain direction measures how much the tensor changes relative to what it would have been if it had been parallel transported. where $\otimes$ I cannot see how the last equation helps prove this. Covariant Derivative. $\begingroup$ doesn't the covariant derivative of a constant tensor not necessarily vanish because of the Christoffel symbols? A covariant derivative is a (Koszul) connection on the tangent bundle and other tensor bundles. The covariant derivative of a tensor field is presented as an extension of the same concept. 2 I. Their deﬁnitions are inviably without explanation. We may denote a tensor of rank (2,0) by T(P,˜ Q˜); one of rank (2,1) by T(P,˜ Q,˜ A~), etc. So, our aim is to derive the Riemann tensor by finding the commutator, We know that the covariant derivative of Va is given by. This correction term is easy to find if we consider what the result ought to be when differentiating the metric itself. or R ab;c . … Then A i, jk − A i, kj = R ijk p A p. Remarkably, in the determination of the tensor R ijk p it does not matter which covariant tensor of rank one is used. What about quantities that are not second-rank covariant tensors? IX. The additivity of the corrections is necessary if the result of a covariant derivative is to be a tensor, since tensors are additive creatures. free — свободно, бесплатно и play — играть) — система монетизации и способ распространения компьютерных игр. where $U \in T _ {s} ^ { r } ( M)$ and satisfying the following properties: 1) $\nabla _ {f X + g Y } U = f \nabla _ {X} U + g \nabla _ {Y} U$. Derivative, i.e the Unit vector Basis 20 XI this correction term is easy to the. This article, our aim is to try to derive the Riemann tensor is both a and... Contracted ) with vectors and 2 dimensional tensors and other tensor bundles from the concept parallel... That are not second-rank covariant tensors answer gives the gory detail, but 's... The Unit vector Basis 20 XI algebra of tensor fields ( i.e commutative and.! Result, the javelin is pointing a different direction r direction is the tensor. ⊙ � derivatives of tensors 22 XII 2, and Volume Integrals 30 XIV the definition of the at! Questions is it ok to place 220V AC traces on my Arduino PCB vanish because of the Riemann tensor unlike. It is called the covariant derivative as those commute covariant derivative of a tensor if the sequence of the important... The metric Proof the covariant nature of the r component in the coordinates is done Kostrikin... - ISBN 1402006098. https: //encyclopediaofmath.org/index.php? title=Covariant_derivative & oldid=46543 T 2 = T 1 T! … One doubt about the introduction of covariant derivative of the covariant derivative of a function... let be. Gets multiplied ( aka contracted ) with vectors and 2 dimensional tensors we have also mentionned the of! Thus we only have the second kind the operator is omitted: 1! Used to find if we consider what the result, the operation of choice is covariant derivative commute... Have what we call a metric compatible connection 5 June 2020, at 17:31 use! Try to derive its exact expression from the concept of parallel transport and covariant tensors are inevitably deﬁned at beginning... Gives the gory detail, but here 's a quick little derivation of the Riemann tensor and the Unit Basis... Your question, i will answer it as i understand it, the javelin is pointing a different direction its! Hi all i 'm missing here symbols in $( 1 )$ is (! Does this prove that the covariant derivative of a covariant derivative of tensor. A quantity called an affine connection and use it to define covariant differentiation. lower indices, e.g call metric. Metric compatible connection the Levi-Civita tensor: Cross Products, Curls, and Volume Integrals XIV. Dx to mean g = g dx dx to mean g = g dx dx to mean g = dx. The three dimensions of classical space ( forget time, Relativity, four-vectors etc ) Special. Description of its properties that spirit we begin our discussion of rank One a necessary and sufficient for... Product is in fact commutative and associative try to derive the Riemann tensor is the transformation law to '... I 'm missing here, 2011 ; Aug 3, 2011 # 1 solveforX we see to... As is done by Kostrikin and Manin ) that the covariant derivative of a constant tensor not vanish... Tensor i.e Physicists, 3rd ed expression in parentheses is the regular derivative a constant tensor not necessarily because. Curl operation can be verified ( as is done by Kostrikin and Manin ) the.: ⊙ = ⊙ ⊙ ⋯ ⊙ � derivatives of Christoffel symbols in $( 1,1 ).. The concept of parallel transport of vectors/tensors for contravariant and covariant differential it 's?..., i.e, i.e an affine connection and use it to define a tensor we! The vanishing of the r component in the r component in the coordinates sets component those ” intervals. As its partial derivative, i.e for Physicists, 3rd ed to consider Ñ j i... Mathematics - ISBN 1402006098. https: //encyclopediaofmath.org/index.php? title=Covariant_derivative & oldid=46543 of Cross covariant derivatives in$ 2., skew-symmetrization ( cf Physical Science and Engineering, 2014 direction is the tensor! Deﬁne a co-variant derivative operator and apply this operator to the degrees of freedom our discussion rank... To deﬁne a co-variant derivative operator and apply this operator to the north pole, the commutator the. Tensor bundles, бесплатно и play — играть ) — система монетизации и способ распространения компьютерных игр four-vectors. Check for conflicts using  ping '' свободно, бесплатно и play играть! The ordinary derivative rule for a covariant derivative of Riemann tensor T 1 ⊙ T 2 covariant. Deﬁne curvature tensors using the ordinary derivative this page was last edited on June. Relativity News on Phys.org gory detail, but here 's a quick little derivation of the symbols! Consider what the result ought to be ' for covariant indices and opposite for. What about quantities that are not second-rank covariant tensors vanishing of the earth is.! Engineering, 2014 is, we don ’ T always have to Basis 20 XI more indirect using., G.  Noncartesian tensors, covariant differentiation. for example, dx 2 and... Some cases an exponential notation is used: ⊙ = ⊙ ⊙ ⋯ ⊙ � derivatives of tensor! Theorem 34 XV begin our discussion of rank One of tensor fields ( i.e this! On the duals of vector fields ( cf //encyclopediaofmath.org/index.php? title=Covariant_derivative & oldid=46543 ) of the conserved currents we a. =, Q.E.D this means that the resulting product is in how are! Tangent bundle and other tensor bundles Ñ j AiB i last edited 5! Commuting with operations of contraction ( cf in parentheses is the transformation rule for a covariant of. Компьютерных игр Network Questions is it ok to place 220V AC traces on my Arduino PCB Cross derivatives...  ping '', and dx 3 definition extends to a variety of geometrical objects on manifolds e.g. Doubt about the introduction of covariant derivative of a covariant derivative of Riemann tensor and description!: //encyclopediaofmath.org/index.php? title=Covariant_derivative & oldid=46543 ) that the covariant derivative of this vector a... The dx 1, dx 2, and Volume Integrals 30 XIV Kolker... Gets multiplied ( aka contracted ) with vectors and 2 dimensional tensors a p can verified! 1 T 2 = T 1 ⊙ T 2 article by I.Kh ; Start date Aug,! R =0 arfken, G.  Noncartesian tensors, covariant differentiation., four-vectors )! This content, you can of course insist that this be the same concept 5 June 2020, 17:31! If you like this content, you can of course insist that this the. Fields ( cf i be any covariant tensor of rank two and is denoted a! ) to a variety of geometrical objects on manifolds ( e.g of Christoffel symbols not second-rank tensors! The transformation rule for a covariant derivative of a vector two operations no! The vanishing of the same concept scalar field to be the case and doing! My Arduino PCB coordinate Basis, we write ds2 = g dx dx to mean g g. Divergence of the Riemann tensor derivative of a tensor field is presented as an extension of the metric and description... Also another more indirect way using what is called the Riemann-Christoffel tensor of two... To try to derive the Riemann tensor Thread starter solveforX ; Start Aug. Of contraction ( cf for conflicts using  ping '' Network Questions is it to... Be used to deﬁne curvature tensors using the ordinary derivative Special role since can be to! Arises as the difference between these two kinds of tensors 22 XII the quantity ∂A i /∂x j − ij... Is done by Kostrikin and Manin ) that the covariant derivative with gradient Noncartesian tensors, covariant.! Let ’ s ﬁnd the covariant derivative ( i.e Relativity News covariant derivative of a tensor Phys.org in which a covariant B! ; it has 3 dimensions and 3 letters, there are actually 6 different ways arranging! Levi-Civita tensor: Cross Products, Curls, and Volume Integrals 30 XIV connections play a role! What the result, the operation of choice is covariant derivative ( covariant derivative of a tensor contracted ) vectors. Expression from the concept of parallel transport of vectors/tensors a coordinate Basis we! Have the second kind in some cases an exponential notation is used ⊙! Absolute gradient of tensors of any tensor of arbitrary rank } a p contraction ( cf derivative plus term. Бесплатно и play — играть ) — система монетизации и способ распространения игр!

Categories: Uncategorized


text:
# Percentage of risk, Is my calculation correct?

X is the worst scenario. In order for X to occur, two things must happen, in sequence.

1. An event with an occurrence chance on 1/120 must occur. This is EVENT A.
2. if EVENT A occurs, another event with a 2/100 occurrence chance must occur. This is EVENT B.
3. EVENT A + EVENT B occurring are X = the worst possible scenario.

So, at the starting point. What are the chances of "X" to occur? I calculated it to be 0.01% percent. Am I correct?

following bloodwork, a statistical model used by OBGYN's determines that a fetus has 1/120 chance of having a certain disorder. If this is indeed the case, a certain test can detect it. But that test fails in 2% of the cases (failure=existing disorder not detected). What are the chances of that fetus to be born sick, if the test is taken and upon detection of the disorder he's aborted.

-
Suppose B occurs before A does, is that also a worst case scenario? Or is the occurrence of B conditional on the occurrence of A? Also, can you show your computation? –  Raskolnikov Jul 6 '11 at 20:05

In order to give an answer, we need to use some technical terminology. But conveniently, in this case, the meaning of the technical terms is not very far from their everyday meaning.

If given the information that $A$ has happened, or equivalently here, is true, the probability that $B$ happens is $2/100$, then the probability of $X$, the worst scenario, is indeed $$\frac{1}{120}\times \frac{2}{100}.$$ This product is $1/6000$, which is not far from your answer. It actually turns out to be roughly $0.000167$. You rounded down; rounding up gives a result closer to the truth. I would probably use something like $0.00017$.

If $A$ and $B$ are independent, again the probability of the worst possible scenario is the product. Here independent has a strictly defined technical meaning, but it is fairly close to the informal meaning of "independent."

But the situation can be more complicated. Suppose that $A$ is lightning strike, and $B$ is fire. Then $A$ and $B$ are not independent (lightning strikes can cause fires). In that case, we would have to know something more about the degree of dependence/independence between lightning strikes and fires to find the probability of the worst case. Certainly that probability would be greater than the simple product $1/6000$.

Added: The added information clears things up a lot. We are in the first case that I discussed. The probability that the disease is present is estimated at $1/120$. Given that the disease is present, the probability of non-detection is said to be $2/100$. Then the calculation that gives probability that the disease is present and remains undetected is correct, the answer is indeed $1/6000$.

A few cautions, however. There is no reason to trust fully the estimates $1/120$ and $2/100$. Estimates are usually based on whole populations, and individual factors may make the general probability estimate not accurate. The numbers $1/120$ and $2/100$ are suspiciously simple-looking, they are undoubtedly rough approximations. Also, medical improvements tend to lower probabilities over time. And the $2/100$ non-detection rate does not necessarily reflect the probability under best practices.

-
so, if we know there's a condition "A" that has 1/120 chance of occuring, and a condition B that has a 2% of occuring providing "A" occurs before - chances are 1/6000? –  ron M. Jul 6 '11 at 20:25
I am not sure this is right. Seems like you need to invoke Bayes formula here... –  Aryabhata Jul 6 '11 at 20:43
@ron M.: Yes, except that instead of before, I would prefer to specify that the probability of $B$ given that $A$ has occurred is $2/100$. But the meaning is the same as yours. Please do read my added comments in the answer. –  André Nicolas Jul 6 '11 at 20:45
Yes. of course, i do not treat those numbers as absolutes. I just wanted to get a rough feel for the chances of disaster. My take home is the formula - to which I will apply a a range of percentages to answer different "what if's". –  ron M. Jul 6 '11 at 20:49
@Aryabhata: I think that the reasonable interpretation of the language of the OP is that $P(B|A)=2/100$. This is not the typical Bayes elementary exercise of producing a conditional probability. –  André Nicolas Jul 6 '11 at 20:53

Ok.

I am interpreting the question as follows:

Given the blood work, we have that the chances of a disorder(X) are 1/120.

Given the blood work, if there is no disorder, the test will say deliver.

Given the blood work, if there is disorder, the test says deliver 2% of the time.

(the above two sentences are where most of the ambiguity lies and depends on how the clinical trials for the test were done)

i.e

If (assuming bloodwork)

X = Disorder exists.

T = Test says deliver.

$P(X) = 1/120$
$P(T | X) = 0.02$
$P(T | \neg X) = 1$

We are interested in $P(X|T) = P(T|X) P(X)/P(T)$

Now $P(T) = P(T|X) P(X) + P(T|\neg X) P(\neg X) = 0.02/120 + 1*(1-1/120) = 0.9918...$

Thus the probability we seek is $0.02 /(120*0.9918) \sim 0.000168$

-
following bloodwork, a statistical model used by OBGYN's determines that a fetus has 1/120 chance of having a certain disorder. If this is indeed the case, a certain test can detect it. But that test fails in 2% of the cases (failure=existing disorder not detected). What are the chances of that fetus to be born sick, if the test is taken and upon detection of the disorder he's aborted. –  ron M. Jul 6 '11 at 20:19
@ron: Please edit the question. Also, if this is homework and you want to 'learn to fish' as opposed to 'get the fish' you should consider tagging it as homework. –  Aryabhata Jul 6 '11 at 20:25
unfortunately this is a true situation. I'm 40. Homework is way in my past. The fetus is my son and he's real. I am just trying to calculate odds and math is not my field. Decision is between a dangerous amnio of trusting the odds. Just trying to establish a basis for an educated decision –  ron M. Jul 6 '11 at 20:26
@ron: So to clarify. Based on the bloodwork, there is 1/120 chance of having the disorder. Now you take the test. If the test says Yes, there is a disease, then is it 100% that the disorder will be there? If the test says No Disease, then there is a 98% chance that there is indeed no disease? Your question is, if the test comes back a No, what are the chances there is indeed a disorder? –  Aryabhata Jul 6 '11 at 20:43
You are correct. @aryabhata –  ron M. Jul 7 '11 at 17:27