text:
Incurable romantics: Don Juan in Soho and William Wordsworth
Byron floats in the background of Nicholas Pierpan's William Wordsworth and Patrick Marber's Don Juan in Soho.
By Mark Lawson
Mark Douet
The first chapter in any handbook on how to run a regional theatre would stress the importance of telling stories of local importance. Conrad Lynch, taking over stewardship of the artistically sharp and stunningly situated Theatre by the Lake, couldn't have started much closer to home than with the world premiere production of William Wordsworth by Nicholas Pierpan.
The trap with a Wordsworth biodrama is offering a greatest hits from the life and writing, but Pierpan is disciplined about both risks. Only two poems are spoken – including "There Was a Boy", in circumstances of personal extremity – and the time frame freezes in 1812.
Strikingly, this Wordsworth is only once seen outside, and even then in a cemetery, evidence of the playwright's strategy to counter the stubborn historical image of the nature poet delivering soliloquies to daffodils. Instead Pierpan focuses on Wordsworth's human nature. The poet is suffering crises professional – he has ceased to publish, fearing a dearth of receptive readers and reviewers – and medical: bursts of blindness and a son with measles, at that time often fatal. But his greatest pressure is financial: the long historical dilemma of how to be a radical and pay the rent.
There might have been fears that a play staged so close to Wordsworth's birthplace in Cockermouth would give home advantage to the poet, but John Sackville's ascetic, even priggish William has to fight for the audience's sympathy against the sensual, rambunctious Samuel Taylor Coleridge (Daniel Abelson). The play vividly sketches the men's tense friendship.
This venue is a nightmare for designers, because even a seven-figure budget and the hottest digital technology couldn't match the astonishing natural cyclorama of lake, park and hills outside the theatre's front door. Andrew D Edwards, however, creates an elegant box of sliding interior schemes with distorted images of the Lake District, like abstract postcards, beyond.
The director, Michael Oakley, has assembled an impressive cast that also features Terence Wilton, whose enjoyably pompous Lonsdale proves more cunning than he seems, and Joseph Mydell as Sir George Beaumont, the middleman between the poets and the establishment they despise politically but need financially. With some tightening of dialogue and a less abrupt ending, English Touring Theatre, the co-producer, could have a hit.
In Pierpan's play, Byron is always just about to come on (at one point literally: he's said to be outside the door), but, like Shakespeare in Peter Whelan's The Herbal Bed, he never arrives, and presumably for the same reason: that he would stop the show if he did. Byron also attends from a distance the action of Patrick Marber's Don Juan in Soho, his great poem "Don Juan" having been vital in defining the character of the Spanish libertine. But Marber is more directly indebted to Molière – whose 1665 comedy he has relocated and updated for a play first seen in 2006 – and to Mozart: the music from Don Giovanni for the descent into hell starts and concludes a soundtrack that also intermittently breaks into dance music.
In Marber's modernisation, the doomed seducer becomes "DJ", an aristocrat whose addictions to drink and drugs and sex would lead to all leave being cancelled at the Priory. The scroll of the don's conquests, a central feature in the opera, is now kept on a shag-app stored on the iPhone of his valet, Stan. In this contemporary, secular setting, damnation does not seem real, and Marber also removes the possible consequences of reckless sex: disease and descendants. The sense of danger that Molière, Mozart and Byron brought to the story crackles only in a scene where DJ tries to provoke a Muslim street-sleeper to blaspheme for profit by insulting the Prophet, and a provocative speech in which DJ argues that he deserves heroic status for not being hypocritical about his greed and selfishness, unlike a roll-call of media and social media offenders encompassing politicians, bankers, coppers, celebrities, bloggers and vloggers.
The reason for this lavish West End revival is the casting in the title part of David Tennant, who vies with Benedict Cumberbatch for Britain's most bankable male actor. As in Broadchurch, he is a pleasure to watch, his performance a detailed accumulation of meticulous vocal and bodily decisions, as when, by waiting, DJ forces Stan to move a glass on a table closer three times before he will condescend to drink from it.
Few in the audience will have bought tickets specifically to watch Adrian Scarborough as Stan, but all will go home thrilled to have seen him. In a fair world, this tremendous actor (adept at finding the tragedy in comedy, and vice versa) would be as well known as Tennant. But, as all versions of the Don Juan legend attest, just deserts are sometimes slow to come.
"William Wordsworth" is at Theatre by the Lake, Keswick, Cumbria, until 22 April
"Don Juan in Soho" is at Wyndham's Theatre, London WC2, until 10 June
› Social security is a matter of life or death for women fleeing domestic abuse
Mark Lawson is a journalist and broadcaster, best known for presenting Front Row on Radio 4 for 16 years.
This article appears in the 06 April 2017 issue of the New Statesman, Spring Double Issue
Jellyfish: exploring the sex life of a woman with Down's syndrome
Ed Sheeran's new collabs album is cringeworthy, dull and insincere


text:
Podocarpus affinis — вид из рода  семейства . Эндемик островов Фиджи.

Типология
Вид описан по экземпляру растения, собранному 24 августа 1860 года на вершине горы Вома (высота — 923 м) в провинции Намоси на острове Вити-Леву.

Распространение
Произрастает в густых лесах на высоте 600—960 м. Имеет очень ограниченный ареал, встречаясь только на острове Вити-Леву.

Согласно Красной книге МСОП вид находится в уязвимом состоянии.

Биологическое описание
Podocarpus affinis — небольшое дерево высотой 3-9 м. Листья маленькие, жёсткие, линейно-эллиптические. Верхушка закруглённая или затупленная. Верхняя сторона листа тёмно-зелёная, нижняя — вначале голубовато-зелёная, затем по мере высыхания рыжеватая. Длина листа — 3-5 см, ширина — 6-9 мм. Длина мужских шишек — 2-3,5 см, диаметр — 2-3 мм. Мужские шишки созревают в ноябре, плоды — в августе и ноябре.

Примечания

Ссылки

Подокарповые
Флора Океании
Эндемики Фиджи

redpajama_set_name: RedPajamaWikipedia


text:
whole genome sequence
Muin J. Khoury
Scott Bowen
David Dotson
Marta Gwinn
Office of Genomics & Precision Public Health
Precision Medicine Update: Important Progress on the Long Road from Discovery to Population Health Impact
Posted on August 26, 2019 by Muin J. Khoury, Office of Public Health Genomics, Centers for Disease Control and Prevention, Atlanta Georgia and George A. Mensah, Center for Translation Research and Implementation Science, National Heart, Lung, and Blood Institute
Impressive Pace and Potential
The All of Us Research Program is an ambitious United States initiative launched in 2015 to collect health-related information on one million or more volunteers from diverse communities. A recent paper in the New England Journal of Medicine described progress and lays out the vision for the initiative moving forward. As of July 2019, more than 230,000 people have been enrolled from over 340 recruitment sites. Participants are 18 years of age or older and include a majority of persons from population subgroups that have been historically underrepresented in health research. Participants are contributing information using multiple approaches, such as surveys, electronic health records, physical measurements, as well as biological specimens including blood, urine, and saliva samples. In addition, data from wearable devices are collected. In the near future, additional health surveys will be available, and participant data will be linked to other sources of information using digital health technologies and genomic studies. Participants in this effort will receive in-depth information about themselves that they can share with their health care providers to make better decisions about their care.
The program is also developing new approaches to generate, access, and make data broadly available to numerous approved researchers to accelerate knowledge gained for a variety of diseases and health conditions. With a plan to follow the health and outcomes of participants over decades, All of Us will permit researchers to analyze an unprecedented array of information on: individual differences in lifestyle, socioeconomic factors, environment, and biologic characteristics in order to advance precision medicine diagnosis, prevention, and treatment for numerous diseases. Efforts in the United States and other countries, including the U.K. Biobank, the Million Veteran Program, the China Kadoorie Biobank, and others have clearly documented the ability of large cohort studies to improve biomedical discovery for a variety of fields.
Active Engagement of Diverse Stakeholders
The focus that the All of Us Research Program has placed on myriad stakeholders is reassuring. From participants and their families in their local communities to health care providers and researchers in academic health centers and public health officials at the state and local levels, the program has invested in establishing "authentic engagement" and creating value for participants. Most importantly, ensuring racial, ethnic, ancestry, and geographic diversity will go a long way to address an important current limitation in genomics and precision medicine efforts. These strategic engagement efforts will be invaluable in facilitating robust recruitment, long-term participant retention, and overall program success.
Important Limitations and Challenges
In their paper, All of Us investigators reflected on some of the limitations and challenges ahead, including the lack of population representativeness of the cohort (in contrast to national surveys such as the National Health and Nutrition Examination Survey), the need to clearly define scientific goals, the difficulty of reaching subpopulations (such as rural areas), and some of the previously expressed general skepticism about the field of precision medicine. Other considerations include the need to include upstream social determinants of health, the importance of prevention (not just treatment), and the need to implement individual and population level interventions that can save lives today. More generally, there remains the critical challenge of validating and translating associations that emerge from studies into meaningful interventions at the individual and population level that can be evaluated for their utility and implementation.
Keep a Focus on the Actual Health Benefits to All of Us
All these and other challenges notwithstanding, progress in precision medicine and All of Us will continue to occur at an accelerating pace. As this project can potentially affect all of us, the public health community will continue to partner with All of Us to help reap the potential population health benefits of this effort in the decades ahead.
Categories genomics, precision medicine
Tags population health

redpajama_set_name: RedPajamaCommonCrawl


Add a touch of opulence to your home with the Maverick 3 Piece Fabric Recliner Lounge Suite. This beautifully constructed lounge suite offers exceptionally comfortable cushion seating and two recliner functions on the sofa alone. While the two single chairs feature swivel recliner mechanisms and support a 150 kg weight limit.
Made with top quality materials this suite features dual layered high density seat foam for long lasting comfort and zig zag springs for added support while the upholstery is made from hard-wearing 100% Polyester fabric.
Consists of: 1 x 3 seater Sofa with two built in recliners and 2 x single swivel recliner chairs.
Please note: Price is for indicated suite only. Accessories and other products are not included.
Maverick 3 Piece Fabric Recliner Lounge Suite is rated 5.0 out of 5 by 1.
Rated 5 out of 5 by SCrous from Amazing comfort Absolutely love this lounge suite, it is comfortable, easy to clean, good quality and just all round amazing.


Readers might find this page to be interesting, a list of 15 Canadian French expressions. I can't vouch for their actual usefulness or lack thereof, but the possible etymologies explained there are quite interesting. I'll mention the history of a few but there's more information on the page itself in French. Some of these seem like folk or uncertain etymologies.
Se prendre pour le boss des bécosses - to act like one is the boss, but an expression insulting the person acting this way as bécosse comes from back house, or an outhouse. Big fish in a small pond perhaps?
C'est quétaine - it's ugly, boring, etc. Apparently something to do with a family with a surname similar to this but seems a bit uncertain.
Se tirer une bûche - to pull up a chair, literally a log. This one is quite easy - logs serve well as makeshift chairs during colonial times and the word bûche kept this meaning, just like plume (feather) for pen.
Avoir des bidous - to have money. Apparently comes from a type of money used in northern France until the 17th century.
Être un pissou - be afraid of everything.
Pogner les nerfs - have a temper tantrum.
Être habillé comme la chienne à Jaques - to have weird style. The page says this comes from a man who dressed his dog in any clothing he could find to help it survive the cold winter.
Avoir la falle basse - to look depressed, dejected.
Être aux oiseaux - to be extremely happy, ecstatic. Être aux anges is the way to say this in standard French, and angels was changed to birds in Quebec.
Passer la nuit sur la corde à linge - to have a sleepless night. Corde à ligne is a clothesline, so this signifies a person that looks like clothes that have spent the night on the line being blown to and fro until the morning. In standard French this is passer une nuit blanche.
Avoir l'air magané - to be in poor condition, either people or objects. Mahaignier in ancient French meant injured or crippled.
Courir la galipote - go on romantic adventures. Used to refer to witchery and galipote was a shapeshifter or werewolf.
Attache ta tuque avec de la broche - kind of like "hold on to your toque, it's going to get rough."
Parler à travers son chapeau - talking through your hat. Same as in English, to talk about something you don't know much about as if you were an expert.
Se lâcher lousse - lousse here is from English loose, and means to let yourself go and enjoy, to do whatever you want. Let yourself loose.


Rock Paper Shotgun has gotten into some silliness, but it makes for a fun read!
"There's been some complaints that games journalism is lacking hard-hitting investigative journalism. With the news that PC Zone's forthcoming 200th issue will be the first public unveiling of Deus Ex 3, I saw the opportunity to change all that. I know where PC Zone's London office is. I'm a skilled veteran of many immersive sims. And I have a trenchcoat and can easily buy a pair of shades.
I can break into PC Zone's office and steal their assets!"
I played the game at age 10 when it first came out, and when I found it and began playing again about 6 years later, I was so proud of myself for remembering 0451.
I definately like the 'TWONK!' sequence.
At the risk of saying the obvious: you know it's a reference to a little sci-fi movie called Fahrenheit 451?
I'm within one and a half metres of the world's first Deus Ex 3 shots. I trust that those in the DX community with those photo-analytic tools they use in Bladerunner will use enhancement software to change the angle to the other side and allow us to examine it. That'll be well fancy.
Well either that or that LCD monitor has a very limited viewing angle, making a night time screen look like day time :nut: (I doubt it, though).
Fahrenheit 451 is actually a book by Ray Bradbury...movie later...also, it's actually a reference to System Shock, where the 1st door code was 451. That was a reference to Fahrenheit 451.
Right, being somewhat of a sci-fi films geek, I know it from the movie :p It's just about the only door code I always remember upon replays (or isn't there a '1984' doorcode somewhere?).
To be perfectly honest, I wished they used 3316, that one has a slight special meaning to me. Excellent article nonetheless, I'm bookmarking that, and saving it forever. I love whoever wrote it.
...but I have been able to surmise the screenshot looks like DAY-TIME!
Or perhaps it is in a well lit room!
BREAKING INTO OFFICE BUILDINGS AND STEALING VALUABLE INFORMATION CONFIRMED!
So then you are saying its a photo of a guy breaking into a building taking a photo of a screen which has a photo of a guy breaking into a building taking a photo of a screen which has a photo of a guy breaking into a building taking a photo of a screen?
I think the ending of the last DX game that they make should end with your character at last emerging in daylight right after saving the world from certain destruction...epic.
Oh, and you would be playing as Paul Denton. Paul is my hero.
...Only to realize it was all just a dream, and you're still late for school.
lol, it's clearly a picture of an employee.


text:
Tostu () is a village in Jalal-Abad Region of Kyrgyzstan. It is part of the Aksy District. The village was established
in the area of Kashka-Suu rural settlement (aýyl ökmötü) in July 2019.  Its population was 1,665 in 2021.

References

Populated places in Jalal-Abad Region


text:
Home › Quotes About Planting A Seed
Quotes About Planting A Seed
Enjoy reading and share 32 famous quotes about Planting A Seed with everyone.
"This very act of planting a seed in the earth has in it to me something beautiful. I always do it with a joy that is largely mixed with awe."
— Celia Thaxter —
"After 1656 the Dutch, who had gained control over the Moluccas, chose the islands that could be most easily defended. They then burned all the nutmeg trees on the other islands to make sure no one else could profit from the trees. Anyone caught trying to smuggle nutmeg out of the Moluccas was put to death. The Dutch also dipped all their nutmegs in lime (a caustic substance) to stop the seed from sprouting and to prevent people from planting their own trees. Pigeons, however, defied these Dutch precautions. Birds could eat nutmeg fruits, fly to another island and leave the seeds behind in their droppings."
— Meredith Sayles Hughes
we will make
we protest
we will go planting
Make poems
seed grass
feed a child growing
Whatever we stand against
We will stand feeding and seeding
I walk
I will make"
— Muriel Rukeyser
"The planting is reserved for those who come after us and have the foresight to bring seed. I only clear the ground for them. Clearing ground an piling stones is little enough, but it is better than sitting in idleness."
— J.M. Coetzee
"The first principle of success is desire - knowing what you want. Desire is the planting of your seed."
— Robert Collier
"There is no regret in planting a seed of love in someone's heart."
— M.F. Moonzajer
"You were planting a seed and a butterfly was standing on a flower afar, just watching you ... Do you know what it has in mind? It is just saying, "go ahead and plant ... I will help you with pollination". God will never leave you. He will make your flowers bear fruits if only you GO AHEAD"
— Israelmore Ayivor
"I sing a little bit in videos, at the end of vlogs. A lot of my fans started requesting that I do a song. They started planting this seed in me."
— Rosanna Pansino
"We like things to manifest right away, and they may not. Many times, we're just planting a seed and we don't know exactly how it is going to come to fruition. It's hard for us to realize that what we see in front of us might not be the end of the story."
— Sharon Salzberg
"Do you have a dream? If you do, what is it? Is your dream similar to mine? I hope that even more people dream the same dream as me, because my dream is so big I couldn't handle it by myself. If you are someone who has the same dream as me, this is what I have to say to you. Right now, you are planting a single tree. Right now, you are sowing a single seed. And you are beginning to knit something with one strange of yarn. The first step or two are nothing, but imagine that you continue that work for ten years. One tree becomes a forest, one seed becomes a field, and that single thread becomes a beautiful cloth. Believe in the life inside you, believe in the great and holy mind within you, and push forward with the dream you have chosen until you make it."
— Ilchi Lee
"Overcoming the problems we face today and planting the seed of peace is not a task for any one nation, people, or religion. This will be possible only when spiritually awakened people from every corner of the world share the power of a single vision and create an alliance of Earth-Humans."
"God has ordered our existence to operate like a farmer planting seed in a field. If you pray and ask God for an oak tree, the Almighty might send you an acorn, because big things can come from small beginnings. God's answer may not look like your request. So when you get an acorn but were expecting a tree, don't throw the acorn away. Your tree is in the seed. God works through the agricultural principle of planting a seed and reaping a harvest. Your something small can become something mighty if you are a good steward of the seed."
— T.D. Jakes
"If you really spend time with movies, it's three years of your life from beginning to end. I started out planting the seed with 'Monster's Ball' about independent cinema and raising money and that whole thing as a producer, and then it becomes easier for me."
— Lee Daniels
"I'm paraphrasing, but yeah, a friend out of the Chicago organization did." "Chicago? You tried planting your seed in the DeMarco family?"
— J.M. Darhower
"Women are so useless and unimaginative, aren't they? All they ever think of planting in the dirt is the seed of something beautiful or edible. The only missile they can ever think of throwing at anybody is a ball or a bridal bouquet."
"Garden work consists much more in uprooting weeds than in planting seed. This applies also to teaching."
— Frank Auerbach
"Modern anthropology ... opposes the utilitarian assumption that the primitive chants as he sows seed because he believes that otherwise it will not grow, the assumption that his economic goal is primary, and his other activities are instrumental to it. The planting and the cultivating are no less important than the finished product. Life is not conceived as a linear progression directed to, and justified by, the achievement of a series of goals; it is a cycle in which ends cannot be isolated, one which cannot be dissected into a series of ends and means."
— John Carroll
"That two bodies press convulsively together, man and woman, he fertilizing her, he giving her a budding life, or he planting a seed, a seed of life in her womb - Oh God. I think this God-given idea is so enormous, so eternal, so endlessly wise - that people should not be allowed to depict it in art!!"
— Gustav Vigeland
"I've always liked a formal layout and informal planting," she explained. "First get the structure right, like the bones in a face, then plant it like a crowded shoe. If you have a strong layout, you can let the plants seed themselves all over the place. Haphazard, unexpected ... I like to be surprised by a garden."
— Nancy Lancaster
— Celia Thaxter
"Of all the wonderful things in the wonderful universe of God, nothing seems to me more surprising than the planting of a seed in the blank earth and the result thereof. Take that Poppy seed, for instance: it lies in your palm, the merest atom of matter, hardly visible, a speck, a pin's point in bulk, but within it is imprisoned a spirit of beauty ineffable, which will break its bonds and emerge from the dark ground and blossom in a splendor so dazzling as to baffle all powers of description."
"I see the world at peace. If we can hold that thought, that thought has a power. The thought is witnessing a reality of peace in the world. By witnessing the possibility that it can take place and holding it in my consciousness, then that becomes something that is transmitting into the world. It's like a seed of peace that I'm planting from my consciousness into the world."
— John Morton
"By gathering seed from trees which are close to our homes and close to our hearts, helping them to germinate and grow, and then planting them back into their original landscapes, we can all make a living link between this millennium and the next, a natural bridge from the past to the future."
— Chris Baines
"Everything we're doing is planting a seed that will come to fruition at some point"
— Cyndi Lee
"I love helping entrepreneurs. It's something I really have fun doing. It's like planting a little seed and watching it grow. Any time I can help somebody, that's a good thing. It's fun. If I get to make some money at it, it's even better."
— Mark Cuban
"As far as my planting program goes, I simply broadcast rye and barley seed on separate fields in the fall ... while the rice in those areas is still standing. A few weeks after that I harvest the rice, and then spread its straw back over the fields as mulch."
— Masanobu Fukuoka
"An ordinary favor we do for someone or any compassionate reaching out may seem to be going nowhere at first, but may be planting a seed we can't see right now. Sometimes we need to just do the best we can and then trust in an unfolding we can't design or ordain."
"I always encourage authors (especially new authors) to be as generous as we are blessed. For one thing, it is a way to help people. For another, it is a seed one is planting for the life of the book. Someone gave it to someone who gave it to someone else."
— Andy Andrews
"Take a woman talking,
purging herself with rhymes,
drumming words out like a typewriter,
planting words in you like grass seed.
You'll move off."
— Anne Sexton
"It would be easier to grow oak trees by planting marbles than for someone to be saved without the seed of the word."
— Steven J. Lawson
"God has the tough end of the deal. What if instead of planting the seed you had to make the tree? That would keep you up late at night, trying to figure that one out."
"A gift is like a seed; it is not an impressive thing. It is what can grow from the seed that is impressive. If we wait until our seed becomes a tree before we offer it, we will wait and wait, and the seed will die from lack of planting ... The miracle is not just the gift; the miracle is in the offering, for if we do not offer, who will?"
— Wayne Muller
"Affliction comes to us all ... not to impoverish, but to enrich us, as the plough enriches the field; to multiply our joy, as the seed, by planting, is multiplied a thousand-fold."
— Henry Ward Beecher
Planting A Seed Quotes Pictures
Want to see more pictures of Planting A Seed quotes? Click on image of Planting A Seed quotes to view full size.
Buddy DeFranco Quotes
David Shuster Quotes
Ferdinand Porsche Quotes
Freddie Gibbs Quotes
Geena Rocero Quotes
Helen Hollick Quotes
John Ritter Quotes
John Shelton Reed Quotes
Lottie Moon Quotes
Michael Langley Quotes
Moms Mabley Quotes
Omar EL KADMIRI Quotes
Orji Uzor Kalu Quotes
Peekey Quotes
Tom Seaver Quotes
Quotes About Relaxing And Reading
Quotes About Disrespecting Love
Salty Kisses Quotes
That Moment When You Wake Up Quotes
Quotes About Undies
Quotes About The Fleeting Nature Of Life
Spend Your Life With Me Quotes
Immortals After Dark Quotes
Quotes About Uss Arizona
Restraining Anger Quotes
Quotes About Not Being Loved By Your Mother
Quotes About Victory Party
Quotes About Marginalisation
Hard Work Unnoticed Quotes
Funny Monique Quotes


text:
Novelis is the leading producer of flat-rolled aluminum products and the world's largest recycler of aluminum.
Novelis Blog
Novelis is the world's leading supplier of aluminum sheet to the automotive industry.
Automotive Sustainability
Manufacturing Robustness
Safety & Lightweighting
Beverage Can
Aluminum Beverage Cans
Novelis is the largest producer of aluminum beverage can sheet
and the world's largest recycler of used beverage cans (UBCs),
recycling roughly 60 billion UBCs each year.
Novelis scientists work closely with our customers to help design some
of today's most advanced and sophisticated aluminum products.
Industry, Electronics & Energy
Sustainability At Novelis
Sustainability is a central component of Novelis' corporate strategy.
People and Communities
Industry-transforming solutions in aluminum manufacturing and recycling. A world made stronger and more sustainable in the process.
Working at Novelis
Careers at Novelis
Welcome News Releases Historic Financial Results SEC Filings Investor Alerts
Novelis / Investors & Media News Releases
Novelis Technology Achieves Breakthrough in Multi-Alloy Casting
Novelis FusionTM Technology Enables First Commercial Production of Multi-Alloy Aluminum Rolling Ingots
Additional information on Novelis Fusion can be found in the Technology section of our website.
ATLANTA, June 13, 2006 – Novelis Inc. (NYSE: NVL) (TSX: NVL), the global leader in aluminum rolled products, today unveiled Novelis FusionTM technology, a new process that simultaneously casts multiple alloy layers into a single aluminum rolling ingot. This marks the first time that any company has achieved the commercial production of multi-alloy aluminum ingots.
"This is a game-changing technology," said Brian Sturgell, president and chief executive officer of Novelis. "Engineers have tried for decades to cast multi-alloy ingots in a commercial environment. Novelis has now succeeded, demonstrating our ability to achieve — and commercialize — significant innovations that will enhance existing markets and permit development of new markets."
Novelis Fusion technology produces a high quality ingot with a core of one aluminum alloy, combined with one or more layers of different aluminum alloy(s). The ingot can then be rolled into a sheet product with different properties on the inside and the outside, allowing previously unattainable performance for flat rolled products and creating opportunity for new, premium applications.
Conventional single-alloy products require customers to choose an alloy based either on the required core properties such as strength, or the desired surface characteristics such as corrosion-resistance. Novelis Fusion technology can satisfy both needs in the same product.
"No longer will customers need to make trade-offs between core properties and surface properties in their aluminum sheet products," said Sturgell. "Now they can achieve the optimal combination of both. This technology positions Novelis to provide even greater support to our customers' success by helping them improve their current products and, more importantly, to develop a new generation of products with superior performance."
Previously, multi-alloy aluminum sheet products were achievable only through a low-tech, high-cost, manual ingot-cladding process and were limited to a small range of alloys. The new Novelis Fusion technology produces a perfect metallurgical bond between the alloy layers and permits alloy combinations never before possible in aluminum rolling. Novelis has filed patents on this technology in countries worldwide.
"Novelis Fusion technology adds a new level of flexibility on an industrial scale," said Thomas W. Eagar, Sc.D., professor of materials engineering and engineering systems at the Massachusetts Institute of Technology. "It is the most significant breakthrough in aluminum solidification since the introduction of direct chill casting in the 1930s."
The market potential for Novelis Fusion technology is with customers in industries such as automotive, architectural, building and construction, durable goods, electronics and transportation, to name a few. Examples of potential applications include:
Automotive sheet with both strength and improved formability to enable new design options.
Architectural applications with a superior surface finish and enhanced strength.
Household appliances with a variety of attractive finishes and better dent resistance.
Underground pipes with maximum corrosion resistance combined with high strength.
Rail cars with high load-carrying capacity and better wear resistance.
Electronics cases that are highly durable and provide a high-tech appearance.
Boat hulls with enhanced corrosion resistance without compromising strength.
Novelis Fusion entered into commercial production in March of this year at the company's rolling mill in Oswego, N.Y. Initial production capacity is 70,000 metric tons per year. Novelis has successfully cast hundreds of ingots of more than 50 different aluminum alloy combinations, and customer shipments of Novelis Fusion sheet products are under way.
"We are in the process of transferring the Novelis Fusion technology to production centers in both Europe and Asia," said Sturgell. "This is an expandable technology, and we will grow our production capacity as demand increases."
Novelis is the global leader in aluminum rolled products and aluminum can recycling. The Company operates in 11 countries and employs more than 13,000 people. Novelis has the unrivaled capability to provide its customers with a regional supply of technologically sophisticated rolled aluminum products throughout Asia, Europe, North America and South America. Through its advanced production capabilities, the Company supplies aluminum sheet and foil to the automotive and transportation, beverage and food packaging, construction and industrial, and printing markets. For more information, visit http://www.novelis.com.
Statements made in this news release which describe Novelis' intentions, expectations or predictions may be forward-looking statements within the meaning of securities laws. Novelis cautions that, by their nature, forward-looking statements involve risk and uncertainty and that Novelis' actual results could differ materially from those expressed or implied in such statements. Important factors which could cause such differences include, but are not limited to: competitive factors, ability to consistently meet quality standards of Novelis FusionTM technology in a commercial environment, ability to achieve the benefits described for multi-alloy sheet, ability to achieve market penetration in potential industries, uncertainties of potential litigation, achieving necessary patents on the Novelis Fusion technology, the Company's ability to meet Novelis Fusion sales forecasts, the Company's economic ability to install Novelis Fusion casting centers worldwide, the price of aluminum; global supply and demand conditions for Novelis Fusion products; demand and pricing within the principal markets for the Novelis Fusion products; changes in government regulations, particularly those affecting environmental, health or safety compliance associated with the Novelis Fusion; economic developments; relationships with (and financial or operating conditions of) customers and suppliers; competition from other aluminum rolled products producers as well as from substitute materials such as steel, glass, plastic and composite materials; the level of our indebtedness and ability to generate cash; and other factors relating to the Company's ongoing operations. The financial information provided in this news release was prepared by management and has not been audited. Reference should be made to Novelis' registration statement on Form S-4 filed with the Securities and Exchange Commission for a discussion of other major risk factors.
Charles Belbin	404-814-4260	charles.belbin@novelis.com
Investor contact: Holly K. Ash 404-814-4212 holly.ash@novelis.com
MSDS, Certifications and Reports
Not just aluminum, Novelis Aluminum.TM
Novelis is a subsidiary of Hindalco Industries Limited, an industry leader in aluminum and copper and metals flagship company of the Aditya Birla Group, a multinational conglomerate based in Mumbai, India.


text:
#ifndef RELAXATION_H
#define RELAXATION_H

#include "linalg.h"

/*
 * Perform one iteration of Gauss-Seidel relaxation on the linear
 * system Ax = b, where A is stored in CSR format and x and b
 * are column vectors.
 *
 * Parameters
 * ----------
 * Ap : array
 *     CSR row pointer
 * Aj : array
 *     CSR index array
 * Ax : array
 *     CSR data array
 * x : array, inplace
 *     approximate solution
 * b : array
 *     right hand side
 * row_start : int
 *     beginning of the sweep
 * row_stop : int
 *     end of the sweep (i.e. one past the last unknown)
 * row_step : int
 *     stride used during the sweep (may be negative)
 *
 * Returns
 * -------
 * Nothing, x will be modified inplace
 *
 * Notes
 * -----
 * The unknowns are swept through according to the slice defined
 * by row_start, row_end, and row_step.  These options are used
 * to implement standard forward and backward sweeps, or sweeping
 * only a subset of the unknowns.  A forward sweep is implemented
 * with gauss_seidel(Ap, Aj, Ax, x, b, 0, N, 1) where N is the
 * number of rows in matrix A.  Similarly, a backward sweep is
 * implemented with gauss_seidel(Ap, Aj, Ax, x, b, N, -1, -1).
 */
template<class I, class T, class F>
void gauss_seidel(const I Ap[], const int Ap_size,
                  const I Aj[], const int Aj_size,
                  const T Ax[], const int Ax_size,
                        T  x[], const int  x_size,
                  const T  b[], const int  b_size,
                  const I row_start,
                  const I row_stop,
                  const I row_step)
{
    for(I i = row_start; i != row_stop; i += row_step) {
        I start = Ap[i];
        I end   = Ap[i+1];
        T rsum = 0;
        T diag = 0;

        for(I jj = start; jj < end; jj++){
            I j = Aj[jj];
            if (i == j)
                diag  = Ax[jj];
            else
                rsum += Ax[jj]*x[j];
        }

        if (diag != (F) 0.0){
            x[i] = (b[i] - rsum)/diag;
        }
    }
}

/*
 * Perform one iteration of Gauss-Seidel relaxation on the linear
 * system Ax = b, where A is stored in Block CSR format and x and b
 * are column vectors.  This method applies point-wise relaxation
 * to the BSR as opposed to \"block relaxation\".
 *
 * Refer to gauss_seidel for additional information regarding
 * row_start, row_stop, and row_step.
 *
 * Parameters
 * ----------
 * Ap : array
 *     BSR row pointer
 * Aj : array
 *     BSR index array
 * Ax : array
 *     BSR data array
 * x : array, inplace
 *     approximate solution
 * b : array
 *     right hand side
 * row_start : int
 *     beginning of the sweep (block row index)
 * row_stop : int
 *     end of the sweep (i.e. one past the last unknown)
 * row_step : int
 *     stride used during the sweep (may be negative)
 * blocksize : int
 *     BSR blocksize (blocks must be square)
 *
 * Returns
 * -------
 * Nothing, x will be modified inplace
 *
 */
template<class I, class T, class F>
void bsr_gauss_seidel(const I Ap[], const int Ap_size,
                      const I Aj[], const int Aj_size,
                      const T Ax[], const int Ax_size,
                            T  x[], const int  x_size,
                      const T  b[], const int  b_size,
                      const I row_start,
                      const I row_stop,
                      const I row_step,
                      const I blocksize)
{
    I B2 = blocksize*blocksize;
    T *rsum = new T[blocksize];
    T *Axloc = new T[blocksize];
    //T zero = 0.0;

    // Determine if this is a forward, or backward sweep
    I step, step_start, step_end;
    if (row_step < 0){
        step = -1;
        step_start = blocksize-1;
        step_end = -1;
    }
    else{
        step = 1;
        step_start = 0;
        step_end = blocksize;
    }

    for(I i = row_start; i != row_stop; i += row_step) {
        I start = Ap[i];
        I end   = Ap[i+1];
        I diag_ptr = -1;

        // initialize rsum to b, then later subtract A*x
        for(I k = 0; k < blocksize; k++) {
            rsum[k] = b[i*blocksize+k]; }

        // loop over row i
        for(I jj = start; jj < end; jj++){
            // extract column entry
            I j = Aj[jj];
            // absolute column entry for the start of this block
            I col = j*blocksize;

            if (i == j){    //point to where in Ax the diagonal block starts
                diag_ptr = jj*B2; }
            else {
                // do a dense multiply of this block times x and accumulate in rsum
                gemm(&(Ax[jj*B2]),  blocksize, blocksize, 'F',
                     &(x[col]),     blocksize,   1,       'F',
                     &(Axloc[0]),   blocksize,   1,       'F',
                     'T');
                for(I m = 0; m < blocksize; m++) {
                    rsum[m] -= Axloc[m]; }
            }
        }

        // Carry out point-wise GS over the diagonal block,
        // all the other blocks have been factored into rsum.
        if (diag_ptr != -1) {
            for(I k = step_start; k != step_end; k+=step){
                T diag = 1.0;
                for(I kk = step_start; kk != step_end; kk+=step){
                    if(k == kk){
                        // diagonal entry
                        diag = Ax[k*blocksize + kk + diag_ptr]; }
                    else{
                        // off-diag entry
                        rsum[k] -= Ax[k*blocksize + kk + diag_ptr]*x[i*blocksize+kk]; }
                }
                if (diag != (F) 0.0){
                    x[i*blocksize+k] = rsum[k]/diag; }
            }
        }

    } // end outer-most for loop

    delete[] rsum;
    delete[] Axloc;
}// end function

/*
 * Perform one iteration of Jacobi relaxation on the linear
 * system Ax = b, where A is stored in CSR format and x and b
 * are column vectors.  Damping is controlled by the omega
 * parameter.
 *
 * Refer to gauss_seidel for additional information regarding
 * row_start, row_stop, and row_step.
 *
 * Parameters
 * ----------
 * Ap : array
 *     CSR row pointer
 * Aj : array
 *     CSR index array
 * Ax : array
 *     CSR data array
 * x : array, inplace
 *     approximate solution
 * b : array
 *     right hand side
 * temp, array
 *     temporary vector the same size as x
 * row_start : int
 *     beginning of the sweep
 * row_stop : int
 *     end of the sweep (i.e. one past the last unknown)
 * row_step : int
 *     stride used during the sweep (may be negative)
 * omega : float
 *     damping parameter
 *
 * Returns
 * -------
 * Nothing, x will be modified inplace
 *
 */
template<class I, class T, class F>
void jacobi(const I Ap[], const int Ap_size,
            const I Aj[], const int Aj_size,
            const T Ax[], const int Ax_size,
                  T  x[], const int  x_size,
            const T  b[], const int  b_size,
                  T temp[], const int temp_size,
            const I row_start,
            const I row_stop,
            const I row_step,
            const T omega[], const int omega_size)
{
    T one = 1.0;
    T omega2 = omega[0];

    for(I i = row_start; i != row_stop; i += row_step) {
        temp[i] = x[i];
    }

    for(I i = row_start; i != row_stop; i += row_step) {
        I start = Ap[i];
        I end   = Ap[i+1];
        T rsum = 0;
        T diag = 0;

        for(I jj = start; jj < end; jj++){
            I j = Aj[jj];
            if (i == j)
                diag  = Ax[jj];
            else
                rsum += Ax[jj]*temp[j];
        }

        if (diag != (F) 0.0){
            x[i] = (one - omega2) * temp[i] + omega2 * ((b[i] - rsum)/diag);
        }
    }
}

/*
 * Perform one iteration of Jacobi relaxation on the linear
 * system Ax = b, where A is stored in Block CSR format and x and b
 * are column vectors.  This method applies point-wise relaxation
 * to the BSR as opposed to \"block relaxation\".
 *
 * Refer to jacobi for additional information regarding
 * row_start, row_stop, and row_step.
 *
 * Parameters
 * ----------
 * Ap : array
 *     BSR row pointer
 * Aj : array
 *     BSR index array
 * Ax : array
 *     BSR data array
 * x : array, inplace
 *     approximate solution
 * b : array
 *     right hand side
 * temp : array, inplace
 *     temporary vector the same size as x
 * row_start : int
 *     beginning of the sweep (block row index)
 * row_stop : int
 *     end of the sweep (i.e. one past the last unknown)
 * row_step : int
 *     stride used during the sweep (may be negative)
 * blocksize : int
 *     BSR blocksize (blocks must be square)
 * omega : float
 *     damping parameter
 *
 * Returns
 * -------
 * Nothing, x will be modified inplace
 *
 */
template<class I, class T, class F>
void bsr_jacobi(const I Ap[], const int Ap_size,
                const I Aj[], const int Aj_size,
                const T Ax[], const int Ax_size,
                      T  x[], const int  x_size,
                const T  b[], const int  b_size,
                      T temp[], const int temp_size,
                const I row_start,
                const I row_stop,
                const I row_step,
                const I blocksize,
                const T omega[], const int omega_size)
{
    I B2 = blocksize*blocksize;
    T *rsum = new T[blocksize];
    T *Axloc = new T[blocksize];
    //T zero = 0.0;
    T one = 1.0;
    T omega2 = omega[0];

    // Determine if this is a forward, or backward sweep
    I step, step_start, step_end;
    if (row_step < 0){
        step = -1;
        step_start = blocksize-1;
        step_end = -1;
    }
    else{
        step = 1;
        step_start = 0;
        step_end = blocksize;
    }

    // copy x to temp
    for(I i = 0; i < abs(row_stop-row_start)*blocksize; i += step) {
        temp[i] = x[i];
    }

    for(I i = row_start; i != row_stop; i += row_step) {
        I start = Ap[i];
        I end   = Ap[i+1];
        I diag_ptr = -1;

        // initialize rsum to b, then later subtract A*x
        for(I k = 0; k < blocksize; k++) {
            rsum[k] = b[i*blocksize+k]; }

        // loop over row i
        for(I jj = start; jj < end; jj++){
            // extract column entry
            I j = Aj[jj];
            // absolute column entry for the start of this block
            I col = j*blocksize;

            if (i == j){    //point to where in Ax the diagonal block starts
                diag_ptr = jj*B2; }
            else {
                // do a dense multiply of this block times x and accumulate in rsum
                gemm(&(Ax[jj*B2]),  blocksize, blocksize, 'F',
                     &(temp[col]),  blocksize,   1,       'F',
                     &(Axloc[0]),   blocksize,   1,       'F',
                     'T');
                for(I m = 0; m < blocksize; m++) {
                    rsum[m] -= Axloc[m]; }
            }
        }

        // Carry out point-wise jacobi over the diagonal block,
        // all the other blocks have been factored into rsum.
        if (diag_ptr != -1) {
            for(I k = step_start; k != step_end; k+=step){
                T diag = 1.0;
                for(I kk = step_start; kk != step_end; kk+=step){
                    if(k == kk){
                        // diagonal entry
                        diag = Ax[k*blocksize + kk + diag_ptr]; }
                    else{
                        // off-diag entry
                        rsum[k] -= Ax[k*blocksize + kk + diag_ptr]*temp[i*blocksize+kk]; }
                }
                if (diag != (F) 0.0){
                    x[i*blocksize+k] = (one - omega2) * temp[i*blocksize+k] + omega2 * rsum[k]/diag; }
            }
        }

    } // end outer-most for loop

    delete[] rsum;
    delete[] Axloc;
}// end function

/*
 * Perform one iteration of Gauss-Seidel relaxation on the linear
 * system Ax = b, where A is stored in CSR format and x and b
 * are column vectors.
 *
 * Parameters
 * ----------
 * Ap : array
 *     CSR row pointer
 * Aj : array
 *     CSR index array
 * Ax : array
 *     CSR data array
 * x : array, inplace
 *     approximate solution
 * b : array
 *     right hand side
 * Id : array
 *     index array representing the
 * row_start : int
 *     beginning of the sweep (in array Id)
 * row_stop : int
 *     end of the sweep (in array Id)
 * row_step : int
 *     stride used during the sweep (may be negative)
 *
 * Returns
 * -------
 * Nothing, x will be modified inplace
 *
 * Notes
 * -----
 * Unlike gauss_seidel, which is restricted to updating a slice
 * of the unknowns (defined by row_start, row_start, and row_step),
 * this method updates unknowns according to the rows listed in
 * an index array.  This allows and arbitrary set of the unknowns
 * to be updated in an arbitrary order, as is necessary for the
 * relaxation steps in the Compatible Relaxation method.
 *
 * In this method the slice arguments are used to define the subset
 * of the index array Id which is to be considered.
 */
template<class I, class T, class F>
void gauss_seidel_indexed(const I Ap[], const int Ap_size,
                          const I Aj[], const int Aj_size,
                          const T Ax[], const int Ax_size,
                                T  x[], const int  x_size,
                          const T  b[], const int  b_size,
                          const I Id[], const int Id_size,
                          const I row_start,
                          const I row_stop,
                          const I row_step)
{
  for(I i = row_start; i != row_stop; i += row_step) {
    I inew = Id[i];
    I start = Ap[inew];
    I end   = Ap[inew+1];
    T rsum  = 0;
    T diag  = 0;

    for(I jj = start; jj < end; ++jj){
      I j = Aj[jj];
      if (inew == j){
        diag = Ax[jj];
      }
      else{
        rsum += Ax[jj]*x[j];
      }
    }

    if (diag != (F) 0.0){
      x[inew] = (b[inew] - rsum)/diag;
    }
  }
}

/*
 * Perform NE Jacobi on the linear system A x = b
 * This effectively carries out weighted-Jacobi on A A^T x = A^T b
 * (also known as Cimmino's relaxation)
 *
 * Parameters
 * ----------
 * Ap : array
 *     index pointer for CSR matrix A
 * Aj : array
 *     column indices for CSR matrix A
 * Ax : array
 *     value array for CSR matrix A
 * x : array, inplace
 *     current guess to the linear system
 * b : array
 *     right hand side
 * Tx : array
 *     scaled residual D_A^{-1} (b - Ax)
 * temp : array
 *     work space
 * row_start : int
 *     controls which rows to start on
 * row_stop : int
 *     controls which rows to stop on
 * row_step : int
 *     controls which rows to iterate over
 * omega : array
 *     size one array that contains the weighted-jacobi
 *     parameter.  An array must be used to pass in omega to
 *     account for the case where omega may be complex
 *
 * Returns
 * -------
 * x is modified inplace in an additive, not overwriting fashion
 *
 * Notes
 * -----
 * Primary calling routine is jacobi_ne in relaxation.py
 */
template<class I, class T, class F>
void jacobi_ne(const I Ap[], const int Ap_size,
               const I Aj[], const int Aj_size,
               const T Ax[], const int Ax_size,
                     T  x[], const int  x_size,
               const T  b[], const int  b_size,
               const T Tx[], const int Tx_size,
                     T temp[], const int temp_size,
               const I row_start,
               const I row_stop,
               const I row_step,
               const T omega[], const int omega_size)
{
    //rename
    const T * delta = Tx;
    const T omega2 = omega[0];

    for(I i = row_start; i < row_stop; i+=row_step)
    {   temp[i] = 0.0; }

    for(I i = row_start; i < row_stop; i+=row_step)
    {
        I start = Ap[i];
        I end   = Ap[i+1];
        for(I j = start; j < end; j++)
        {   temp[Aj[j]] += omega2*conjugate(Ax[j])*delta[i]; }
    }

    for(I i = row_start; i < row_stop; i+=row_step)
    {   x[i] += temp[i]; }
}

/*
 * Perform NE Gauss-Seidel on the linear system A x = b
 * This effectively carries out Gauss-Seidel on A A.H x = b
 *
 * Parameters
 * ----------
 * Ap : array
 *     index pointer for CSR matrix A
 * Aj : array
 *     column indices for CSR matrix A
 * Ax : array
 *     value array for CSR matrix A
 * x : array
 *     current guess to the linear system
 * b : array
 *     right hand side
 * Tx : array
 *     inverse(diag(A A.H))
 * omega : float
 *     relaxation parameter (if not 1.0, then algorithm becomes SOR)
 * row_start,stop,step : int
 *     controls which rows to iterate over
 *
 * Returns
 * -------
 * x is modified inplace in an additive, not overwriting fashion
 *
 * Notes
 * -----
 * Primary calling routine is gass_seidel_ne in relaxation.py
 */
template<class I, class T, class F>
void gauss_seidel_ne(const I Ap[], const int Ap_size,
                     const I Aj[], const int Aj_size,
                     const T Ax[], const int Ax_size,
                           T  x[], const int  x_size,
                     const T  b[], const int  b_size,
                     const I row_start,
                     const I row_stop,
                     const I row_step,
                     const T Tx[], const int Tx_size,
                     const F omega)
{
    //rename
    const T * D_inv = Tx;

    for(I i = row_start; i != row_stop; i+=row_step)
    {
        I start = Ap[i];
        I end   = Ap[i+1];

        //First calculate "delta", the scaled residual term
        T delta = 0.0;
        for(I j = start; j < end; j++)
        {   delta += Ax[j]*x[Aj[j]]; }
        delta = (b[i] - delta)*D_inv[i]*omega;

        for(I j = start; j < end; j++)
        {   x[Aj[j]] += conjugate(Ax[j])*delta; }
    }

}

/*
 * Perform NR Gauss-Seidel on the linear system A x = b
 * This effectively carries out Gauss-Seidel on A.H A x = A.H b
 *
 * Parameters
 * ----------
 * Ap : array
 *     index pointer for CSC matrix A
 * Aj : array
 *     row indices for CSC matrix A
 * Ax : array
 *     value array for CSC matrix A
 * x : array
 *     current guess to the linear system
 * z : array
 *     initial residual
 * Tx : array
 *     inverse(diag(A.H A))
 * omega : float
 *     relaxation parameter (if not 1.0, then algorithm becomes SOR)
 * col_start,stop,step : int
 *     controls which rows to iterate over
 *
 * Returns
 * -------
 * x is modified inplace in an additive, not overwriting fashion
 *
 * Notes
 * -----
 * Primary calling routine is gauss_seidel_nr in relaxation.py
 */
template<class I, class T, class F>
void gauss_seidel_nr(const I Ap[], const int Ap_size,
                     const I Aj[], const int Aj_size,
                     const T Ax[], const int Ax_size,
                           T  x[], const int  x_size,
                           T  z[], const int  z_size,
                     const I col_start,
                     const I col_stop,
                     const I col_step,
                     const T Tx[], const int Tx_size,
                     const F omega)
{
    //rename
    const T * D_inv = Tx;
    T * r = z;

    for(I i = col_start; i != col_stop; i+=col_step)
    {
        I start = Ap[i];
        I end   = Ap[i+1];

        // delta = < A e_i, r >
        T delta = 0.0;
        for(I j = start; j < end; j++)
        {   delta += conjugate(Ax[j])*r[Aj[j]]; }

        // delta /=  omega*(A.H A)_{ii}
        delta *= (D_inv[i]*omega);

        // update entry in x forcing < A.H b - A.H A x, e_i > = 0
        x[i] += delta;

        // r -= delta A e_i
        for(I j = start; j < end; j++)
        {   r[Aj[j]] -= delta*Ax[j]; }
    }

}

/*
 * Perform one iteration of block Jacobi relaxation on the linear
 * system Ax = b, where A is stored in BSR format and x and b
 * are column vectors.  Damping is controlled by the omega
 * parameter.
 *
 * Refer to gauss_seidel for additional information regarding
 * row_start, row_stop, and row_step.
 *
 * Parameters
 * ----------
 * Ap : array
 *     BSR row pointer
 * Aj : array
 *     BSR index array
 * Ax : array
 *     BSR data array, blocks assumed square
 * x : array, inplace
 *     approximate solution
 * b : array
 *     right hand side
 * Tx : array
 *     Inverse of each diagonal block of A stored
 *     as a (n/blocksize, blocksize, blocksize) array
 * temp : array
 *     temporary vector the same size as x
 * row_start : int
 *     beginning of the sweep
 * row_stop : int
 *     end of the sweep (i.e. one past the last unknown)
 * row_step : int
 *     stride used during the sweep (may be negative)
 * omega : float
 *     damping parameter
 * blocksize int
 *     dimension of sqare blocks in BSR matrix A
 */
template<class I, class T, class F>
void block_jacobi(const I Ap[], const int Ap_size,
                  const I Aj[], const int Aj_size,
                  const T Ax[], const int Ax_size,
                        T  x[], const int  x_size,
                  const T  b[], const int  b_size,
                  const T Tx[], const int Tx_size,
                        T temp[], const int temp_size,
                  const I row_start,
                  const I row_stop,
                  const I row_step,
                  const T omega[], const int omega_size,
                  const I blocksize)
{
    // Rename
    const T * Dinv = Tx;

    T one = 1.0;
    T zero = 0.0;
    T omega2 = omega[0];
    T *rsum = new T[blocksize];
    T *v = new T[blocksize];
    I blocksize_sq = blocksize*blocksize;

    // Copy x to temp vector
    for(I i = row_start*blocksize; i != row_stop*blocksize; i += row_step*blocksize) {
        std::copy(&(x[i]), &(x[i+blocksize]), &(temp[i]));
    }

    // Begin block Jacobi sweep
    for(I i = row_start; i != row_stop; i += row_step) {
        I start = Ap[i];
        I end   = Ap[i+1];
        std::fill(&(rsum[0]), &(rsum[blocksize]), zero);

        // Carry out a block dot product between block row i and x
        for(I jj = start; jj < end; jj++){
            I j = Aj[jj];
            if (i == j) {
                //diagonal, do nothing
                continue;
            }
            else {
                gemm(&(Ax[jj*blocksize_sq]), blocksize, blocksize, 'F',
                     &(temp[j*blocksize]),   blocksize, 1,         'F',
                     &(v[0]),                blocksize, 1,         'F',
                     'T');
                for(I k = 0; k < blocksize; k++) {
                    rsum[k] += v[k]; }
            }
        }

        // x[i*blocksize:(i+1)*blocksize] = (one - omega2) * temp[i*blocksize:(i+1)*blocksize] + omega2 *
        //          (Dinv[i*blocksize_sq : (i+1)*blocksize_sq]*(b[i*blocksize:(i+1)*blocksize] - rsum[0:blocksize]));
        I iblocksize = i*blocksize;
        for(I k = 0; k < blocksize; k++) {
            rsum[k] = b[iblocksize + k] - rsum[k]; }

        gemm(&(Dinv[i*blocksize_sq]), blocksize, blocksize, 'F',
             &(rsum[0]),              blocksize, 1,         'F',
             &(v[0]),                 blocksize, 1,         'F',
             'T');

        for(I k = 0; k < blocksize; k++) {
            x[iblocksize + k] = (one - omega2)*temp[iblocksize + k] + omega2*v[k]; }
    }

    delete[] v;
    delete[] rsum;
}

/*
 * Perform one iteration of block Gauss-Seidel relaxation on
 * the linear system Ax = b, where A is stored in BSR format
 * and x and b are column vectors.
 *
 * Refer to gauss_seidel for additional information regarding
 * row_start, row_stop, and row_step.
 *
 * Parameters
 * ----------
 * Ap : array
 *     BSR row pointer
 * Aj : array
 *     BSR index array
 * Ax : array
 *     BSR data array, blocks assumed square
 * x : array, inplace
 *     approximate solution
 * b : array
 *     right hand side
 * Tx : array
 *     Inverse of each diagonal block of A stored
 *     as a (n/blocksize, blocksize, blocksize) array
 * row_start : int
 *     beginning of the sweep
 * row_stop : int
 *     end of the sweep (i.e. one past the last unknown)
 * row_step : int
 *     stride used during the sweep (may be negative)
 * blocksize : int
 *     dimension of square blocks in BSR matrix A
 */
template<class I, class T, class F>
void block_gauss_seidel(const I Ap[], const int Ap_size,
                        const I Aj[], const int Aj_size,
                        const T Ax[], const int Ax_size,
                              T  x[], const int  x_size,
                        const T  b[], const int  b_size,
                        const T Tx[], const int Tx_size,
                        const I row_start,
                        const I row_stop,
                        const I row_step,
                        const I blocksize)
{
    // Rename
    const T * Dinv = Tx;

    T zero = 0.0;
    T *rsum = new T[blocksize];
    T *v = new T[blocksize];
    I blocksize_sq = blocksize*blocksize;

    // Begin block Gauss-Seidel sweep
    for(I i = row_start; i != row_stop; i += row_step) {
        I start = Ap[i];
        I end   = Ap[i+1];
        std::fill(&(rsum[0]), &(rsum[blocksize]), zero);

        // Carry out a block dot product between block row i and x
        for(I jj = start; jj < end; jj++){
            I j = Aj[jj];
            if (i == j) {
                //diagonal, do nothing
                continue;
            }
            else {
                gemm(&(Ax[jj*blocksize_sq]), blocksize, blocksize, 'F',
                     &(x[j*blocksize]),      blocksize, 1,         'F',
                     &(v[0]),                blocksize, 1,         'F',
                     'T');
                for(I k = 0; k < blocksize; k++) {
                    rsum[k] += v[k]; }
            }
        }

        // x[i*blocksize:(i+1)*blocksize] = (Dinv[i*blocksize_sq : (i+1)*blocksize_sq]*(b[i*blocksize:(i+1)*blocksize] - rsum[0:blocksize]));
        I iblocksize = i*blocksize;
        for(I k = 0; k < blocksize; k++) {
            rsum[k] = b[iblocksize + k] - rsum[k]; }

        gemm(&(Dinv[i*blocksize_sq]), blocksize, blocksize, 'F',
             &(rsum[0]),              blocksize, 1,         'F',
             &(x[iblocksize]),        blocksize, 1,         'F',
             'T');
    }

    delete[] v;
    delete[] rsum;
}

/*
 * Extract diagonal blocks from A and insert into a linear array.
 * This is a helper function for overlapping_schwarz_csr.
 *
 * Parameters
 * ----------
 * Ap : array
 *     CSR row pointer
 * Aj : array
 *     CSR index array
 *     must be sorted for each row
 * Ax : array
 *     CSR data array, blocks assumed square
 * Tx : array, inplace
 *     Inverse of each diagonal block of A, stored in row major
 * Tp : array
 *     Pointer array into Tx indicating where the
 *     diagonal blocks start and stop
 * Sj : array
 *     Indices of each subdomain
 *     must be sorted over each subdomain
 * Sp : array
 *     Pointer array indicating where each subdomain
 *     starts and stops
 * nsdomains : int
 *     Number of subdomains
 * nrows : int
 *     Number of rows
 *
 * Returns
 * -------
 * Nothing, Tx will be modified inplace
 */
template<class I, class T, class F>
void extract_subblocks(const I Ap[], const int Ap_size,
                       const I Aj[], const int Aj_size,
                       const T Ax[], const int Ax_size,
                             T Tx[], const int Tx_size,
                       const I Tp[], const int Tp_size,
                       const I Sj[], const int Sj_size,
                       const I Sp[], const int Sp_size,
                       const I nsdomains,
                       const I nrows)
{
    // Initialize Tx to zero
    T zero = 0.0;
    std::fill(&(Tx[0]), &(Tx[Tp[nsdomains]]), zero);

    // Loop over each subdomain
    for(I i = 0; i < nsdomains; i++) {
        // Calculate the smallest and largest column index for this
        // diagonal block
        I lower = Sj[Sp[i]];
        I upper = Sj[Sp[i+1]-1];

        I Tx_offset = Tp[i];
        I row_length = Sp[i+1] - Sp[i];

        // Loop over subdomain i
        for(I j = Sp[i]; j < Sp[i+1]; j++) {
            // Peel off this row from A and insert into Tx
            I row = Sj[j];
            I start = Ap[row];
            I end = Ap[row+1];
            I local_col = 0;
            I placeholder = Sp[i];

            for(I k = start; k < end; k++) {
                I col = Aj[k];

                // Must decide if col is a member of this subdomain, and while
                // doing so, track the current local column number from 0 to
                // row_length
                if ((col >= lower) && (col <= upper) ) {
                    while(placeholder < Sp[i+1]){
                        if(Sj[placeholder] == col) {
                            //insert into Tx
                            Tx[Tx_offset + local_col] = Ax[k];
                            local_col++;
                            placeholder++;
                            break;
                        }
                        else if (Sj[placeholder] > col ){
                            break;
                        }
                        else{
                            local_col++;
                            placeholder++;
                        }
                    }
                }
            }

            Tx_offset += row_length;
        }
    }
}

/*
 * Perform one iteration of an overlapping Schwarz relaxation on
 * the linear system Ax = b, where A is stored in CSR format
 * and x and b are column vectors.
 *
 * Refer to gauss_seidel for additional information regarding
 * row_start, row_stop, and row_step.
 *
 * Parameters
 * ----------
 * Ap : array
 *     CSR row pointer
 * Aj : array
 *     CSR index array
 * Ax : array
 *     CSR data array, blocks assumed square
 * x : array, inplace
 *     approximate solution
 * b : array
 *     right hand side
 * Tx : array
 *     Inverse of each diagonal block of A, stored in row major
 * Tp : array
 *     Pointer array into Tx indicating where the diagonal blocks start and stop
 * Sj : array
 *     Indices of each subdomain
 *     must be sorted over each subdomain
 * Sp : array
 *     Pointer array indicating where each subdomain starts and stops
 * nsdomains
 *     Number of subdomains
 * nrows
 *     Number of rows
 * row_start : int
 *     The subdomains are processed in this order,
 * row_stop : int
 *     for(i = row_start, i != row_stop, i+=row_step)
 * row_step : int
 *     {...computation...}
 *
 * Returns
 * -------
 * Nothing, x will be modified inplace
 *
 */
template<class I, class T, class F>
void overlapping_schwarz_csr(const I Ap[], const int Ap_size,
                             const I Aj[], const int Aj_size,
                             const T Ax[], const int Ax_size,
                                   T  x[], const int  x_size,
                             const T  b[], const int  b_size,
                             const T Tx[], const int Tx_size,
                             const I Tp[], const int Tp_size,
                             const I Sj[], const int Sj_size,
                             const I Sp[], const int Sp_size,
                                   I nsdomains,
                                   I nrows,
                                   I row_start,
                                   I row_stop,
                                   I row_step)
{

    //T zero = 0.0;
    T *rsum = new T[nrows];
    T *Dinv_rsum = new T[nrows];

    // Initialize rsum and Dinv_rsum
    for(I k = 0; k < nrows; k++) {
        rsum[k] = 0.0;
        Dinv_rsum[k] = 0.0;
    }

    // Begin loop over the subdomains
    for(I domptr = row_start; domptr != row_stop; domptr+=row_step) {

        I counter = 0;
        I size_domain = Sp[domptr+1] - Sp[domptr];

        // Begin block calculation of the residual
        for(I j = Sp[domptr]; j < Sp[domptr+1]; j++) {
            // For this row, calculate the residual
            I row = Sj[j];
            I start = Ap[row];
            I end   = Ap[row+1];
            for(I jj = start; jj < end; jj++){
                rsum[counter] -= Ax[jj]*x[Aj[jj]];
            }

            // Account for the RHS
            rsum[counter] += b[row];
            counter++;
        }

        // Multiply block residual with block inverse of A
        gemm(&(Tx[Tp[domptr]]), size_domain, size_domain, 'F',
             &(rsum[0]),      size_domain,   1,         'F',
             &(Dinv_rsum[0]), size_domain,   1,         'F',
             'F');

        // Add to x
        counter = 0;
        for(I j = Sp[domptr]; j < Sp[domptr+1]; j++) {
            x[Sj[j]] += Dinv_rsum[counter];
            counter++;
            }

        // Set rsum and Dinv_rsum back to zero for the next iteration
        for(I k = 0; k < size_domain; k++) {
            rsum[k] = 0.0;
            Dinv_rsum[k] = 0.0;
        }

    }

    delete[] rsum;
    delete[] Dinv_rsum;
}

#endif

redpajama_set_name: RedPajamaGithub


text:
Dietrich von Wissel (* im 14. Jahrhundert; † im 15. Jahrhundert) war Titularbischof in Athyra und Weihbischof in Münster.

Leben
Die Herkunft des Dietrich von Wissel ist nicht belegt. Er war Mönch im Dominikanerkloster Wesel und wurde 1369 zum Titularbischof in Athyra und Weihbischof in Münster ernannt. Er verlegte am 2. Oktober 1369 im Auftrag des Bischofs Florenz den Weihetag des Frauenklosters Marienborn in Coesfeld auf den Sonntag nach Mariä Geburt.
Dietrich blieb bis zum Jahre 1390 in seinen Ämtern
und soll 1408 in Wesel gestorben und dort im Chor der Dominikanerkirche bestattet worden sein.
Wennemar von Staden war sein Nachfolger.

Weihehandlungen
 25. September 1373 Altar der Kirche in Wolbeck
 8. Mai 1380 Kapelle mit Friedhof in Darfeld
 28. April 1381 Kapelle des Klosters Cappenberg

Quellen
Das Bistum Münster 7.4 (Germania Sacra NF 37.4) Die Bistümer der Kirchenprovinz Köln, Die Diözese, S. 12f, bearbeitet von Wilhelm Kohl, herausgegeben vom Max-Planck-Institut für Geschichte, Göttingen, Walter de Gruyter, Berlin/New York, ISBN 3-11-018010-3

Weblinks
 Dietrich von Wissel Personendatenbank bei Germania Sacra
 Von Wissel Personendatenbank bei Germania Sacra

Dominikanerbruder
Römisch-katholischer Bischof (14. Jahrhundert)
Weihbischof in Münster
Titularbischof
Deutscher
Geboren im 14. Jahrhundert
Gestorben im 15. Jahrhundert
Mann


text:
News never stops. Neither do we. Support NJ.com
Yankees' Hal Steinbrenner: Don't judge Aroldis Chapman yet
Published: Jan. 20, 2016, 8:09 p.m.
Brendan Kuty | NJ Advance Media for NJ.com
Don't judge Aroldis Chapman yet, Yankees owner Hal Steinbrenner said in a report from USA Today's Bob Nightengale.
From the report:
"In this country where allegations are brought against a person,'' Steinbrenner said in his first public comments on Chapman, "that person is completely innocent until proven otherwise. Not the other way around. I think we should keep that in mind right now.''
The Yankees acquired the controversial Chapman in December and have named baseball's hardest thrower their closer.
In October, he allegedly choked and punched his girlfriend in his Miami-area home before firing eight shots from a shotgun into the wall of his garage. Chapman has denied the allegations. The 27-year-old lefty hasn't faced criminal charges in relation to the incident.
Despite the absence of charges, Major League Baseball Commissioner Rob Manfred could still suspend Chapman under the league's new domestic abuse policy. The Yankees, however, reportedly aren't worried about a lengthy suspension for Chapman, considering charges haven't been filed against him.
MORE: Severino says he could be Yankees' ace
On Tuesday night, Yankees general manager Brian Cashman was asked whether he's received any indiction from MLB whether Chapman will be suspended.
"I think we've said everything publicly that needs to be said under those circumstances," Cashman said. "So I don't have anything more to add. There's a process that's playing out and it will still play out. and w'ell just wait for that to play out."
Brendan Kuty may be reached at bkuty@njadvancemedia.com. Follow him on Twitter @BrendanKutyNJ. Find NJ.com Yankees on Facebook.


This package of projects features a host of improvements in the five-mile corridor between the Pentagon and Pentagon City in Arlington County and the Braddock Road Metrorail station in the City of Alexandria. Improvements include an infill Metrorail station along the yellow and blue lines, high-quality bus transit services, and accommodations for pedestrians and cyclists. The project is jointly sponsored by Arlington County and the City of Alexandria in cooperation with the Washington Metropolitan Area Transit Authority (WMATA) and the Virginia Department of Rail and Public Transportation (DRPT).


text:
People with Crohn's disease or ulcerative colitis, the two most common inflammatory bowel diseases, complain of
abdominal pain and diarrhea and sometimes experience anemia, rectal bleeding, weight loss, or other symptoms. No definitive test exists for either disease, and patients endure two initial misdiagnoses on average, says R. Balfour Sartor, chief medical adviser to the Crohn's & Colitis Foundation of America. With Crohn's, he says, appendicitis, irritable bowel syndrome, an ulcer, or an infection is often wrongly suspected.
Both disorders may arise from a wayward immune system that leads the body to attack the gastrointestinal tract. Crohn's involves ulcers that may burrow deep into the tissue lining at any portion of the GI tract, leading to infection and thickening of the intestinal wall and blockages that need surgery. Ulcerative colitis, by contrast, afflicts only the colon and rectum, where it also causes ulcers; colitis is characterized by bleeding and pus.
Treating either disease requires beating back—and then continuously holding in check—the inappropriate inflammatory response. Both steps are achieved through some combination of prescription anti-inflammatories, steroids, and immunosuppressants. Crohn's patients may also be given antibiotics or other specialized drugs. Of current hot debate is whether Crohn's sufferers benefit if given highly potent drugs early in the course of treatment as opposed to escalating potency over time from milder initial treatments, as is traditionally done, explains Themos Dassopoulos, director of inflammatory bowel diseases at Washington University in St. Louis.
Surgery "cures" ulcerative colitis by removing the colon but means patients must wear a pouch—internally or externally—for waste. IBD patients should take special care when popping NSAIDs like aspirin, as these painkillers can trigger further gut inflammation in 10 to 20 percent of patients, says Dassopoulos.


This paper describes the development and application of a modified Grouping Genetic Algorithm (GGA) used to identify sets of optimal ambulance locations. The GGA was modified to consider a special case with only two groups, and the reproduction and mutation schemes were modified to operate more efficiently. It was applied to a case study locating ambulances from a fixed set of alternative locations. The sites were evaluated using data of emergency medical services (EMS) calls summarised over census areas and weighted by network distance. Census areas serviced by the same selected location defined ambulance catchments. The results indicated alternative sites for ambulances to be located, with average EMS response times improved by 1 minute 14 seconds and showed the impacts of having different numbers of ambulances in current locations and in new locations. The algorithmic developments associated with the modified GGA and the advantages of using census areas as spatial units to summarise data are discussed.


Laptops are great to get your work done while not being a slave to a desk, but one problem that they all have is that the volume is not very good. That's why you need to attach a speaker to your laptop. This SonaWAVE Desktop and Clip-On USB Stereo Speaker is a good solution.
The clip-on design mounts it directly to your laptop screen, out of your way and plugs into your USB port. You can use it with laptops, notebook, and netbooks and you get a 3 year manufacturer's warranty.
It is compatible with Macbook Pro, Air and most other laptops. Just $29.99 from Amazon.


This paper proposes a new method for frequency control in minigrids based entirely on renewables. A stable controller has been designed using well known control theory giving a stable and fast control. The frequency variation due to a load step has been compared with more conventional frequency control methods.


We take custom orders for pick up & delivery to the Greater Vancouver area.
please select from our offerings below, or contact us at the studio for more information.
We'd be happy to make you something beautiful!
Images shown of past work, each bouquet is seasonally unique and made to order.
Workshop: Summer Flowers, Summer nights!


text:
Jan. 27, 2014 / 2:52 PM
Royal Australian Navy accepts first two of 24 helicopters
CANBERRA, Australia, Jan. 27 (UPI) -- The first two of 24 Sikorsky MH-60R Seahawk Romeo maritime combat helicopters have been accepted in Florida by the Royal Australian Navy.
The aircraft, which are capable of firing air-launched torpedoes and Hellfire missiles, were accepted Friday by a squadron of Australia's Fleet Air Arm, NUSQN 725, at U.S. Naval Air Station Jacksonville.
"The MH-60R is a potent maritime combat helicopter that will primarily be used in the anti-submarine warfare role," said Cmdr. David Frost, commanding officer of NUSQN 725. "The MH-60R is a potent maritime combat helicopter that will primarily be used in the anti-submarine warfare role. The aircraft will also contribute to [the] navy's anti-surface warfare role by providing an air-to-surface missile capability."
The MH-R has a twin-turboshaft engine and is based on Sikorsky's UH-60 Black Hawk. It has a maximum speed of 168 miles per hour, a range of 4,450 nautical miles and a ceiling of 12,000 feet.
Australia's Department of Defense said five more MH-60Rs will be delivered to the navy this year.
David Frost
Women's World Cup: Team USA defeats Netherlands for second title


text:
Rethinkers
All Us Work Blog Jobs
Our StoryRethinkersFactsOur Process
Sarah has always had an admiration for graphic design and advertising. She made it to Rethink via a winding road, with her start in the workforce as a sandwich artist. On the way, Sarah acquired her multitasking ability from a combination of work experience, from dealing with pre-caffeinated people, selling gym memberships, and mastering the art of wrapping triangle- shaped cheeses.
After a couple of years in the customer service industry, she enrolled in BCIT's Graphic Communications program and went on to join the Rethink production team as an intern, then as a freelancer, and eventually became an official Rethinker.
During her career adventures, Sarah has developed a love for typography, coffee, cheese, and olives.
© Rethink Communications | Change language: Français


text:
El término pasionistas, plural de pasionista, puede hacer referencia al gentilicio de uno de los siguientes institutos o sociedades de la Iglesia católica:

 Congregación de la Pasión, religiosos pasionistas, congregación masculina clerical fundada en 1720 por Pablo de la Cruz en Monte Argentario (Italia);
 Hermanas Pasionistas de San Pablo de la Cruz, hermanas pasionistas, congregación femenina apostólica fundada en 1815 por María Magdalena Frescobaldi en Florencia (Italia);
 Hermanas de la Pasión de Nuestro Señor Jesucristo, pasionistas, congregación femenina apostólica fundada en 1918 por Josefa Hałacińska, en Varsovia (Polonia);
 Hermanas de la Santa Cruz y de la Pasión de Nuestro Señor Jesucristo, pasionistas, congregación femenina apostólica fundada en 1851 por Elizabeth Prout, en Mánchester (Reino Unido);
 Mínimas de la Pasión de Nuestro Señor Jesucristo, mínimas pasionistas, congregación femenina apostólica fundada en 1828 por Elena Aiello en Cosenza (Italia);
 Misioneras Seculares de la Pasión, pasionistas seculares, instituto secular femenino fundado en 1968 por Generoso Privitera en Catania (Italia)
 Religiosas de la Pasión de Jesucristo, monjas pasionistas, congregación femenina de clausura fundada en 1771 por Pablo de la Cruz y María Crucificada Costantini, en Corneto (Italia);
 Ursulinas del Santísimo Sacramento, ursulinas pasionistas, congregación femenina apostólica fundada en 1921 por María Di Gregorio en Castellamare del Golfo (Italia).


Exoskeletons MCQs, exoskeletons quiz answers to learn zoology online courses. Protection, support and movement multiple choice questions (MCQs), exoskeletons quiz questions and answers for online zoology degree. Ciliary and flagellar movement, integumentary system of vertebrates, skin of bony fishes, integumentary systems, integumentary system of invertebrates, exoskeletons test prep, career assessment test for zoology certifications.
Practice protection, support and movement test MCQs: secondary functions of exoskeleton are:, with choices sensation, secretion, support and protect, and vision and sight for online zoology degree. Prepare assessment test for scholarships, online learning exoskeletons quiz questions for competitive assessment of university majors.


Angul is a major industrial town along with Rourkela in Western Odisha. The sleepy quaint neighborhood transformed itself largely due to the presence of NALCO (National Aluminum Company) – who operates Asia's largest Aluminum plant there and ancillary industries. Angul serves as an important junction or gateway to Central & Western Odisha.
Before the industrial revolution that changed the landscape of Angul, historically Angul was a land of different tribes who commanded over small citadels. According to popular folklore, the name Angul is said to be derived from a local chieftain named "Anu" started a futile rebellion against the King. The local's referred to that period as Anugol (Anu's war), subsequently the name "Anugol" stuck and the town came to be known as "Angul" as we know it now.
Below is a visual treat of Angul. Enjoy the immersive experience and experience the 360 degree views and virtual tours which are soon going to enhance your visual journey!
Below is our low-down on the must try activities and experiences in and around Angul. Plan your stay to coincide with some of these events to get completely entrenched in the culture and heritage of Odisha. We assure you that the below list will leave you Odisha Amazed!
Nestled in the Malyagiri Mountain range of the Eastern Ghats. The glittering waterfall is located at a distance of 120 KM from Angul. It is ideal site for group picnic and relaxation. Sun set and sun rise is breath taking here.
Located in a village Sendhagram, Sarang, 28 KM from Angul. This huge natural sand stone art of Lord Vishnu in a sleeping position is the second largest idol of Lord Vishnu in India. It is believed to have been constructed around 8th -9th Century AD. This master piece by an unknown craftsman lies in open air along the banks of Brahmani River.
Located 90 KM from Angul in Athmalik district, Deulajhari is the ancient citadel of Shaivism. Deulajhari is a special natural phenomenon in the sense that the hot water spring originates from below a Shivalinga. Siddheswar Baba (Lord Shiva) is the presiding deity of Deulajhari. The main temple was built by the King Kishore Chandra Deo of Kadamba Dynasty in the year 1936. Subsequently the other temples came up in the area in due course of time.
Being an industrial town, Angul has good eating joints to suit your wallet. The city specializes in Indian cuisine and Chinese food. Besides the restaurants and hotels, the city has Dhaba on the outskirts which serve sumptuous food at an affordable price.
Wish to make the best of your trip to Angul ? Make sure your itinerary covers these below must-see destinations close to Angul.Most of these are highly coveted on every tourists bucket list and can be reached from Angul in a matter of hours. We have found 10 such places close to Angul that will maximize your Experience-Odisha!


text:
Q: How to suppress virtual methods in PHP? Let's say I have class Animal and Dog (Dog inherits from Animal). For each class I have a method (protected) foo with identical signature. Those methods should be regular methods, non-virtual ones. But since PHP makes all non-private methods virtual now I have a problem.
Before I start writing some workarounds maybe it could be solved in simpler ways. Namely:

*

*is it possible in PHP to mark a method as non-virtual?

*"sitting" inside given class (Animal or Dog) is it possible to call foo in context of current class, so virtual mechanism will not kick in?

A: You can mark a method as final:
class foo {
    final protected function bar() {} //can not be overriden
}

Or even mark a class as final:
final class foo { // can not be extended
    //...
}

You can use the self keyword in conjunction with a method call to call a method in the context of the current class:
class A {
    function aa() { echo 1; }
    function cc() { self::aa(); }
    function dd() { $this->aa(); }
}

class B extends A {
    function aa() { echo 2; }
    function bb() { self::aa(); }
}

$b = new B;
$b->bb(); //2 - the value from B::aa() - call from B's context
$b->cc(); //1 - the value from A::aa() - call from A's context
$b->dd(); //2 - the value from B::aa() - regular virtual call

redpajama_set_name: RedPajamaStackExchange


Posted in Arctic news, News, Uncategorized	| Comments Off on View the Arctic from the Healy!
Sea ice extent around Alaska changes from day to day. A useful AOOS application can help you track changes or see today's extent.


With the Halloween season getting closer, a lot of attention will be paid to the pumpkin. Yes, the thing we all carve and stick candles into, and the fruit we use to make delicious pies during the holiday season. However, why do a lot of us regulate pumpkin consumption to just these specific times?
Pumpkin has incredible health benefits – I'm going to give you five reasons why you should eat more pumpkin, and not just save it for the holidays!
Pumpkin flesh is rich in Vitamin A, Potassium, and Fiber, all of which are vital players in keeping your blood pressure in check. Potassium plays an important role in sodium regulation in the blood, and adequate intake of potassium can lead to decreased risk for hypertension.
Pumpkin is rich in beta-carotene – it's what gives the pumpkin it's signature orange color. Fortunately, beta-carotene has been shown in research to have an inverse association with developing colon cancer cells. What this means is that the beta-carotene in pumpkin acts as a reversal mechanism in the presence of colon cancer cells. How cool is that?
Like mentioned earlier, pumpkin is high in Vitamin C and beta-carotene. Along with the previous benefits talked about above, these two molecules provide a serious tag team defense for your immune system given their immense nutrient dense health immunities.
There are numerous women who have trouble with fertility in America, yet who knew that the pumpkin had the potential to help those women? According to a Harvard Study, women of child-birthing age who ate more iron from plants (such as pumpkin), were shown to have increased levels of fertility. Vitamin A also plays a key role in this as well because it helps regulate and stimulate lactation enzymes and hormone synthesis.
Rule of Thumb in nutrition: If a vegetable or fruit is orange or red, chances are it will help with eyesight. This goes back to the beta-carotene found in pumpkin. Along with Vitamin E (also found in pumpkin), the two team up to provide not only eyesight improvement, but also fight against eyesight degeneration.
What Are The Benefits of Cranberries?
We all know cranberries play an important role during the Thanksgiving feast, but how big of a role do cranberries play inside of our bodies? How healthy are they? Are they indeed, like some doctors like to call them, a "super food"? In short, yes.
Cranberries can help prevent Cardiovascular Disease!
been shown to reduce diseases, cancers, and the like. So how does this cranberry polyphenol work inside the body? Once digested, the polyphenols prevent the build up of platelets in the blood, as well as reducing overall blood pressure due to the fact that cranberries are natrual anti-inflammatories.
UTI's aren't fun, but you can treat them with cranberries!
powerful antioxidants in the body. PAC's role in the body is to remove dangerous free oxygen radicals from the cells.
So how do these guys help prevent urinary tract infections? PAC's do this by reducing the adhesion (sticking together) of certain types of bacteria that gather along the urinary tract walls, which then fights off infections and recurrent UTI's. Pretty impressive for a cranberry, right?
Cancer fighting is something cranberries are excellent at!
stimulate QR's (quinone reductase enzymes), and finally they trigger apoptosis–programmed cell death–which has shown to kill and eliminate tumor cells.
So, as you can see, cranberries do a lot more than you thought! Heck, they did a lot more than I thought before I dug into the research. So how can you use this information?
I write these articles so that not only are you using MealFit to make better dietary decisions in your life and for your family, but I like writing these articles to help the community of MealFit learn what actually goes on inside the body once these healthy foods are introduced.


text:
To contribute,

1. Fork this repository.
1. Work on your changes within a topic branch.
1. Create a pull request

Pull requests are accepted under the discretion of the Sugar Labs Admin Sudo maintainer(s).
Improve the chances your PR will be merged by following the requirements and guidelines below.
For any questions, please e-mail sugarlabs@sugarcrm.com.

**REQUIREMENTS**
- By creating a pull request, you are agreeing to [SugarCRM Open Source Contributor terms](CONTRIBUTOR_TERMS.pdf).

**GUIDELINES**
- Make sure your pull contains quality code. We will certainly provide constructive feedback on works in progress but we will not merge incomplete pull requests.
- Make sure your pull is fully documented. For Javascript, we use jsdoc.
- Reference related Github Issues within commit comments and pull request comment where appropriate.
- Squash out minor or "typo" commits in your pull using `git commit -a` or `git rebase -i`.

**BUGS**

File bugs or feature requests using Github Issue Tracker.

https://github.com/sugarcrmlabs/AdminSudo/issues


With a wealth of experience gained across multiple continents, PSL Europe has worked on projects from simple measurement through to Resource Planning, Software Implementation, Lean 6 Sigma, Value Re-Engineering, Kaizen, Kanban, 5S, VSM, FMEA, SMED, DMAIC, Time & Motion, PMTs and more.
We have helped organisations from all sectors, with an array of different issues. Whatever the problem, we will solve your productivity puzzle.
Find out more about exactly what gives us the confidence we can deliver.
See exactly the steps we will take with your organisation to improve your productivity.
Our ability to improve your productivity and save you money is guaranteed.


The sika deer (Cervus sika nippon) originate from Japan. The Mikado (Japanese emperor) offered the first sika deer to France in 1890. Since then, the French sika deer populations have increased a lot, and this species is now considered as a French hunting game species. The weight of this small deer species does not exceed 60kg. The sika deer is a beautiful animal, black during the winter and brown with white spots during the summer. During the rut, from September to October, it whistles almost like an elk. Its antlers have a lots of pearls, and rarely have more than eight branches. It the hunting park of Laplanque some sika deer have 10 to 12 branches.


text:
Іоан Малиновський (1661 — пізніше 1696) — українських художник зі Львова, син столяра Андрія Малиновського і Софії, охрещений у латинській катедрі у Львові 25 червня 1661 року. Із живописних робіт відомими є тільки «Єрусалим» та «Афонська гора», виконані 1696 року на замовлення економа синайського монастиря Хадзі Киріяка. Обидві картини створені у формі арок і виконували функцію декоративних деталей фасаду храму Успіння Пресвятої Богородиці у Львові. Зараз обидві картини перебувають у колекції Львівської національної галереї мистецтв імені Бориса Возницького в експозиції Олеського замку.

Роботи

Примітки

українські художники


Being a mom is the best, hardest, most interesting, most fun, and most maddening thing I've ever done. I have three wonderful boys and I always want to remember those beautiful moments of laughter and joy we've had together. I am lucky enough to have had some amazing portraits with my family over the years and they become more and more special as we grow older.
I think every woman deserves to have a glamorous portrait with her loving children where they all look at their best. That's why I decided to launch a very special project dedicated to all moms. I will be photographing and showcasing 30 mothers with their children capturing and celebrating the bond they have together. You might become one of them.
You will also get portraits of you alone, the kids alone and all other combinations you would like. I want to help you see what those who love you see when they look at you. I want you to have photographs that are a permanent reminder of just how gorgeous you are right now. I want your children and grandchildren to have beautiful photographs of you they can cherish for the lifetime. Read the conditions below to apply for participation in the project.
for your children when you are no longer here. Let them find BEAUTIFULLY PRINTED PHOTOGRAPHS that they will treasure and pass along to their children and their children's children?
I am opening call for new entries. Whether your children are girls or boys, little, teenage or adults you can enjoy a day just for you together, where you will star like someone who just stepped out of the magazine cover.
You will be prepared ahead of time with ideas for what to wear. Suggestions for facials, haircuts and manicure. You will have access to my luxury studio wardrobe of more than 60 dresses and I can help you source the dress of your dreams. My professional make-up artist will get you ready to star. While you are getting pampered you can enjoy a glass of champagne and get tips to take home regarding hair and makeup. The shoot is a fun experience where you get to pose in many different poses and outfits to music and possibly a snack if its a long shoot.
After some weeks you will be shown the best images from the shoot and can purchase what you love. As a gift with purchase you get one xtra print worth 295 Euro.
Each mom will be featured on social media at the end of the project with their before & after transformation and a short story about them. My aim is to show the love between moms and children and giving women an experience to rememeber with her children. Ultimately i want to empower every woman who steps in front of my camera with my photos making her more confident and happy about herself.
You could get all this for free…..
All I ask is that you pay the Hair and Make up fee of 160 Euros - 200 Euros depending on amount of participants.
. Please write in your application who you would love to be photographed with.
and free print with your purchase worth 295 Euros. To discover how to apply read the conditions below (scroll down).
2. Tag in the comments (under the call-for-participants) a woman you believe deserves a "Mother & Daughter/Son" experience and explain why. This can be YOU!
3. Fulfill the participate contact form and If selected you will get a phone call to set a date and get your ready for the shoot.


text:
Browsing: Plays
'You're a Good Man, Charlie Brown' (Snoopy): "Someday I'll get you, Red Baron!"
"Here's the World One I flying ace high over France in his Sopwith Camel, searching for the infamous Red Baron! "
'You're a Good Man, Charlie Brown' (Schroeder): "You're a very crabby person"
"I'm sorry to have to say it to your face, Lucy, but it's true."
'You're a Good Man, Charlie Brown' (Sally): "I got a 'C' on my coat hanger sculpture?"
"The squeaky wheel gets the grease!"
'You're a Good Man, Charlie Brown' (Peppermint Patty)
"Can't someone fall in love with a girl who isn't cute, and has freckles and a big nose?"
'You're a Good Man, Charlie Brown' (Charlie Brown)
"There's that cute little red-headed girl eating her lunch over there."
'You're a Good Man, Charlie Brown' (Lucy): "I intend to be a queen"
"When I grow up I'm going to be the biggest queen there ever was…"
'You're a Good Man, Charlie Brown' (Lucy): Failure
"Now, this is what you call a Failure Face, Linus."
'Shows for Days' (Irene): "I tell you, it's never one thing"
"It's always a whole pack of wolves that bring the fawn down."
'Shows for Days' (Irene): "I was a good wife till I couldn't stand it"
"This is destiny pissing on your leg. What do you wanna do about it?"
'Shows for Days' (Car): "How much of my time is spent in rehearsal rooms"
"I could barely hear her over the tap dancing."