Using Michael Wolverton's formulas, I've calculated the Pennants Added for all of the candidates on this year's ballot, as well as already elected HoMers.
I used both WARP3 and Win Shares (when possible) for hitters, just WARP3 for pitchers because Win Shares just have too many issues right now.
The Win Share rankings have some changes, now that I've added in Chris Cobb's NA Win Shares for the players he's calculated.
With WARP3, I made one modification, using a straight line adjust for the length of the schedule (to 162 games), instead of their formula of (162/scheduled games)^(2/3). This puts players from the 1870s and early 80s on a more equal footing.
The WARP1 numbers are adjusted for season length, but not league difficulty. At some point this week, I'll run a correlation using birthdate with pennants added. One way to tell the degree of the 'difficulty adjustment' (at least the age component) will be to check and see whether WARP3 or WARP1 correlates well with birthdate (another way would be the mid-point of the players career, adjusted for schedule length, but that would take awhile to figure). A weaker correlation would show more balance with regard to the year players were born, which is good in my opinion.
The numbers will be in the discussion link . . .
HoMers in bold on all lists. New eligibles in italics.
Position players, ranked by pennants added, using WARP3 (includes pitching).
Pitchers, ranked by Pennants added, using WARP3 (includes hitting and fielding).
Position players, ranked by pennants added, using Win Shares.
account for difficulty of league).
not account for difficulty of league).
Average pennant winners, average teams and standard deviations based on NL teams from 1876-1913.
I assume that the 6.5 WS per full season represents the Win Shares a "replacement level player" would have earned.
I don't trust these numbers. Spalding in particular looks way out, as he was the leading pitcher, nearly the ONLY pitcher, on FIVE pennant winners. If all pennants are equal, then his pennants added should be about 2.0, not 0.4. These numbers are not giving us what they purport to give us, IMHO.
Very interesting numbers. Just goes to add to my confusion of the correct ordering of Sutton, Glasscock, and Richardson. Using WARP-3 numbers gives you Glasscock, Richardson, Sutton. WS gives you Sutton, Glasscock, Richardson.
I am surprised that Mike Griffin does so well on both of the charts, and I will have to reconsider Whitney and McCormick, based on the pitching data.
Thanks for the data. Just got to figure out how to use it now!
Also, did you just throw your hand up trying to find pennants added for pitchers using Win Shares?
Spalding seems about right to me. They won 5 pennants, but with that All-star team, in that time-period, I think a Replacement level pitcher would have won 4 and possibly all 5 pennants. There is no disputing that he was the best pitcher of the era, just a dispute over how important pitching really was to teams then.
Joe, the non-Spalding pitchers in the pennant years went 23-9 (.719) which tends to validate your claim -- though one second place team, Philadelphia 1875, managed to do better at .726. But the 1877 Chicago team, minus Spalding and White but with everybody else, went 26-33 (.441) down from 52-14 (.788) in 1876. That suggests that Spalding and White together added .347 to the team's WP. I wouldn't be shocked at a Spalding calculation that gave only 1.2 or so penannts added, but if he was only 0.4 where did the other 4.6 pennants come from? -- there simply weren't enough good players on the team to account for the difference.
WARP3 doesn't like NA pitchers at all. I disagree with the extent, but I can see where they are coming from. Defense was definitely more important then.
On another note, WARP-3 seems to justify my high ranking of Charlie Bennett (0.86 pennants), but Win Shares does not (0.48 pennants). Can anyone think of any rationale for the big difference?
If someone wants to make a downward adjustment for the AA (in Joe's WS/Pennants Added calcs), I think they'll need Joe's spreadsheet. They'll need to discount the WS before running the pennants added formula, based on their own evaluation of what discount applies.
For instance, if you think AA gets a 10% discount, I'm not sure it works to discount Pennants Added by 10%. It might be too small or might be too large a discount to apply to the derived Pennants Added. We should probably discount the WS by the appropriate amount (10% in this example) and then run the Pennants Added calc, or better yet, discount the RC, then run the WS, then run Pennants Added (though that seems like a heck of a lot of trouble).
Also, I will again caution folks about applying Davenport's AA discount to WS or any other non-WARP3 measure. We don't know how the discounts are derived and there doesn't seem to be a single discount figure for particular years. Also, remember that Davenport discounts every other league and every other season, so it is all relative to whatever his base year is. For instance, if Davenport discounts 1882 AA by 30% (and I'm not saying he does), then he's probably discounting 1882 NL by 10-15%. So you can't use his discount for one league without factoring the discounts for the other leagues.
Joe, what did you finally use as Avg Pennant Winners Win Pct., StDev Pennant Winners Win Pct. and StDev Average Team Win Pct? I know it's different each year by a little bit, so maybe give me a single year after the leagues were established, like maybe 1890 or something. Just curious.
Also, did anyone figure out the "Peaks" formula? I couldn't make the math work when Tom H provided his version of the formula.
Where are these results posted?
That's odd. As soon as I posted that question, they appeared.
Where's Mike Tiernan on the WS version of the chart?
As a FOHS, I suppose I'll have to figure why the WS version of this is so much friendlier to Stovey than the WARP3 version.
Joe, I think that's an excellent description of the WARP process, much better than the cryptic notes available in Davenport's glossary on the BP site.
However, I also think that what you're describing there is the WARP-1 calculation. If you read those cryptic notes carefully, he says that those pitching/fielding adjustments are built into WARP-1. WARP-2 takes the WARP-1 numbers and adjusts them for league quality (NL better than contemporaneous AA; NL of the 1880's better than NA of decade before; etc.). WARP-3 then adjusts WARP-2 for season length, sort of, using that funny "2/3's" formula.
I made a previous post with various links to Davenport's glossary that I believe help make my case. I think the PRAR is most pertinent; it is part of the "Advanced Pitching Statistics" which are copied verbatim to calculate WARP-1 in the "Advanced Batting Statistics" (Sample player card) Also interesting are these additional links, Difficulty Adjustment and Pitching/Fielding Breakdown (they are also somewhat contradictory as to whether the breakdown is 50/50, 70/30, or 75/25).
A separate but related question here. Does anyone know if Davenport documents the slope of the 1947-2002 trend-line (see Difficulty Adjustment)? And if so, where? Or at least what the slope of the trend-line is?
I assume that the bottom chart (pitchers) should be WARP-1 rather than WARP-3.
I'd still like to be able to see how pitchers' Win Shares come out, even though we know there are problems with them.
Joe, thanks much for the WARP-1 calculations. Bobby Mathews is a surprise; I suspect Tommy Bond is an omission.
It looks like the "weakest" players selected by these metrics are: Buck Ewing (Win Shares), George Gore (WARP-1) and John Clarkson (WARP-3). None were hotly debated, their reputations remained intact.
Not to be greedy, but I think that the numbers posted here have been very useful (although I use them as much for my own purposes as for the use that Joe intends), and I am currently loathe to post even a preliminary ballot until I see where some of the new guys fall.
Joe, if you ever get some free time (it's in short supply for me too lately), it'd be nice to see Tommy Bond's WARP-1 numbers. Thanks.
I have been using 6.5 WS per season (full 162 game season) as my replacement level. Should it be higher? Or Lower? Any thoughts?
You don't have different replacement levels for each position? Better question: does WARP? The level for a catcher shouldn't be the same for a first baseman, IMO.
Assuming that, in general, "replacement player" means the level of play below which no player (on average) will ever be able to play in the majors, then I would say that replacement level should be based on the worst team ever.
The worst record for a modern team is the 1962 Mets (pending the end of the Tigers' season), and they went 40-120.
Assuming 120 Win Shares to go around, the average '62 Met earned 13 1/3 Win Shares per 162 (actually 160) games. (120/9).
Since Win Shares are calculated over the course of a season, the appropriate replacement should be the worst season ever. 6 1/2 is Cleevand Spiders level, which is too low (although it may not seem so in 1909). Cleveland was bad on purpose, as all of its best players were given to St. Louis, and many of those remaining were well below replacment level (the starting rotation was a combined -0.8 WARP).
Oops, forgot to divide that number by about 2/3, since about 1/3 goes to the pitcher.
Jimmy Ryan appears to be missing from the aWS pennants added list.
I don't see John Ward on the aWS list. Is this an oversight?
Does Van Haltren's Pennants Added according to WS include his pitching?
Tom, I know that Prospectus says their replacement level player is a replacement level hitter plus an average fielder, but Tangotiger disputes this in his interpretation. I definitely agree with your thoughts what dropping 2 WARP per season would do to the raw WARP rankings.
The Prospectus players WAR is, as best as I can tell, replacement level hitting + replacement level fielding.
Gary H at BP was quoted by a Primate as saying that they do replacement level hitting + average level fielding.
How about the 1985 Jose Oquendo? +38 runs above replacement hitting. +18 fielding runs above average. That's +56 runs above true replacement. Checks in with 9.3 WARP.
Duane Kuiper, 1978? +10 hitting runs above replacment, -37 fielding runs relative to average. +.5 WARP. Why? Only -6 fielding runs relative to replacement.
I have a biggeer issue with how the replacement level is set (annually, instead of by era, but that's another topic).
In fact, what you will find is that with those positions where the replacement level is like 30 runs below average, that this will get doubled to 60 runs below average. This is shown in the rather shocking totals from the nonshocking seasons of Kuiper and Oquendo above.
I will guess that in the above Kuiper example that he is actually -60 runs relative to average 2B, overall, yet, he comes in at close to zero to replacement.
The BP site is pretty clear (too me, I guess not to everyone else, including GH) that replacement is repl hitting + repl fielding + repl pitching. As there description points out, a team of this would give you the Spiders not the Mets (or Tigers). If you consider the Spiders to be a team of replacement level players (and not a team that is a mix of replacement and below replacement level) then there system is "right".
Warning: if too/to/two/there/their/they're problems drive you crazy, do not read post #58.
I have never screwed up lose/loose though.
I agree,it is clear what they are doing, and I said as much at the original Studies thread.
However, that replacement level (essentially 40 runs below average) is by far the lowest replacement level I have ever seen, and one which I would guess almost no one would agree with.
With all "do" respect ;-) can somebody give me an English language translation as to what this really means for WARP? Can the average person adjust it somehow to correct for these problems? Or is it just useless?
You would adjust it the same way Win Shares would be adjusted. WS has an even lower baseline. James just has the sense to not call it replacement level though. See the numerous posts discussing the WS adjustments. It looks like for a full time player, an adjustment to what some consider a more reasonable replacement level would be about 2 WARP. For less than full time, the adjustment would be proportionately less.
Personally, I happen to like a replacement level that scores the worst team of all time at ~0. It just seems right to me. YMMV.
Realistically, there is no such thing as "replacement level hitting" and "replacement level fielding". Replacement level is a total sum of the players value concept. I would prefer if BP gave us numbers that are Hitting above average postion, Fielding above average, and a replacement value for amount of playing time. Splitting the replacement value into hitting and fielding portions makes no sense (to me).
RobC, thanks. And not to sound too stupid here, but if the replacement level is too low (?) and we think it should be higher, then we would adjust a player's WARP score downward, right? Or did you say the replacement is too high? Then we would adjust the WARP upward. As you can see, I am still confused.
Also, there is a mention that middle infielders might be overrated and others not. This suggests that we cannot necessarily just apply a 2 WARP adjust across the board???
I've just sort of gotten comfortable that I understand WARP so if it is not reliable now is the time to find out!
As a general rule of thumb, subtract 2 wins / 162 GP for all position players, IF you think that a replacement level should be -2 wins relative to average.
What does -2 wins relative to average imply? This would make a team of all replacement level players worth -36 wins relative to average (or 45 wins). That is, 9 hitters x (-2) + 9 pitchers x (-2) = -36. If you believe a team of all replacement players would win 45 games, then subtract 2 wins / 162 GP.
To clarify, WARP sets the replacement level at essentially -4 wins for position players, and -2 wins for pitchers (that by itself should bother you), relative to average.
This works out to having a replacement team of players winning 27 games.
If you are fine with this, then use WARP as-is. Otherwise, WARP overstates hitters by 2 wins / 162.
Thanks Tango. 2003 was a great laboratory wasn't it? Somebody mentioned the Detroit Tigers above. Your option A (#65) is a team that is 2 wins better than the Tigers. It seems to me that the Tigers were basically a team of replacement players with 3-4 substantive exceptions--thus (what?) 5-7 games better than replacement? I realize this is a very gross method, but that suggests pure replacement at somewhere between 27 and 45. This is not to say 45 is wrong, but rather to say "it's in the ballpark." Is this logical? Are the Tigers a bunch of lab rats?
A bunch of "replacements" would probably be closer to say what an expansion team would give you, and not necessarily what the worst team you can probably have. Inside those Tigers is some good players, but also some players that no team would ever play, and the only reason they are playing is that the Tigers' mismanagement has no other options.
I think if you were to look at what say all expansion teams 1st year records were from 1961 to 1977, you'll probably find they averaged (and median) about 55 to 60 wins.
A replacement-level player is a player that a team that has average resources and average options would have this player as their bench player. This does not apply to the 03 Tigers and 62 Mets. There are probably a dozen players on these teams that other teams would never want at that point.
But, like I said, if you believe that 27 wins is what you want, that's fine. My warning is more to those who believe that replacement level is 45 wins, and think that's what they are getting with WARP.
You can't take a metric and fudge the numbers for the hitters so that they come out better than pitchers.
You have to start with a premise and let the metric carry you there.
You can very well make the case that the replacement level setting for pitchers should be 1.8 wins below average and for hitters it should be 2.7 win below average. But to say -2 and -4? I mean, just look at that Duane Kuiper 78 season, or that Tim Wallach 93 season.
Or look at that Oquendo season. 9 wins? Isn't that higher than Halladay and Hudsono and Prior this year?
Babe Ruth is credited with +376 fielding runs above replacement, when in my view, he should get +79 runs above average. He has +297 runs too much, or about +30 too many wins. His WARP1 is +242, and his Tango-WARP1 is about +212.
Ted Williams? WARP1 = +170, T_WARP = +142.
Walter Johnson? WARP1 = +205.
Willie Mays? WARP1 = +199, and T_WARP = +155.
Joe, if you will be revising, I would do as I described, and take the difference between FRAA and FRAR and divide by 10. That's the "overcompensation" factor. The "2 wins / season" is a generic rule of thumb.
Should I divide by 10 or by league R/G?
It wouldn't be league R/G because all of their runs (pitching, fielding, batting) have been normalized to an idealized 4.5 R/G league. Whether the constant is 10 or something else close to that, I'll leave that to those who have studied it more closely.
Based on the 4.5 R/G in jimd's post, you should divide by 9.
However, here is an interesting thought I had concerning the "double counting" of replacement. Hitters is repl hitting + repl fielding. Pitchers is repl pitching + repl hitting. Thus, pitchers are getting a "double counting" of replacement too.
Also, I believe you adjust WS by 6 or 6.5 per season as a replacement level and that was too even out with WARP. If you are now adjusting WARP by 2 wins per season, you would need to increase the WS adjustment.
There was a discussion at one time about WS replacement level and calculations were done to equate WS with WARP with regards to replacement level. Now, you are adjusting WARP to a "more reasonable" replacement level (this isnt just a fielding adjustment, it could have been applied to the hitting while leaving fielding alone - exact same effect). If, you chose the WS replacement level to match with WARP, then you need to readjust WS to match the "more reasonable" level.
If you use the .29 exponent in PythagaPat, the runs-per-win (RPW) converter for a 4.5 RPG league is 9.52. If you use .28, it's 9.73.
It's easy enough to figure, as you just figure the win% for a 4.51 RS and 4.49 RA, and work from there.
If you use the James' Pythag, the RPW is 9. James' Pythag is not accurate enough for these purposes.
When I look at empirical data, my RPW converter is 9.7 for a 4.5 RPG team.
Joe, I've now figured out WARP1-2-3, kinda like Lotus, right? But help me again with adjWARP1 and adjWARP3. What exactly are the adj? Thx.
Also I assume the adjWS is just to season length and including NA but not pre-NA??
Maybe I missed it, but do you have Kip Selbach's WARP1 pennants added?
Sorry, Selbach's WARP3 pennants added, I see WARP1.
Clay addressed the issue of replacement level on his Chat. I posted my thoughts on the matter at the above link.
For some 1890's pitching comparison, can we get WARP1 PA numbers for Ted Breitenstein and Pink Hawley? They will not get a vote from me, but their numbers might help the case for Griffith and McGinnity.
Tango's proposed remedy was to use FRAA. The problem with this is that it penalizes glove positions (SS, C, etc.) far more than it does bat positions (1B, LF, etc.). They accumulate more fielding runs over replacment in a given amount of playing time so they are losing more when FRAA is substituted. Mo would lose about 10 runs in a full season, Rey would lose about 20. The truth probably lies somewhere in between.
Unfortunately, I have no easy fix for that. Pre-WWII, batting time probably approximates playing time pretty well (wild guess on my part). Defensive substitutions will gum up those works; maybe the modern custom of retiring instead of accepting a reduced role will minimize the damage there for most HOM candidates.
WS has a built in replacement level of about .200.
The .200 level is only an offensive replacement level.
A team at the offensive zero-point (RS = .5*LgRS) with an average defense will be a .200 team.
A team at the defensive zero-point (RA = 1.5*LgRS) with an average offense will be a .308 team.
The radically different replacement levels IMO result in offense getting overrated when compared to defense.
The 50-50 split in WS is elegant and esthetically pleasing. But that doesn't mean that it's correct. There's no underlying theoretical reason that I can see for the hitting replacement level to be at .200 and defensive replacement level to be at .300. Some of Tango's old WS discussions talked about a 40-60 split (it's 61 or 62 for defense, I can't remember); if that's true then offensive WS are inflated by about 20% at the expense of pitching/fielding.
It's obvious that WARPs mistakes tend to overvalue the tough defensive positions, I believe that's why guy like McPhee, Wallace and Bennett do too well. So I don't think it's an issue to correct for them more.
I don't believe that's true; you're expecting WARP to echo the results from Win Shares.
Compared to Win Shares, WARP is a different opinion; which is closer to the "truth" is a matter for debate (see above on replacement level).
WARP ... gives about 2 extra wins a season too, though it's a little more for the glove men.
You may be right, but my gut feeling is that WARP's correction is not that high, or alternatively that the WS correction is too low. My Win Shares 19thC rankings was cluttered with long-career low-value journeymen like Elmer Smith and Tom Brown who did little but hang around just above WARP replacment level but accumulated Win Shares (over 300 season-adjusted apiece) but few HOM votes. They didn't make the WARP rankings either, I'm guessing because of the replacement level difference.
It isn't yet. It becomes one if we abandon the idea of using FRAA and instead begin trying to create an "overall replacement level penalty" that is proportional to playing time.
Short side question... I'm having trouble getting BP's numbers to add up.
Is WARP = BRARP + FRAR + PRAR or BRAR + FRAR + PRAR or something else?
Is there a link detailing their calcuations?
That's what Joe and I were debating (before the Primer site switch).
There used to be a link to sketchy documentation if you clicked on the column headings. It didn't tell all the details but it sometimes gave an overview, and at least usually gave an indication of what the stat was useful for. Last time I checked that had broken during Prospectus' site switch.
But I think that's just the sketchy stuff you were talking about.
BRARP + FRAR + PRAR looks like a double positional adjustment if you ask me... but that may be what they are doing. BRAR + FRAR would make more sense but thats also a double-replacement level. But, I would pick something like BRARP + FRAA for a single positional adjustment and single replacement.
Needless to say, you could find a flaw any way you slice it. Trying to boil everything down to one number will do that.
then just add 'em up. The interesting thing was that at a glance it looked like the offensive number was predominant because it was this big .2XX-.3XX number, and guess what, the player's final total rating was also somewhere in the .2XX-.3XX-maybe .4XX range, while those other numbers were all in the .0XX or even .00X range.
But on closer examination, the fact is that the defensive numbers ranged of -.050 to +.099 or a range of .150. The offensive numbers ranged around .300 but only from about .225 to .350, or a range of about .125. So in the end the defense was slightly more determinative (if that's a word) of the final rating and ranking.
Now back in '83 I thought that was funny, but for SSs I've come to believe it is right. Players get about 700 PAs in a year while SSs make as many as a 1000 plays (not so much anymore, granted). what is important of course is not the raw number of plays, but the variance. Take an offensive EqA against, what? As always, defense is hard to peg, with FAs pretty much useless. if you used FAs, of course, the range would be smaller than for an offense EqA. But factor in range, not just errors, and i would guess that the variation is greeater on defense, and therefore the defensive ratings are relatively more important toward the value of a SS.
this is perhaps more true then than now. But taking history as a whole, I think it is true. I haven't entirely put this theory to work, because if I had, Joe tinker would probably be on my ballot.
As for WARP, handle with care. And WS, handle with care. I even use TPR, but handle with extreme care.
For WARP, the base for it will be BRARP+FRAA+PRAR.
For WS, I'll adjust offense for the .200 replacement level if I can figure out a way. I like the .308 for pitching, so I'm fine with a .308 overall replacement level, it might be a little low, but if it's easier that could work.
Thoughts? I'll probably be setting up the spreadsheet this weekend - pending house-hunting - then it's a question of populating it with data . . .
Joe, What is the formula for pennants added?
Eric - just saw your note, but I don't have it handy (it's not easily memorizable). I won't be home until Wednesday morning, when I get back I'll write it in for you.
If you have a 2002 (I think) Baseball Prospectus, the article introducing the method has the formula.
Some use 'average'. Some use .300 OWP, or the Win Shares or WARP level, or WS minus X or WARP minus Y. We all agree that there is no 'right' answer, but in every case, we are using a linear scale above our indiviudal placement of 'replacement'.
I've come to believe that the scale should NOT be linear, at least at the bottom (below average), but rather should be a square-like function (curve bending upward).
Why? Well, we mostly agree that below-average play has SOME value. But it does not, one-for-one, have as much valie as above-average play, since in some circumstances the player could have been replaced by a better one, or platooned, or confined to part-time, pinch-hitting, -running, or playing defense. If he was a pithcer, he could have been moved into slop relief, where the payback (wins) per inning is less critical.
This is easily seen in sim games, where there is the quandry of drafting a 6th starting pitcher or 4th OFer of marginal quality (for injury protection), or picking up a 50 inning reliever or fragile hitter (Griffey). There still is value in a 4.50 ERA, but the difference is smaller from 4.5 to 5.0 than it was from 4.0 to 4.5; in other words, we would all take a one 4.0 guy and one 5.0 guy over two 4.5s, right?
'replacement level' play; ramping up to full credit for all play above average.
There is a lengthy discussion about replacement level, there.
An article was published in SABR's By The Numbers this week attempting to measure Pennants Added. You can see the article (pdf) at www.philbirnbaum.com, Feb 2005 issue, page 15. Dan Levitt is the author.
- two "5 wins above average (WAA)" seasons are worth 20% more in Pennants than five "two WAA" seasons.
- one "10 WAA" is worth 19% more pennants than two "5 WAAs".
Pennants Added : How does the thought-experiment work?
Does the player under assessment go to the 1896 Baltimore Orioles with probability approx. 1/220 (uniformly for all major league seasons from 1893) * 1/12 (uniformly to all teams in that league)?
If so then probability for 1996 Baltimore Orioles is approx 1/220 * 1/14, probability for 1956 Baltimore Orioles is approx 1/220 * 1/8, and so on. For every team-season, approximately 1/220 * 1/[size of league].
Or does the player go uniformly to a year? or to a club-season?
Then what? The 1896 Baltimore Orioles win the pennant with our player, but they won it without him ==> 0 pennants added. The 1996 Orioles win the division with any player worth > 4.0 wins above replacement, tie with a player worth 4.0, and lose with a player worth < 4.0 warp. ==> 1, 1/2, or 0 pennants added depending on player value. Is that the method?
Can you please subtract one from Tom Glavine's pennants added?
Hahah. I was there. It was atrocious. Absolutely embarrassing. Then again, the Mets did strand 8 baserunners in the first three innings. It's hard to only blame Glavine when the Mets only scored one run.
Yeah really. Glavine wasn't even hit all that hard from what I could see, it was just a nightmare (for him) that spiraled out of control.
Glavine wasn't even hit all that hard from what I could see, it was just a nightmare (for him) that spiraled out of control.
Payback for the NLCS last year when Glavine pitched poorly but didn't break. The game where Pujols said something about how the Card should have smacked him around, and everyone jumped Albert's sh*t for criticizing the veteran.
Do you subtract one of Pedro's pennants added or wait until Sunday/Monday night when the Mets are in or out of the playoff?
Today they will close down Shea Stadium in the last game of the season. The Mets are tied with the Brewers so I imagine it will be a bigger deal than the Yankees last weekend. It's all over the 'net.
I doubt they have anything on Tommy Agee.
Do we have a source with greater scope?
so the same must be true of within-timespan variation --variation in span 1871 to yyyy decreases as yyyy decreases.
IIUC that is more or less important to Pennants Added depending on the adjustments for standard deviation that are built into player-season value.
Paul I've calculated Pennants Added for every player season in DanR's WARP spreadsheet. I've actually put it into a MS Access Database. I will upload it tomorrow, I'm on my Mac right now, and don't have access (no pun intended) to the file right now . . .
Paul the file is 13 MB zipped, so I can't upload it to the site. And gmail can't accept files over 10 MB. Do you have an FTP site I can use or something?
YouSendIt.com provides free upload and download, limited to 7 days and 100MB, iirc. That is their loss leader. For me you send notice to pgw02472@yahoo.com although you may send to everyone on the HallofMerit elist.


The Hop Yard's Tasting Panel reconvenes once more. We add one member to the group and taste some of the new ciders you'll start seeing on the shelves.
More Oktoberfest beers arrived to The Hop Yard prompting our tasting panel to grab their journals and steins and get back to work.
Oktoberfest beers have arrived at The Hop Yard and we decided to sit down with several to compile some tasting notes. Fill up your steins, sip away, and read on. Prost!


text:
Top 10 fine arts and photography events of 2018 announced
Friday, 2018-12-28 11:41:59
A visitor admiring the photos on display at the first-ever nude photo exhibition in Hanoi in July
NDO – On December 27 The Department of Fine Arts, Photography and Exhibition under the Ministry of Culture, Sports and Tourism announced the top 10 events of the sector in 2018.
The top ten events are as follows:
1. Exhibition displays silk paintings and small-sized sculptures
The exhibition, opened in Hanoi on October 25, displayed more than 110 silk paintings and 93 small-sized sculptures.
The exhibits were created by 24 painters and 21 sculptors across country, those of the generations born in the 1970s until recently, who have gained certain success in the development of silk paintings and small-sized sculptures.
2. Former Indochina Fine Arts College's first female graduate work displayed
The Ho Chi Minh City Fine Arts Museum hosted an exhibition showcasing 27 silk paintings and photos by female painter Le Thi Luu (1911 – 1988), the first Vietnamese woman to graduate from Indochina Fine Arts College (now the Hanoi Fine Arts University).
All paintings, which were created from 1940 to 1988 when she lived and worked in France, were donated to the museum by Tan, Luu's nephew Le Tat Luyen and his wife Thuy Khue in Paris this year.
3. 120 Vietnamese and foreign artists attend Hanoi March Connecting
120 Vietnamese and foreign artists attend Hanoi March Connecting
120 artists from Vietnam and 18 other countries and territories took part in a series of art events as part of Hanoi March Connecting 2018, which was held in Hanoi from March 25 to April 4 by Asia Art Link and the Hanoi University of Industrial Fine Arts.
Initiated in 2016, the event serves as a rendezvous for lecturers and students of art schools in Vietnam, as well as international artists, to meet and exchange experiences.
4. Caricature contest responds to fight against corruption
A caricature exhibition themed "Preventing and combating corruption" was organised from November 22 to December 5 at the Vietnam Women's Museum.
The 158 works on display were selected from nearly 520 entries sent to the contest of the same name, which was launched in June by the Department of Fine Arts, Photography and Exhibition for both professional and amateur cartoonists.
5. Series of event spotlight 'Nghe' - Vietnamese traditional sacred animal
A series of activities were staged nationwide to spotlight 'Nghe' (a sacred and mythical animal in Vietnamese traditional culture).
The events aim to promote the unique features of the traditional art of Vietnam that has been preserved in the community for centuries. It also aims to raise awareness of the sacred symbol while comparing it with other sacred animals from China, Japan and Korea – countries with similar culture and religion to Vietnam.
6. Art space inaugurated inside National Assembly House
A contemporary art space was inaugurated in the basement of the National Assembly House in November (Photo: daibieunhandan.vn)
A contemporary art space was inaugurated in the basement of the National Assembly House in November, displaying 15 art works of 15 contemporary artists.
The artworks feature the artists' viewpoints on the country's cultural, architectural and art values set in the national long-standing history.
7. First-ever nude photo exhibition opens in Hanoi
A nude photo exhibition opened for public in Hanoi from July 20-27, marking the first-ever event of its kind to be hosted by a State-run agency, namely the Department of Fine Arts, Photography and Exhibition.
The exhibition, showcasing 52 artworks by 10 photographers, was designed to untie the knot of social prejudice against nude photographers and nude photography.
8. Contest launched on the theme of the homeland's seas and islands
Roughly 5,300 single photos and photo collections from 900 authors across the nation were sent to a contest on the theme of the homeland's seas and islands.
Over 200 high quality art works were exhibited at Hanoi's Temple of Literature, giving viewers a deep impression of the beautiful landscape, the beauty of the inhabitants, and the silent sacrifice of soldiers in protecting the country's sovereignty.
9. Seminar remembers the father of Vietnamese photography
A seminar was held in Thua Thien – Hue province in March to honour the father of Vietnamese photography Dang Huy Tru (1825-1874), who introduced photography to Vietnam some 150 years ago.
Speeches presented by researchers and members of Dang's family at the seminar shed light on the life and career of Dang Huy Tru as well as his contributions to the establishment and development of the country's photography.
10. Exhibition honours Ho Chi Minh and State Awards winners
Audiences look at a sculpture by Pham Quang Dao displayed at the exhibition. (Photo: VNA)
Dozens of works of art and literature by 13 artists, photographers and writers, who were winners of the Ho Chi Minh Prize and the State Prize in 2016, were on display in Hanoi in August.
The State and Ho Chi Minh prizes are the highest honours conferred by the Party and State to outstanding works of art and literature with profound meaning and high artistic value that serve the revolutionary cause and contribute to the development of literature and arts.
Photographer Ha Dao: A dream of contemporary photography (Dec 31, 2018 16:35:42)
Hai Duong kicks off tourism cultural festival to welcome New Year (Dec 31, 2018 12:31:58)
Dust (Dec 30, 2018 13:29:18)
Exhibition boasts the charm of Hanoi during flower seasons (Dec 29, 2018 12:12:49)
Hanoi announces its top 10 culture and sports event of 2018 (Dec 29, 2018 12:08:56)
Art programmes to be staged in Hanoi to celebrate New Year (Dec 28, 2018 11:41:10)
Exhibition marks 60th anniversary of President Kim II-Sung's visit to Vietnam (Dec 27, 2018 10:47:11)
Photo exhibition on Vietnam, China's beauty opens in Hanoi (Dec 27, 2018 10:10:01)
Exhibition introduces Da Lat's achievements throughout history (Dec 27, 2018 09:22:46)
Winners of literature contest for ages 20 announced (Dec 24, 2018 12:30:26)
30 gold prizes presented at 38th National Television Festival (Dec 23, 2018 14:41:46)
Little Dung (Dec 23, 2018 14:37:02)
Over 40 outstanding folk art works in 2018 honoured (Dec 22, 2018 17:27:53)
Flying Clef Quintet to perform in Hanoi (Dec 21, 2018 17:52:41)
Photo exhibition features lively TV programmes' behind-the-scenes moments (Dec 21, 2018 16:06:19)

redpajama_set_name: RedPajamaCommonCrawl


text:
Monodisperse-porous Mn5O8 microspheres a...
Monodisperse-porous Mn5O8 microspheres as an efficient catalyst for fast degradation of organic pollutants via peroxymonosulfate activation
Ozcan S., YILDIRIM D., ÇILDIROĞLU H. Ö., POLAT M., HAMALOĞLU K. Ö., Tosun R. B., ...More
NEW JOURNAL OF CHEMISTRY, vol.46, no.30, pp.14605-14615, 2022 (SCI-Expanded)
Doi Number: 10.1039/d2nj00778a
Journal Name: NEW JOURNAL OF CHEMISTRY
Journal Indexes: Science Citation Index Expanded (SCI-EXPANDED), Scopus, Academic Search Premier, Biotechnology Research Abstracts, Chemical Abstracts Core, Chimica, Compendex, EMBASE, DIALNET
Page Numbers: pp.14605-14615
Monodisperse-porous Mn5O8 microspheres with multiple oxidation states were used as an efficient heterogeneous catalyst for the fast degradation of organic pollutants via peroxymonosulfate (PMS) activation. The presence of Mn(ii), Mn(iii), and Mn(iv) phases on the surface of the microspheres was shown by X-ray photoelectron spectroscopy. For the degradation studies, methylene blue (MB) and tetracycline (TC) were selected as the model organic pollutants. The removal process included both adsorption and chemical degradation stages for both pollutants. By using the Mn5O8-PMS system, complete removal of MB was achieved and 70% of TC was removed in a degradation period of 5 min. The high surface area originating from the porous nature and the crystalline phase found in the microspheres should provide very short removal periods with the selected pollutants. No significant change was observed in the removal behavior in the pH range of 3.3-9.0. The highest first order-rate constants were obtained as 0.961 min(-1) and 0.570 min(-1) for MB and TC, respectively. These values were approximately up to 24-fold higher with respect to similar degradation systems. The degradation runs performed using radical scavengers with the Mn5O8-PMS system demonstrated the presence of superoxide anion (O-2*(-)) and singlet oxygen (O-1(2)) radicals. The degradation efficiency decreased to 99.3% with MB and 89.3% with TC over five consecutive degradation runs. Final Mn concentrations lower than 0.14 ppm obtained at the end of the degradation runs demonstrated that monodisperse-porous Mn5O8 microspheres were a highly stable oxidation catalyst for the fast degradation of organic pollutants in an aqueous medium.


text:
Siemens Digital Industries Software › › › Loughborough University
Academic NX Teamcenter
Loughborough University uses NX, Teamcenter and Learning Advantage to help develop skilled and employable engineering graduates
Loughborough, United Kingdom
Ninety-six percent employed or doing graduate work thanks to outstanding teaching and Siemens Digital Industries Software solutions
With an industry-leading application such as NX, we can teach the core principles of CAD, which students can apply to any system they are expected to use. Robb Doyle, University Teacher School of Mechanical and Manufacturing Engineering Loughborough University
Create academically challenging and industrially relevant degrees
Provide a stimulating engineering education environment
Meet the standards expected by professional bodies
I SEGRETI DEL SUCCESSO
Integrated CAD/CAM capability
Use of current software and hardware technology
Rich online resource for self-learning
Outstanding teaching practice
Offering a thriving industrial placement program
Working on projects set and supported by industry
Delivering skilled, self-motivated graduates that fit the needs of industry, with 96 percent of recent graduates either employed full-time or doing further academic study
Produced four Siemens Digital Industries Software Student Design winners in two years
Wolfson School of Mechanical and Manufacturing Engineering at Loughborough University in central England has a tradition of excellent teaching, with multinational industrial relationships underpinned by its international leadership in research and innovation.
www.lboro.ac.uk
NX is very intuitive, clean and easy to understand, and since this project I have continued to use it extensively both in realizing the final products in design projects, and in further visualization work. NX underpins a lot of the detail design and manufacturing finalization I carry out as part of my degree. William Fazackerley, Student Loughborough University
Partner Highlight
OnePLM Limited
OnePLM is the merger of Cutting Edge Solutions & Majenta PLM. We are a talented & friendly group of people based in the UK & Ireland. We provide Siemens DI software technology, technical consultancy and support services to manufacturing companies.
Launchpad for engineers of tomorrow
A degree from the Wolfson School of Mechanical and Manufacturing Engineering at Loughborough University opens the door to a fulfilling career. A survey conducted six months after students graduated in 2013 showed that 96 percent of those available for work were either employed full-time or pursuing further academic study. One of the factors behind this high percentage and a major benefit of attending Loughborough University is the opportunity to participate in a 12-month accredited industrial placement. For example, in the academic year 2013/2014, 142 undergraduate students spent one year of monitored, paid training with 91 United Kingdom and international companies.
The Wolfson School is a leader in mechanical and manufacturing engineering education, and is equipped with powerful computers, workshops, laboratories and a dedicated additive manufacturing center. With 1,200 undergraduate and postgraduate students supported by more than 130 academic, technical and administrative staff, it has a reputation for research and innovation as well as strong links to multinational businesses. Robb Doyle, university teacher in the School of Mechanical and Manufacturing Engineering, says "Our goal is to develop students into young engineers who have the skills to work effectively in industry."
Another key benefit for engineering students at Loughborough University is the chance to learn industry-standard applications by using software from product lifecycle management (PLM) specialist Siemens Digital Industries Software, such as computer-aided design (CAD) and PLM. The Wolfson School has 500 seats of NX™ software and 250 licenses of Teamcenter® software supported by OnePLM, a Siemens Digital Industries Software United Kingdom platinum partner.
Software in action
"We are longstanding users of NX, which we originally chose for its strength in manufacturing," continues Doyle. "Because of our focus on both design and manufacturing, we particularly wanted one interface that we could use throughout the development process. We also aim to give students transferable skills. With an industry-leading application such as NX, we can teach the core principles of CAD, which students can apply to any system they are expected to use."
New students learn how to use NX for modeling in the first semester. In the second semester, they are already working on their own projects, which they have to present using NX. In their second year, students begin to focus on stress analysis with NX CAE (for advanced simulation) coupled with NX CAM (for manufacturing) as they use the software to work on assigned designs. "The intention is to connect simulation with real-life testing so we get students to manufacture and test their own designs," says Doyle. "We find that this task really underlines the principles of engineering and is valuable preparation for industrial placements."
He notes that when students return to the university for their third year, they are much more mature and able to use NX for advanced surface modeling combined with manufacturing, thus consolidating their knowledge and skills.
"It is at this stage that we can meaningfully introduce Teamcenter via group work," says Doyle. "We know that we have the correct combination of academic and practical skills because of our industrial partnerships. Teaching is at its strongest in the industrially based projects carried out by groups of students in both the second-year and fourth-year masters programs. Here real-world problems are set, supervised and assessed by industry. Students cope well with solving these problems, and the solutions are frequently implemented by the supporting company."
A showcase for young designers
The high quality of output by students is demonstrated by the fact that, in 2013 and 2014, four first-year engineers won the Siemens Digital Industries Software Student Design Award, a monthly global competition. One of those was William Fazackerley, whose design for a Swiss Army® knife was featured in the Siemens Digital Industries Software Global Image Gallery 2014.
"NX is very intuitive, clean and easy to understand, and since this project I have continued to use it extensively both in realizing the final products in design projects, and in further visualization work," says Fazackerley. "NX underpins a lot of the detail design and manufacturing finalization I carry out as part of my degree."
Alston Cheung, who also won the competition, chose to design a Leatherman Wave® multi-tool. He noted, "During the process of producing the designs in NX, I learnt that attention to detail is crucial to producing a good image, whether modeling or visualizing. Also, a well-organized file naming and sorting system contributes to a smooth workflow. I would recommend NX to another student because it is very intuitive and easy to pick up."
Rob Hartley won the award in his first year for modeling and visualizing a product that would fit in a shoebox. He chose to design a clock.
"One challenge was freeform modeling of the stand for the clock as this had not been taught during tutorials, and learning how to do that has been especially useful," says Hartley. "I used features such as extruding, use of datum planes and mirroring bodies. I also used visualization features extensively, including material editing, advanced and image-based lighting and stage selection."
"It is my responsibility to ensure that students are getting the latest technology and to encourage the concept of selflearning, particularly as this is such good preparation for work in industry," comments Doyle. "Learning Advantage provided by Siemens Digital Industries Software helps to fulfill both these remits."
Learning Advantage is an online resource of interactive tutorials that students can refer to for click-by-click guidance. Loughborough University has 1,500 subscriptions and Learning Advantage is embedded in the curriculum. Every student workstation has two screens for efficient and effective learning: one for NX and one for Learning Advantage.
"NX is a comprehensive application, so we need good-quality training, and part of my job is to teach students how to use it," says Doyle. "If I were producing my own materials I would have to spend time updating them regularly, but the richness of Learning Advantage frees up my tutorial time to focus on challenging engineering problems. When I am teaching advanced CAD processes such as complex surfaces, I can teach the fundamentals, set learning objectives, recommend a specific menu within Learning Advantage and know that students can continue to practice outside of class."
A self-service menu
"I've found the Learning Advantage resources very helpful," comments Fazackerley. "We used them extensively in tutorials when learning the basics; they give good clarity to so much that NX has to offer. They're also very useful if you're struggling to model something, as it's almost certain that there will be a stepbystep guide and a tutorial in Learning Advantage that will give a much-needed push in the right direction."
Cheung adds, "I really like the fact that the interactive tutorials are broken down into relatively short sections, so I can pick and choose the ones that I think will be helpful to me. The step-by-step instructions give very clear guidance, making the procedures easy to understand. The pictures and screen captures used allow me to know if I've done something correctly or not, which I find is very important when learning new features."
"Learning Advantage was very helpful when I was first rendering and visualizing in NX," notes Hartley. "The ability to do detailed rendering in NX has helped a lot in projects since then. The step-by-step teaching of a process can be used alongside our own modeling processes, or as part of coursework."
Ready for the real world
Doyle notes, "NX provides a complete toolbox for design-to-manufacturing. It is an industry-standard application that enables students to develop advanced CAD skills and demonstrable employability."
Hartley is clear proof of this: "I would definitely recommend NX to another student. It has extremely wide capabilities and I find it easy and intuitive to use. I have recently learnt how to program tool paths and do simulations with it. Having knowledge in NX has helped me to secure an industrial placement next year, too."
Meno Maggiori informazioni
Learn more about academic


text:
c\BeginDoc
c
c\Name: pdseupd
c
c Message Passing Layer: MPI
c
c\Description:
c
c  This subroutine returns the converged approximations to eigenvalues
c  of A*z = lambda*B*z and (optionally):
c
c      (1) the corresponding approximate eigenvectors,
c
c      (2) an orthonormal (Lanczos) basis for the associated approximate
c          invariant subspace,
c
c      (3) Both.
c
c  There is negligible additional cost to obtain eigenvectors.  An orthonormal
c  (Lanczos) basis is always computed.  There is an additional storage cost
c  of n*nev if both are requested (in this case a separate array Z must be
c  supplied).
c
c  These quantities are obtained from the Lanczos factorization computed
c  by PSSAUPD for the linear operator OP prescribed by the MODE selection
c  (see IPARAM(7) in PSSAUPD documentation.)  PSSAUPD must be called before
c  this routine is called. These approximate eigenvalues and vectors are
c  commonly called Ritz values and Ritz vectors respectively.  They are
c  referred to as such in the comments that follow.   The computed orthonormal
c  basis for the invariant subspace corresponding to these Ritz values is
c  referred to as a Lanczos basis.
c
c  See documentation in the header of the subroutine PSSAUPD for a definition
c  of OP as well as other terms and the relation of computed Ritz values
c  and vectors of OP with respect to the given problem  A*z = lambda*B*z.
c
c  The approximate eigenvalues of the original problem are returned in
c  ascending algebraic order.  The user may elect to call this routine
c  once for each desired Ritz vector and store it peripherally if desired.
c  There is also the option of computing a selected set of these vectors
c  with a single call.
c
c\Usage:
c  call pdseupd
c     ( COMM, RVEC, HOWMNY, SELECT, D, Z, LDZ, SIGMA, BMAT, N, WHICH, NEV, TOL,
c       RESID, NCV, V, LDV, IPARAM, IPNTR, WORKD, WORKL, LWORKL, INFO )
c
c\Arguments
c  COMM    MPI  Communicator for the processor grid.  (INPUT)
c
c  RVEC    LOGICAL  (INPUT)
c          Specifies whether Ritz vectors corresponding to the Ritz value
c          approximations to the eigenproblem A*z = lambda*B*z are computed.
c
c             RVEC = .FALSE.     Compute Ritz values only.
c
c             RVEC = .TRUE.      Compute Ritz vectors.
c
c  HOWMNY  Character*1  (INPUT)
c          Specifies how many Ritz vectors are wanted and the form of Z
c          the matrix of Ritz vectors. See remark 1 below.
c          = 'A': compute NEV Ritz vectors;
c          = 'S': compute some of the Ritz vectors, specified
c                 by the logical array SELECT.
c
c  SELECT  Logical array of dimension NCV.  (INPUT/WORKSPACE)
c          If HOWMNY = 'S', SELECT specifies the Ritz vectors to be
c          computed. To select the Ritz vector corresponding to a
c          Ritz value D(j), SELECT(j) must be set to .TRUE..
c          If HOWMNY = 'A' , SELECT is used as workspace.
c
c  D       Double precision  array of dimension NEV.  (OUTPUT)
c          On exit, D contains the Ritz value approximations to the
c          eigenvalues of A*z = lambda*B*z. The values are returned
c          in ascending order. If IPARAM(7) = 3,4,5 then D represents
c          the Ritz values of OP computed by pdsaupd  transformed to
c          those of the original eigensystem A*z = lambda*B*z. If
c          IPARAM(7) = 1,2 then the Ritz values of OP are the same
c          as the those of A*z = lambda*B*z.
c
c  Z       Double precision  N by NEV array if HOWMNY = 'A'.  (OUTPUT)
c          On exit, Z contains the B-orthonormal Ritz vectors of the
c          eigensystem A*z = lambda*B*z corresponding to the Ritz
c          value approximations.
c          If  RVEC = .FALSE. then Z is not referenced.
c          NOTE: The array Z may be set equal to first NEV columns of the
c          Arnoldi/Lanczos basis array V computed by PSSAUPD.
c
c  LDZ     Integer.  (INPUT)
c          The leading dimension of the array Z.  If Ritz vectors are
c          desired, then  LDZ .ge.  max( 1, N ).  In any case,  LDZ .ge. 1.
c
c  SIGMA   Double precision   (INPUT)
c          If IPARAM(7) = 3,4,5 represents the shift. Not referenced if
c          IPARAM(7) = 1 or 2.
c
c
c  **** The remaining arguments MUST be the same as for the   ****
c  **** call to PDNAUPD  that was just completed.               ****
c
c  NOTE: The remaining arguments
c
c           BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, LDV, IPARAM, IPNTR,
c           WORKD, WORKL, LWORKL, INFO
c
c         must be passed directly to PSSEUPD following the last call
c         to PSSAUPD.  These arguments MUST NOT BE MODIFIED between
c         the the last call to PSSAUPD and the call to PSSEUPD.
c
c  Two of these parameters (WORKL, INFO) are also output parameters:
c
c  WORKL   Double precision  work array of length LWORKL.  (OUTPUT/WORKSPACE)
c          WORKL(1:4*ncv) contains information obtained in
c          PSSAUPD. They are not changed by PSSEUPD.
c          WORKL(4*ncv+1:ncv*ncv+8*ncv) holds the
c          untransformed Ritz values, the computed error estimates,
c          and the associated eigenvector matrix of H.
c
c          Note: IPNTR(8:10) contains the pointers into WORKL for addresses
c          of the above information computed by PSSEUPD.
c          -------------------------------------------------------------
c          IPNTR(8): pointer to the NCV RITZ values of the original system.
c          IPNTR(9): pointer to the NCV corresponding error bounds.
c          IPNTR(10): pointer to the NCV by NCV matrix of eigenvectors
c                     of the tridiagonal matrix T. Only referenced by
c                     PSSEUPD if RVEC = .TRUE. See Remarks.
c          -------------------------------------------------------------
c
c  INFO    Integer.  (OUTPUT)
c          Error flag on output.
c          =  0: Normal exit.
c          = -1: N must be positive.
c          = -2: NEV must be positive.
c          = -3: NCV must be greater than NEV and less than or equal to N.
c          = -5: WHICH must be one of 'LM', 'SM', 'LA', 'SA' or 'BE'.
c          = -6: BMAT must be one of 'I' or 'G'.
c          = -7: Length of private work WORKL array is not sufficient.
c          = -8: Error return from trid. eigenvalue calculation;
c                Information error from LAPACK routine dsteqr .
c          = -9: Starting vector is zero.
c          = -10: IPARAM(7) must be 1,2,3,4,5.
c          = -11: IPARAM(7) = 1 and BMAT = 'G' are incompatible.
c          = -12: NEV and WHICH = 'BE' are incompatible.
c          = -14: PSSAUPD did not find any eigenvalues to sufficient
c                 accuracy.
c          = -15: HOWMNY must be one of 'A' or 'S' if RVEC = .true.
c          = -16: HOWMNY = 'S' not yet implemented
c          = -17: DSEUPD  got a different count of the number of converged
c                 Ritz values than DSAUPD  got.  This indicates the user
c                 probably made an error in passing data from DSAUPD  to
c                 DSEUPD  or that the data was modified before entering
c                 DSEUPD .
c
c\BeginLib
c
c\References:
c  1. D.C. Sorensen, "Implicit Application of Polynomial Filters in
c     a k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992),
c     pp 357-385.
c  2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
c     Restarted Arnoldi Iteration", Rice University Technical Report
c     TR95-13, Department of Computational and Applied Mathematics.
c  3. B.N. Parlett, "The Symmetric Eigenvalue Problem". Prentice-Hall,
c     1980.
c  4. B.N. Parlett, B. Nour-Omid, "Towards a Black Box Lanczos Program",
c     Computer Physics Communications, 53 (1989), pp 169-179.
c  5. B. Nour-Omid, B.N. Parlett, T. Ericson, P.S. Jensen, "How to
c     Implement the Spectral Transformation", Math. Comp., 48 (1987),
c     pp 663-673.
c  6. R.G. Grimes, J.G. Lewis and H.D. Simon, "A Shifted Block Lanczos
c     Algorithm for Solving Sparse Symmetric Generalized Eigenproblems",
c     SIAM J. Matr. Anal. Apps.,  January (1993).
c  7. L. Reichel, W.B. Gragg, "Algorithm 686: FORTRAN Subroutines
c     for Updating the QR decomposition", ACM TOMS, December 1990,
c     Volume 16 Number 4, pp 369-377.
c
c\Remarks
c  1. The converged Ritz values are always returned in increasing
c     (algebraic) order.
c
c  2. Currently only HOWMNY = 'A' is implemented. It is included at this
c     stage for the user who wants to incorporate it.
c
c\Routines called:
c     dsesrt   ARPACK routine that sorts an array X, and applies the
c             corresponding permutation to a matrix A.
c     dsortr   dsortr   ARPACK sorting routine.
c     pdnorm2  Parallel ARPACK routine that computes the 2-norm of a vector.
c     pivout  Parallel ARPACK utility routine that prints integers.
c     pdvout   Parallel ARPACK utility routine that prints vectors.
c     dgeqr2   LAPACK routine that computes the QR factorization of
c             a matrix.
c     dlacpy   LAPACK matrix copy routine.
c     pdlamch  ScaLAPACK routine that determines machine constants.
c     dorm2r   LAPACK routine that applies an orthogonal matrix in
c             factored form.
c     dsteqr   LAPACK routine that computes eigenvalues and eigenvectors
c             of a tridiagonal matrix.
c     dger     Level 2 BLAS rank one update to a matrix.
c     dcopy    Level 1 BLAS that copies one vector to another .
c     dscal    Level 1 BLAS that scales a vector.
c     dswap    Level 1 BLAS that swaps the contents of two vectors.
c\Authors
c     Danny Sorensen               Phuong Vu
c     Richard Lehoucq              CRPC / Rice University
c     Chao Yang                    Houston, Texas
c     Dept. of Computational &
c     Applied Mathematics
c     Rice University
c     Houston, Texas
c
c\Parallel Modifications
c     Kristi Maschhoff
c
c\Revision history:
c     Starting Point: Serial Code FILE: seupd.F   SID: 2.4
c
c\SCCS Information:
c FILE: seupd.F   SID: 1.10   DATE OF SID: 04/10/01
c
c\EndLib
c
c-----------------------------------------------------------------------
      subroutine pdseupd
     &    (comm  , rvec  , howmny, select, d    ,
     &     z     , ldz   , sigma , bmat  , n    ,
     &     which , nev   , tol   , resid , ncv  ,
     &     v     , ldv   , iparam, ipntr , workd,
     &     workl , lworkl, info )
c
c     %--------------------%
c     | MPI  Communicator |
c     %--------------------%
c
      integer   comm
c
c     %----------------------------------------------------%
c     | Include files for debugging and timing information |
c     %----------------------------------------------------%
c
      include   'debug.h'
      include   'stat.h'
c
c     %------------------%
c     | Scalar Arguments |
c     %------------------%
c
      character  bmat, howmny, which*2
      logical    rvec
      integer    info, ldz, ldv, lworkl, n, ncv, nev
      Double precision
     &           sigma, tol
c
c     %-----------------%
c     | Array Arguments |
c     %-----------------%
c
      integer    iparam(7), ipntr(11)
      logical    select(ncv)
      Double precision
     &           d(nev), resid(n), v(ldv,ncv), z(ldz, nev),
     &           workd(2*n), workl(lworkl)
c
c     %------------%
c     | Parameters |
c     %------------%
c
      Double precision
     &           one, zero
      parameter (one = 1.0 , zero = 0.0 )
c
c     %---------------%
c     | Local Scalars |
c     %---------------%
c
      character  type*6
      integer    bounds , ierr   , ih    , ihb   , ihd   ,
     &           iq     , iw     , j     , k     , ldh   ,
     &           ldq    , mode   , msglvl, nconv , next  ,
     &           ritz   , irz    , ibd   , np    , ishift,
     &           leftptr, rghtptr, numcnv, jj
      Double precision
     &           bnorm2, rnorm, temp, temp1, eps23
      logical    reord
c
c     %----------------------%
c     | External Subroutines |
c     %----------------------%
c
      external   dcopy  , dger   , dgeqr2 , dlacpy , dorm2r , dscal ,
     &           dsesrt , dsteqr , dswap  , pdvout , pivout, dsortr
c
c     %--------------------%
c     | External Functions |
c     %--------------------%
c
      Double precision
     &           pdnorm2 , pdlamch
      external   pdnorm2 , pdlamch
c
c     %---------------------%
c     | Intrinsic Functions |
c     %---------------------%
c
      intrinsic    min
c
c     %-----------------------%
c     | Executable Statements |
c     %-----------------------%
c
c     %------------------------%
c     | Set default parameters |
c     %------------------------%
c
      msglvl = mseupd
      mode = iparam(7)
      nconv = iparam(5)
      info = 0
c
c     %--------------%
c     | Quick return |
c     %--------------%
c
      if (nconv .eq. 0) go to 9000
      ierr = 0
c
      if (nconv .le. 0)                        ierr = -14
      if (n .le. 0)                            ierr = -1
      if (nev .le. 0)                          ierr = -2
      if (ncv .le. nev)                        ierr = -3
      if (which .ne. 'LM' .and.
     &    which .ne. 'SM' .and.
     &    which .ne. 'LA' .and.
     &    which .ne. 'SA' .and.
     &    which .ne. 'BE')                     ierr = -5
      if (bmat .ne. 'I' .and. bmat .ne. 'G')   ierr = -6
      if ( (howmny .ne. 'A' .and.
     &           howmny .ne. 'P' .and.
     &           howmny .ne. 'S') .and. rvec )
     &                                         ierr = -15
      if (rvec .and. howmny .eq. 'S')           ierr = -16
c
      if (rvec .and. lworkl .lt. ncv**2+8*ncv) ierr = -7
c
      if (mode .eq. 1 .or. mode .eq. 2) then
         type = 'REGULR'
      else if (mode .eq. 3 ) then
         type = 'SHIFTI'
      else if (mode .eq. 4 ) then
         type = 'BUCKLE'
      else if (mode .eq. 5 ) then
         type = 'CAYLEY'
      else
                                               ierr = -10
      end if
      if (mode .eq. 1 .and. bmat .eq. 'G')     ierr = -11
      if (nev .eq. 1 .and. which .eq. 'BE')    ierr = -12
c
c     %------------%
c     | Error Exit |
c     %------------%
c
      if (ierr .ne. 0) then
         info = ierr
         go to 9000
      end if
c
c     %-------------------------------------------------------%
c     | Pointer into WORKL for address of H, RITZ, BOUNDS, Q  |
c     | etc... and the remaining workspace.                   |
c     | Also update pointer to be used on output.             |
c     | Memory is laid out as follows:                        |
c     | workl(1:2*ncv) := generated tridiagonal matrix H      |
c     |       The subdiagonal is stored in workl(2:ncv).      |
c     |       The dead spot is workl(1) but upon exiting      |
c     |       pdsaupd  stores the B-norm of the last residual  |
c     |       vector in workl(1). We use this !!!             |
c     | workl(2*ncv+1:2*ncv+ncv) := ritz values               |
c     |       The wanted values are in the first NCONV spots. |
c     | workl(3*ncv+1:3*ncv+ncv) := computed Ritz estimates   |
c     |       The wanted values are in the first NCONV spots. |
c     | NOTE: workl(1:4*ncv) is set by pdsaupd  and is not     |
c     |       modified by pdseupd .                            |
c     %-------------------------------------------------------%
c
c     %-------------------------------------------------------%
c     | The following is used and set by pdseupd .             |
c     | workl(4*ncv+1:4*ncv+ncv) := used as workspace during  |
c     |       computation of the eigenvectors of H. Stores    |
c     |       the diagonal of H. Upon EXIT contains the NCV   |
c     |       Ritz values of the original system. The first   |
c     |       NCONV spots have the wanted values. If MODE =   |
c     |       1 or 2 then will equal workl(2*ncv+1:3*ncv).    |
c     | workl(5*ncv+1:5*ncv+ncv) := used as workspace during  |
c     |       computation of the eigenvectors of H. Stores    |
c     |       the subdiagonal of H. Upon EXIT contains the    |
c     |       NCV corresponding Ritz estimates of the         |
c     |       original system. The first NCONV spots have the |
c     |       wanted values. If MODE = 1,2 then will equal    |
c     |       workl(3*ncv+1:4*ncv).                           |
c     | workl(6*ncv+1:6*ncv+ncv*ncv) := orthogonal Q that is  |
c     |       the eigenvector matrix for H as returned by     |
c     |       dsteqr . Not referenced if RVEC = .False.        |
c     |       Ordering follows that of workl(4*ncv+1:5*ncv)   |
c     | workl(6*ncv+ncv*ncv+1:6*ncv+ncv*ncv+2*ncv) :=         |
c     |       Workspace. Needed by dsteqr  and by pdseupd .    |
c     | GRAND total of NCV*(NCV+8) locations.                 |
c     %-------------------------------------------------------%
c
c
      ih     = ipntr(5)
      ritz   = ipntr(6)
      bounds = ipntr(7)
      ldh    = ncv
      ldq    = ncv
      ihd    = bounds + ldh
      ihb    = ihd    + ldh
      iq     = ihb    + ldh
      iw     = iq     + ldh*ncv
      next   = iw     + 2*ncv
      ipntr(4)  = next
      ipntr(8)  = ihd
      ipntr(9)  = ihb
      ipntr(10) = iq
c
c     %----------------------------------------%
c     | irz points to the Ritz values computed |
c     |     by _seigt before exiting _saup2.   |
c     | ibd points to the Ritz estimates       |
c     |     computed by _seigt before exiting  |
c     |     _saup2.                            |
c     %----------------------------------------%
c
      irz = ipntr(11)+ncv
      ibd = irz+ncv
c
c
c     %---------------------------------%
c     | Set machine dependent constant. |
c     %---------------------------------%
c
      eps23 = pdlamch (comm, 'Epsilon-Machine')
      eps23 = eps23**(2.0  / 3.0 )
c
c     %---------------------------------------%
c     | RNORM is B-norm of the RESID(1:N).    |
c     | BNORM2 is the 2 norm of B*RESID(1:N). |
c     | Upon exit of pdsaupd  WORKD(1:N) has   |
c     | B*RESID(1:N).                         |
c     %---------------------------------------%
c
      rnorm = workl(ih)
      if (bmat .eq. 'I') then
         bnorm2 = rnorm
      else if (bmat .eq. 'G') then
         bnorm2 = pdnorm2 (comm, n, workd, 1)
      end if
c
      if (msglvl .gt. 2) then
         call pdvout (comm, logfil, ncv, workl(irz), ndigit,
     &   '_seupd: Ritz values passed in from _SAUPD.')
         call pdvout (comm, logfil, ncv, workl(ibd), ndigit,
     &   '_seupd: Ritz estimates passed in from _SAUPD.')
      end if
      if (rvec) then
c
         reord = .false.
c
c        %---------------------------------------------------%
c        | Use the temporary bounds array to store indices   |
c        | These will be used to mark the select array later |
c        %---------------------------------------------------%
c
         do 10 j = 1,ncv
            workl(bounds+j-1) = j
            select(j) = .false.
   10    continue
c
c        %-------------------------------------%
c        | Select the wanted Ritz values.      |
c        | Sort the Ritz values so that the    |
c        | wanted ones appear at the tailing   |
c        | NEV positions of workl(irz).  Move  |
c        | the corresponding error estimates   |
c        | in workl(bound) accordingly.        |
c        %-------------------------------------%
c
         np     = ncv - nev
         ishift = 0
         call pdsgets (comm         , ishift, which     ,
     &                nev          , np    , workl(irz),
     &                workl(bounds), workl , workl(np+1))
c
         if (msglvl .gt. 2) then
            call pdvout (comm, logfil, ncv, workl(irz), ndigit,
     &      '_seupd: Ritz values after calling _SGETS.')
            call pdvout (comm, logfil, ncv, workl(bounds), ndigit,
     &      '_seupd: Ritz value indices after calling _SGETS.')
         end if
c
c        %-----------------------------------------------------%
c        | Record indices of the converged wanted Ritz values  |
c        | Mark the select array for possible reordering       |
c        %-----------------------------------------------------%
c
         numcnv = 0
         do 11 j = 1,ncv
            temp1 = max(eps23, abs(workl(irz+ncv-j)) )
            jj = workl(bounds + ncv - j)
            if (numcnv .lt. nconv .and.
     &          workl(ibd+jj-1) .le. tol*temp1) then
               select(jj) = .true.
               numcnv = numcnv + 1
               if (jj .gt. nev) reord = .true.
            endif
   11    continue
c
c        %-----------------------------------------------------------%
c        | Check the count (numcnv) of converged Ritz values with    |
c        | the number (nconv) reported by _saupd.  If these two      |
c        | are different then there has probably been an error       |
c        | caused by incorrect passing of the _saupd data.           |
c        %-----------------------------------------------------------%
c
         if (msglvl .gt. 2) then
             call pivout(comm, logfil, 1, numcnv, ndigit,
     &            '_neupd: Number of specified eigenvalues')
             call pivout(comm, logfil, 1, nconv, ndigit,
     &            '_neupd: Number of "converged" eigenvalues')
         end if
c
         if (numcnv .ne. nconv) then
            info = -17
            go to 9000
         end if
c
c        %-----------------------------------------------------------%
c        | Call LAPACK routine _steqr to compute the eigenvalues and |
c        | eigenvectors of the final symmetric tridiagonal matrix H. |
c        | Initialize the eigenvector matrix Q to the identity.      |
c        %-----------------------------------------------------------%
c
         call dcopy  (ncv-1, workl(ih+1)  , 1, workl(ihb), 1)
         call dcopy  (ncv  , workl(ih+ldh), 1, workl(ihd), 1)
c
         call dsteqr ('Identity', ncv      , workl(ihd),
     &               workl(ihb), workl(iq), ldq       ,
     &               workl(iw) , ierr)
c
         if (ierr .ne. 0) then
            info = -8
            go to 9000
         end if
c
         if (msglvl .gt. 1) then
            call dcopy  (ncv, workl(iq+ncv-1), ldq, workl(iw), 1)
            call pdvout  (comm, logfil, ncv, workl(ihd), ndigit,
     &          '_seupd: NCV Ritz values of the final H matrix')
            call pdvout  (comm, logfil, ncv, workl(iw), ndigit,
     &           '_seupd: last row of the eigenvector matrix for H')
         end if
c
         if (reord) then
c
c           %---------------------------------------------%
c           | Reordered the eigenvalues and eigenvectors  |
c           | computed by _steqr so that the "converged"  |
c           | eigenvalues appear in the first NCONV       |
c           | positions of workl(ihd), and the associated |
c           | eigenvectors appear in the first NCONV      |
c           | columns.                                    |
c           %---------------------------------------------%
c
            leftptr = 1
            rghtptr = ncv
c
            if (ncv .eq. 1) go to 30
c
 20         if (select(leftptr)) then
c
c              %-------------------------------------------%
c              | Search, from the left, for the first Ritz |
c              | value that has not converged.             |
c              %-------------------------------------------%
c
               leftptr = leftptr + 1
c
            else if (.not.select(rghtptr)) then
c
c              %----------------------------------------------%
c              | Search, from the right, the first Ritz value |
c              | that has converged.                          |
c              %----------------------------------------------%
c
               rghtptr = rghtptr - 1
c
            else
c
c              %----------------------------------------------%
c              | Swap the Ritz value on the left that has not |
c              | converged with the Ritz value on the right   |
c              | that has converged.  Swap the associated     |
c              | eigenvector of the tridiagonal matrix H as   |
c              | well.                                        |
c              %----------------------------------------------%
c
               temp = workl(ihd+leftptr-1)
               workl(ihd+leftptr-1) = workl(ihd+rghtptr-1)
               workl(ihd+rghtptr-1) = temp
               call dcopy (ncv, workl(iq+ncv*(leftptr-1)), 1,
     &                    workl(iw), 1)
               call dcopy (ncv, workl(iq+ncv*(rghtptr-1)), 1,
     &                    workl(iq+ncv*(leftptr-1)), 1)
               call dcopy (ncv, workl(iw), 1,
     &                    workl(iq+ncv*(rghtptr-1)), 1)
               leftptr = leftptr + 1
               rghtptr = rghtptr - 1
c
            end if
c
            if (leftptr .lt. rghtptr) go to 20
c
 30      end if
c
         if (msglvl .gt. 2) then
             call pdvout  (comm, logfil, ncv, workl(ihd), ndigit,
     &       '_seupd: The eigenvalues of H--reordered')
         end if
c
c        %----------------------------------------%
c        | Load the converged Ritz values into D. |
c        %----------------------------------------%
c
         call dcopy (nconv, workl(ihd), 1, d, 1)
c
      else
c
c        %-----------------------------------------------------%
c        | Ritz vectors not required. Load Ritz values into D. |
c        %-----------------------------------------------------%
c
         call dcopy (nconv, workl(ritz), 1, d, 1)
         call dcopy (ncv, workl(ritz), 1, workl(ihd), 1)
c
      end if
c
c     %------------------------------------------------------------------%
c     | Transform the Ritz values and possibly vectors and corresponding |
c     | Ritz estimates of OP to those of A*x=lambda*B*x. The Ritz values |
c     | (and corresponding data) are returned in ascending order.        |
c     %------------------------------------------------------------------%
c
      if (type .eq. 'REGULR') then
c
c        %---------------------------------------------------------%
c        | Ascending sort of wanted Ritz values, vectors and error |
c        | bounds. Not necessary if only Ritz values are desired.  |
c        %---------------------------------------------------------%
c
         if (rvec) then
            call dsesrt ('LA', rvec , nconv, d, ncv, workl(iq), ldq)
         else
            call dcopy (ncv, workl(bounds), 1, workl(ihb), 1)
         end if
c
      else
c
c        %-------------------------------------------------------------%
c        | *  Make a copy of all the Ritz values.                      |
c        | *  Transform the Ritz values back to the original system.   |
c        |    For TYPE = 'SHIFTI' the transformation is                |
c        |             lambda = 1/theta + sigma                        |
c        |    For TYPE = 'BUCKLE' the transformation is                |
c        |             lambda = sigma * theta / ( theta - 1 )          |
c        |    For TYPE = 'CAYLEY' the transformation is                |
c        |             lambda = sigma * (theta + 1) / (theta - 1 )     |
c        |    where the theta are the Ritz values returned by pdsaupd . |
c        | NOTES:                                                      |
c        | *The Ritz vectors are not affected by the transformation.   |
c        |  They are only reordered.                                   |
c        %-------------------------------------------------------------%
c
         call dcopy  (ncv, workl(ihd), 1, workl(iw), 1)
         if (type .eq. 'SHIFTI') then
            do 40 k=1, ncv
               workl(ihd+k-1) = one / workl(ihd+k-1) + sigma
  40        continue
         else if (type .eq. 'BUCKLE') then
            do 50 k=1, ncv
               workl(ihd+k-1) = sigma * workl(ihd+k-1) /
     &                          (workl(ihd+k-1) - one)
  50        continue
         else if (type .eq. 'CAYLEY') then
            do 60 k=1, ncv
               workl(ihd+k-1) = sigma * (workl(ihd+k-1) + one) /
     &                          (workl(ihd+k-1) - one)
  60        continue
         end if
c
c        %-------------------------------------------------------------%
c        | *  Store the wanted NCONV lambda values into D.             |
c        | *  Sort the NCONV wanted lambda in WORKL(IHD:IHD+NCONV-1)   |
c        |    into ascending order and apply sort to the NCONV theta   |
c        |    values in the transformed system. We will need this to   |
c        |    compute Ritz estimates in the original system.           |
c        | *  Finally sort the lambda`s into ascending order and apply |
c        |    to Ritz vectors if wanted. Else just sort lambda`s into  |
c        |    ascending order.                                         |
c        | NOTES:                                                      |
c        | *workl(iw:iw+ncv-1) contain the theta ordered so that they  |
c        |  match the ordering of the lambda. We`ll use them again for |
c        |  Ritz vector purification.                                  |
c        %-------------------------------------------------------------%
c
         call dcopy  (nconv, workl(ihd), 1, d, 1)
         call dsortr ('LA', .true., nconv, workl(ihd), workl(iw))
         if (rvec) then
            call dsesrt ('LA', rvec , nconv, d, ncv, workl(iq), ldq)
         else
            call dcopy (ncv, workl(bounds), 1, workl(ihb), 1)
            call dscal (ncv, bnorm2/rnorm, workl(ihb), 1)
            call dsortr ('LA', .true., nconv, d, workl(ihb))
         end if
c
      end if
c
c     %------------------------------------------------%
c     | Compute the Ritz vectors. Transform the wanted |
c     | eigenvectors of the symmetric tridiagonal H by |
c     | the Lanczos basis matrix V.                    |
c     %------------------------------------------------%
c
      if (rvec .and. howmny .eq. 'A') then
c
c        %----------------------------------------------------------%
c        | Compute the QR factorization of the matrix representing  |
c        | the wanted invariant subspace located in the first NCONV |
c        | columns of workl(iq,ldq).                                |
c        %----------------------------------------------------------%
c
         call dgeqr2 (ncv, nconv        , workl(iq) ,
     &               ldq, workl(iw+ncv), workl(ihb),
     &               ierr)
c
c        %--------------------------------------------------------%
c        | * Postmultiply V by Q.                                 |
c        | * Copy the first NCONV columns of VQ into Z.           |
c        | The N by NCONV matrix Z is now a matrix representation |
c        | of the approximate invariant subspace associated with  |
c        | the Ritz values in workl(ihd).                         |
c        %--------------------------------------------------------%
c
         call dorm2r ('Right'      , 'Notranspose', n        ,
     &                ncv          , nconv        , workl(iq),
     &                ldq          , workl(iw+ncv), v        ,
     &                ldv          , workd(n+1)   , ierr     )
         call dlacpy ('All', n, nconv, v, ldv, z, ldz)
c
c        %-----------------------------------------------------%
c        | In order to compute the Ritz estimates for the Ritz |
c        | values in both systems, need the last row of the    |
c        | eigenvector matrix. Remember, it`s in factored form |
c        %-----------------------------------------------------%
c
         do 65 j = 1, ncv-1
            workl(ihb+j-1) = zero
  65     continue
         workl(ihb+ncv-1) = one
         call dorm2r ('Left', 'Transpose'  , ncv       ,
     &                1     , nconv        , workl(iq) ,
     &                ldq   , workl(iw+ncv), workl(ihb),
     &                ncv   , temp         , ierr      )
c
      else if (rvec .and. howmny .eq. 'S') then
c
c     Not yet implemented. See remark 2 above.
c
      end if
c
      if (type .eq. 'REGULR' .and. rvec) then
c
            do 70 j=1, ncv
               workl(ihb+j-1) = rnorm * abs( workl(ihb+j-1) )
 70         continue
c
      else if (type .ne. 'REGULR' .and. rvec) then
c
c        %-------------------------------------------------%
c        | *  Determine Ritz estimates of the theta.       |
c        |    If RVEC = .true. then compute Ritz estimates |
c        |               of the theta.                     |
c        |    If RVEC = .false. then copy Ritz estimates   |
c        |              as computed by pdsaupd .            |
c        | *  Determine Ritz estimates of the lambda.      |
c        %-------------------------------------------------%
c
         call dscal  (ncv, bnorm2, workl(ihb), 1)
         if (type .eq. 'SHIFTI') then
c
            do 80 k=1, ncv
               workl(ihb+k-1) = abs( workl(ihb+k-1) )
     &                        / workl(iw+k-1)**2
 80         continue
c
         else if (type .eq. 'BUCKLE') then
c
            do 90 k=1, ncv
               workl(ihb+k-1) = sigma * abs( workl(ihb+k-1) )
     &                        / ( workl(iw+k-1)-one )**2
 90         continue
c
         else if (type .eq. 'CAYLEY') then
c
            do 100 k=1, ncv
               workl(ihb+k-1) = abs( workl(ihb+k-1)
     &                        / workl(iw+k-1)*(workl(iw+k-1)-one) )
 100        continue
c
         end if
c
      end if
c
      if (type .ne. 'REGULR' .and. msglvl .gt. 1) then
         call pdvout  (comm, logfil, nconv, d, ndigit,
     &          '_seupd: Untransformed converged Ritz values')
         call pdvout  (comm, logfil, nconv, workl(ihb), ndigit,
     &     '_seupd: Ritz estimates of the untransformed Ritz values')
      else if (msglvl .gt. 1) then
         call pdvout  (comm, logfil, nconv, d, ndigit,
     &          '_seupd: Converged Ritz values')
         call pdvout  (comm, logfil, nconv, workl(ihb), ndigit,
     &     '_seupd: Associated Ritz estimates')
      end if
c
c     %-------------------------------------------------%
c     | Ritz vector purification step. Formally perform |
c     | one of inverse subspace iteration. Only used    |
c     | for MODE = 3,4,5. See reference 7               |
c     %-------------------------------------------------%
c
      if (rvec .and. (type .eq. 'SHIFTI' .or. type .eq. 'CAYLEY')) then
c
         do 110 k=0, nconv-1
            workl(iw+k) = workl(iq+k*ldq+ncv-1)
     &                  / workl(iw+k)
 110     continue
c
      else if (rvec .and. type .eq. 'BUCKLE') then
c
         do 120 k=0, nconv-1
            workl(iw+k) = workl(iq+k*ldq+ncv-1)
     &                  / (workl(iw+k)-one)
 120     continue
c
      end if
c
      if (type .ne. 'REGULR')
     &   call dger (n, nconv, one, resid, 1, workl(iw), 1, z, ldz)
c
 9000 continue
c
      return
c
c     %----------------%
c     | End of pdseupd  |
c     %----------------%
c
      end

redpajama_set_name: RedPajamaGithub


ISER cordially invite you to attend the World Conference on Systems Engineering Research slated on 26th May`2019 at Abeokuta . We welcome all scientists, scholars, students, industrialists to attend and explore their knowledge in the field of World Conference on Systems Engineering Research.
This conference is an amalgamation of industrialists, academia where they can gear up knowledge in the field of bacteriology. Our gratitude towards people who are concerned about World Conference on Systems Engineering Research and we cordially invite them to gear up and make the congress a unforgettable successful event.
World Conference on Systems Engineering Research will permit the exchange of ideas, knowledge between the different disciplines for facilitating research, interdisciplinary collaborations focusing World Conference on Systems Engineering Research. World Conference on Systems Engineering Research is intended to provide a special platform for professionals, academicians, researchers and students working in the arena to deliberately exchange opinions and their understandings in front of large transnational listeners.
World Conference on Systems Engineering Research focuses more on recent advancements in the field of World Conference on Systems Engineering Research in treating the world with their research ideas. We invite you to join us in the mission & take a step ahead along towards finding the greatest approach to create the world a better place.


Alphabet's GOOGL division Google announced gaming platform, Stadia, at 2019 Game Developers Conference ("GDC"), finally ending its quest for browser-based video game streaming service.
Notably, Stadia which will be launched later this year will enable users to stream games online on any devices like smartphones, laptops, desktops and tablets. Moreover, users can play games on televisions with the aid of Chromecast media stick connection.
All these will be achieved by leveraging Google's robust cloud products and services, and strong datacenter network.
In fact, Google's aim of becoming the "Netflix of the gaming industry" is likely to cause massive disruption to this space. Notably, the gaming space is currently valued at $140 billion. Further, the video game industry is expected to hit $180.1 billion by 2021, per a report by Newzoo.
Additionally, the gaming market generated revenues worth $136 billion in 2018, per an IDC report, which reflects that the figure is growing at a rate of 15% every year.
Moreover, the new cloud-based service will provide a tough competition to the existing players like Sony SNE and Nintendo NTDOY. Further, it will intensify competition for Amazon AMZN and Microsoft MSFT which are also leaving no stone unturned to leverage their cloud capabilities to bolster presence in this booming industry.
Is Google a Threat to Sony, Nintendo & Others?
Google with its new service is likely to bolster gamers' savings rate as they will not have to shell out money on expensive gaming consoles and PCs anymore to play graphic-intensive games.
Further, the company is utilizing its video streaming platform, YouTube, to ensure seamless game play. This will eliminate waiting time for downloading the game content. They will be able to play games as easily as they watch video on YouTube.
These gamer friendly features of the Stadia are expected to hurt established gaming stocks – Sony and Nintendo who offer access to play high-end games via their expensive gaming consoles. Per Bloomberg, shares of Sony as well as Nintendo plunged 4.5% and 4.6%, respectively, during the intraday trading following the announcement of Google Stadia.
Nintendo, the maker of Pokemon and Super Mario, offers offline as well as online games through its hybrid console called Switch that costs $299.99, which is pretty expensive. Nintendo currently carries a Zacks Rank #2 (Buy). You can see the complete list of today's Zacks #1 Rank (Strong Buy) stocks here.
Further, Sony, a Zacks Rank #3 (Hold) stock, has PlayStation Now, a cloud gaming subscription service, which offers streaming of a huge library of video games on PlayStation 4 (PS4) and gaming PCs. Notably, PS4 is as expensive as Switch.
Further, the news also impacted the shares of Electronic Arts EA which is a leading developer, marketer, publisher and distributor of interactive video game software and content. The stock plunged by 2.2% on Mar 19.
Additionally, Stadia streaming game service poses threat to the sale of Microsoft's Xbox, a home video game console.
How Amazon & Microsoft are Placed in Cloud Gaming?
The adoption of cloud technology is becoming mainstream in the gaming industry as it has the capability of handling several challenging technical and graphical problems in streaming a high-end game.
Moreover, the interactive nature of video games requires the creation of detailed graphical images instantly on a real-time basis according to actions of a player. Further, latency is one of the biggest problems in streaming these games. Tech giants are taking advantage of these issues to strengthen footprint in the gaming industry by leveraging cloud services.
Apart from Google, Amazon and Microsoft are also taking advantage of these issues to strengthen their presence in the gaming industry with the aid of their robust cloud computing techniques.
Amazon which already offers video game streaming services via its Twitch platform is aggressively pursuing the development of a cloud gaming service which will help users play games while eliminating the need for download. Reportedly, this Zacks Rank #3 stock was recently on the lookout for engineers to work on its mission for cloud games.
Meanwhile, Microsoft is gearing up to launch trials of its project dubbed XCloud, a cloud streaming service for games. Further, this Zacks Rank #3 stock is planning to develop a streaming box that will offer streaming services for video games on Xbox consoles with the support of its cloud platform, Azure.
Nevertheless, Google's strong efforts to capitalize on its cloud capabilities in order to make Stadia user friendly, are likely to strengthen its gaming position. The company is utilizing Advanced Micro Devices' AMD customized Radeon datacenter GPU for new service.
Further, AMD's software tools will be utilized in the Linux and open-source Vulkan API based Stadia platform. This will assist software developers to provide immersive game streaming experience to the end user.
Currently, Alphabet carries a Zacks Rank #3.


text:
Q: How to set Default CSS for all Buttons in JAVAFx I have over 100 Buttons in my JAVAfx application and I want to give a DEFAULT styling[given below] to all buttons in the programme. Please help ! :)
-fx-background-color:#3c7fb1;
-fx-text-fill: black;
-fx-font-size: 14px;
-fx-padding: 3 30 3 30;

A: *

*Create a new CSS file.

*Attach the CSS file to your Scene.

*Put your button styles to .button {}.

A: It's easy to set default Style for all JavaFX Button in an application.
Just give a id to the style sheet which you want to set as default for all button.And then set this id for all button of your application.
Button button =new Button("Button");
Button button1 =new Button("Button");
button.setId("allbtn");
button1.setId("allbtn");
String  style= getClass().getResource("New.css").toExternalForm();
scene.getStylesheets().add(style);

*

*Create buttons

*apply id to them (for css as we apply in the html) using setId().

*Define CSS for this ID

*Finally add CSS file to the Scene Thats it.

And CSS file :
#allbtn{
-fx-color:black;
-fx-padding:4px;
-fx-background-color:#34c669;
-fx-background-radius: 10px;
}

Learn more about JavaFX Button CSS

A: To apply a default style in an fxml file add a '.button' class to your css file and include it in the Anchor pane
Add this to your css file e.g. app.css
.button {
        -fx-color:black;
        -fx-padding:4px;
        -fx-background-color:blue;
        -fx-background-radius: 10px;
}

Update your AnchorPane tag to include the stylesheet:
<AnchorPane prefHeight="700.0" prefWidth="500.0" stylesheets="@../app.css" >

This will change all buttons to use your style for within the fxml file

redpajama_set_name: RedPajamaStackExchange


text:
Samantha J. Brennan is a British-born philosopher and scholar of women's studies who is currently dean of the College of Arts and faculty member in the Department of Philosophy at the University of Guelph. She was previously a professor in the Department of Women's Studies and Feminist Research at Western University, Canada. She remains a member of Western's Rotman Institute of Philosophy and the graduate faculty of the Departments of Political Science and of Philosophy. Brennan was Department Chair of Philosophy at Western from 2002 to 2007, and 2008–2011. She is a past president of the Canadian Philosophical Association (2017–18).

Education and career
Brennan received her BA in philosophy from Dalhousie University, Halifax, Nova Scotia, and her PhD from the University of Illinois at Chicago, where she wrote her dissertation, Thresholds for Rights, under the supervision of Shelly Kagan.  Brennan grew up on the east coast of Canada, living in Newfoundland, New Brunswick and Nova Scotia. She was born in Lancashire, England.

Brennan has been a Visiting Faculty Fellow in Philosophy, RSSS, the Australian National University and a Taylor Fellow in Philosophy and a visiting fellow in bioethics at the University of Otago in Dunedin, New Zealand.

Brennan co-founded Feminist Philosophical Quarterly, an online, open access, peer-reviewed journal dedicated to promoting feminist philosophical scholarship.

In 2018 Brennan began a new position as Dean of the College of Arts at the University of Guelph.

Research interests

Brennan's research focuses on contemporary normative ethics, applied ethics, political philosophy, and feminist philosophy. In work on children's rights and family justice, Brennan argues that adults should enter into parenting contracts rather than marriage contracts. In normative ethics, Brennan has developed a moderate deontological account according to which rights can be overridden on the basis of the amount of good that can be brought about by doing so. Brennan has also published on the topics of gender identity and fashion, bioethics, philosophy of sport, the moral significance of death, and on feminist approaches to fitness.

References

External links

"Samantha Brennan on Microinequalities", Public Ethics Radio, Episode 16.
"Thinking Philosophically about the Family"

20th-century British philosophers
21st-century Canadian philosophers
Living people
Year of birth missing (living people)
Writers from Lancashire
Political philosophers
Feminist philosophers
Canadian ethicists
Academic staff of the University of Western Ontario
Dalhousie University alumni
University of Illinois Chicago alumni
Philosophy academics
Women's studies academics
Canadian women philosophers
British emigrants to Canada
Philosophers of sport

redpajama_set_name: RedPajamaWikipedia


Use this tabletop for desk to complete a standing desktop and get on your way to leading a healthier life at work! This table top is made from laminated timber, providing an affordable yet still very durable surface that is designed for the rigors of daily use without worry. The 25mm thick table weighs 20kg, able to easily be supported by a standing desk frame whilst leaving plenty of weight allotment to hold standard office equipment and personal items alike.
The tabletop for desk, like a sit stand desk, has a large 1400 x 700mm surface that provides heaps of space for holding all the items mentioned above. The desk has an oak finish, a great look that complements any area it is in and works well with different finishes of desktop frames. The edges are laminated as well for a truly professional look that will last for years to come.
The bottom has 2mm deep pre-drilled pilot holes to easily assemble the table top with an adjustable height frame to complete your office. Order by 2pm EST to receive same day despatch to anywhere in Australia from Slimline Warehouse with most in stock items!