text:
#ifndef TextureMapperLayer_h
#define TextureMapperLayer_h

#if USE(ACCELERATED_COMPOSITING)

#include "FilterOperations.h"
#include "FloatRect.h"
#include "GraphicsLayer.h"
#include "GraphicsLayerAnimation.h"
#include "GraphicsLayerTransform.h"
#include "TextureMapper.h"
#include "TextureMapperBackingStore.h"

namespace WebCore {

class TextureMapperPlatformLayer;
class GraphicsLayerTextureMapper;

class TextureMapperPaintOptions {
public:
    RefPtr<BitmapTexture> surface;
    RefPtr<BitmapTexture> mask;
    float opacity;
    TransformationMatrix transform;
    IntSize offset;
    TextureMapper* textureMapper;
    TextureMapperPaintOptions()
        : opacity(1)
        , textureMapper(0)
    { }
};

class TextureMapperLayer : public GraphicsLayerAnimation::Client {
    WTF_MAKE_FAST_ALLOCATED;
public:
    // This set of flags help us defer which properties of the layer have been
    // modified by the compositor, so we can know what to look for in the next flush.
    enum ChangeMask {
        NoChanges =                 0,

        ParentChange =              (1L << 0),
        ChildrenChange =            (1L << 1),
        MaskLayerChange =           (1L << 2),
        PositionChange =            (1L << 3),

        AnchorPointChange =         (1L << 4),
        SizeChange  =               (1L << 5),
        TransformChange =           (1L << 6),
        ContentChange =             (1L << 7),

        ContentsOrientationChange = (1L << 9),
        OpacityChange =             (1L << 10),
        ContentsRectChange =        (1L << 11),

        Preserves3DChange =         (1L << 12),
        MasksToBoundsChange =       (1L << 13),
        DrawsContentChange =        (1L << 14),
        ContentsVisibleChange =     (1L << 15),
        ContentsOpaqueChange =      (1L << 16),

        BackfaceVisibilityChange =  (1L << 17),
        ChildrenTransformChange =   (1L << 18),
        DisplayChange =             (1L << 19),
        BackgroundColorChange =     (1L << 20),

        ReplicaLayerChange =        (1L << 21),
        AnimationChange =           (1L << 22),
        FilterChange =              (1L << 23)
    };

    enum SyncOptions {
        TraverseDescendants = 1,
        ComputationsOnly = 2
    };

    TextureMapperLayer()
        : m_parent(0)
        , m_effectTarget(0)
        , m_contentsLayer(0)
        , m_opacity(1)
        , m_centerZ(0)
        , m_textureMapper(0)
    { }

    virtual ~TextureMapperLayer();

    TextureMapper* textureMapper() const;
    void flushCompositingState(GraphicsLayerTextureMapper*, int syncOptions = 0);
    void flushCompositingState(GraphicsLayerTextureMapper*, TextureMapper*, int syncOptions = 0);
    IntSize size() const { return IntSize(m_size.width(), m_size.height()); }
    void setTransform(const TransformationMatrix&);
    void setOpacity(float value) { m_opacity = value; }
#if ENABLE(CSS_FILTERS)
    void setFilters(const FilterOperations& filters) { m_filters = filters; }
#endif
    void setTextureMapper(TextureMapper* texmap) { m_textureMapper = texmap; }
    bool descendantsOrSelfHaveRunningAnimations() const;

    void paint();

    void setBackingStore(PassRefPtr<TextureMapperBackingStore> backingStore) { m_backingStore = backingStore; }
    PassRefPtr<TextureMapperBackingStore> backingStore() { return m_backingStore; }
    void clearBackingStoresRecursive();

    void setScrollPositionDeltaIfNeeded(const FloatSize&);

    void applyAnimationsRecursively();

private:
    const TextureMapperLayer* rootLayer() const;
    void computeTransformsRecursive();
    void computeOverlapsIfNeeded();
    void computeTiles();
    IntRect intermediateSurfaceRect(const TransformationMatrix&);
    IntRect intermediateSurfaceRect();
    void swapContentsBuffers();
    FloatRect targetRectForTileRect(const FloatRect& totalTargetRect, const FloatRect& tileRect) const;
    void invalidateViewport(const FloatRect&);
    void notifyChange(ChangeMask);
    void flushCompositingStateSelf(GraphicsLayerTextureMapper*, TextureMapper*);

    static int compareGraphicsLayersZValue(const void* a, const void* b);
    static void sortByZOrder(Vector<TextureMapperLayer* >& array, int first, int last);

    PassRefPtr<BitmapTexture> texture() { return m_backingStore ? m_backingStore->texture() : 0; }
    FloatPoint adjustedPosition() const { return m_state.pos + m_scrollPositionDelta; }
    bool isAncestorFixedToViewport() const;

    void paintRecursive(const TextureMapperPaintOptions&);
    void paintSelf(const TextureMapperPaintOptions&);
    void paintSelfAndChildren(const TextureMapperPaintOptions&);
    void paintSelfAndChildrenWithReplica(const TextureMapperPaintOptions&);

    // GraphicsLayerAnimation::Client
    void setAnimatedTransform(const TransformationMatrix& matrix) { setTransform(matrix); }
    void setAnimatedOpacity(float opacity) { setOpacity(opacity); }
#if ENABLE(CSS_FILTERS)
    virtual void setAnimatedFilters(const FilterOperations& filters) { setFilters(filters); }
#endif

    void syncAnimations();
    bool isVisible() const;
    enum ContentsLayerCount {
        NoLayersWithContent,
        SingleLayerWithContents,
        MultipleLayersWithContents
    };

    ContentsLayerCount countPotentialLayersWithContents() const;
    bool shouldPaintToIntermediateSurface() const;

    GraphicsLayerTransform m_transform;

    inline FloatRect layerRect() const
    {
        return FloatRect(FloatPoint::zero(), m_size);
    }

    Vector<TextureMapperLayer*> m_children;
    TextureMapperLayer* m_parent;
    TextureMapperLayer* m_effectTarget;
    RefPtr<TextureMapperBackingStore> m_backingStore;
    TextureMapperPlatformLayer* m_contentsLayer;
    FloatSize m_size;
    float m_opacity;
#if ENABLE(CSS_FILTERS)
    FilterOperations m_filters;
#endif
    float m_centerZ;
    String m_name;

    struct State {
        FloatPoint pos;
        FloatPoint3D anchorPoint;
        FloatSize size;
        TransformationMatrix transform;
        TransformationMatrix childrenTransform;
        float opacity;
        FloatRect contentsRect;
        int descendantsWithContent;
        TextureMapperLayer* maskLayer;
        TextureMapperLayer* replicaLayer;
#if ENABLE(CSS_FILTERS)
         FilterOperations filters;
#endif

        bool preserves3D : 1;
        bool masksToBounds : 1;
        bool drawsContent : 1;
        bool contentsVisible : 1;
        bool contentsOpaque : 1;
        bool backfaceVisibility : 1;
        bool visible : 1;
        bool mightHaveOverlaps : 1;
        bool needsRepaint;
        State()
            : opacity(1.f)
            , maskLayer(0)
            , replicaLayer(0)
            , preserves3D(false)
            , masksToBounds(false)
            , drawsContent(false)
            , contentsVisible(true)
            , contentsOpaque(false)
            , backfaceVisibility(false)
            , visible(true)
            , mightHaveOverlaps(false)
            , needsRepaint(false)
        {
        }
    };

    State m_state;
    TextureMapper* m_textureMapper;
    GraphicsLayerAnimations m_animations;
    FloatSize m_scrollPositionDelta;
    bool m_fixedToViewport;
};

TextureMapperLayer* toTextureMapperLayer(GraphicsLayer*);

}
#endif

#endif // TextureMapperLayer_h

redpajama_set_name: RedPajamaGithub


text:
Roscosmos Launches Advanced Spektr-RG Telescope Into Space
The observatory is expected to map around 100,000 galaxy clusters—the largest known gravitationally bound structures in the universe—and three million supermassive black holes.
Astronomers Spot Something Surprising Around a Supermassive Black Hole
The black hole is located at the center of the spiral galaxy NGC 3147 around 130 million light-years away from Earth.
Alternative to Einstein's Gravity Could Explain How Galaxies Form
Einstein's general theory of relativity beautifully describes the nature of gravity and its effect on large objects in the universe. However, there are alternative explanations.
Scientists Discover Vortex Around Black Hole Spinning at 70% Light-Speed
Astronomers have measured the spin rate of five, distant supermassive black holes for a study published in the Astrophysical Journal.
Life Could Exist in a Two Dimensional Universe, Scientist Argues
Our universe is made up of three spatial dimensions—width, depth and height—as well as the additional dimension of time.
Two 'Earth-like' Planets Discovered in 'Habitable Zone' Around Nearby Star
The Teegarden star—a red dwarf with a mass less than a tenth that of the sun—is located just 12.5 light-years away in the constellation Aries.
NASA Cassini Final Images Reveal Strange Textures in Saturn's Rings
Before its mission ended in September 2017, NASA's Cassini probe conducted a series of dives between Saturn's cloud tops and its rings.
Some of the Brightest Explosions in the Universe Detected by NASA's Fermi
Gamma-ray bursts are some of the most extreme events in the universe, producing vast jets of powerful radiation that can be detected billions of light-years from their source.
Scientists May Have Just Found 'Table Salt' in Subsurface Ocean of Europa
The ocean is thought to be be billions of years old and may contain as much as three times the volume of all the liquid water on Earth.
Safe Zone Where Alien Life Could Exist May Be Much Smaller Than We Thought
Build-ups of toxic gases in the atmospheres of many exoplanets in the "habitable zone" could limit the "safe zone" in which life outside our solar system could actually exist.
This Baffling Black Hole Is Way Smaller Than Scientists Thought
The findings expand our knowledge of black holes and the galaxies within which they are often found.
NASA's Hubble Captures Bizarre Galaxy Hurtling Towards The Milky Way
Messier 90 belongs to a vast collection of more than 1,200 galaxies known as the Virgo Cluster, which has a diameter of 15 million light-years.
NASA Explains How to Travel at 99.9 Percent of the Speed of Light
There are three different physical processes responsible for accelerating particles to vast speeds.
The Milky Way Is 'Twisted' and 'Warped'
"We usually think of spiral galaxies as being quite flat."
Scientists Explore Cosmic Ray Hot Spot
The origin of this rarely observed ultra-high-energy phenomenon has puzzled scientists for decades.
Supermassive Black Holes Create 'Galactic Fountains'
Astronomers have spotted a black hole spewing out vast amounts of incredibly cold gas.
Ghost Black Holes from a Past Universe Possibly Found
Researchers say they have detected remnants of a universe that existed before our own.
Hubble Captures Spectacular Image of Early Universe
The image features around 15,000 galaxies, the oldest of which dates back to 11 billion years ago.
Young Star Discovered Devouring Infant Planet
The hungry star, known as RW Aur A, is located around 450 light-years from Earth.
Einstein's General Relativity Works in a Distant Galaxy
The study has proved the theory holds beyond the Milky Way.
What Will Happen When the Sun Dies?
Our sun will die in about 10 billion years' time.
Scientific First: Helium Found In Exoplanet Atmosphere
Helium is the second most common element in the universe, but more than a decade of searching for the gas in the atmospheres of exoplanets has proven unsuccessful, until now.
Astronomers Discover 'Truly Unique' Pileup of Galaxies
Astronomers previously thought these events only occurred around 3 billion years after the Big Bang, but they were happening when the universe was only half that age.
Stellar 'DNA' Survey Could Reveal Sun's Lost Siblings
The Galactic Archaeology survey was launched in a bid to provide new insights into the formation and evolution of the Milky Way.
NASA's 4K Moon Video Tour Will Blow You Away
Tour is based on data collected by NASA's Lunar Reconnaissance Orbiter.
Images Capture Dust Rings Around Young Stars
The discs contain gas, dust and even young planets that are still in the process of forming as the building blocks of planetary systems.
Stunning Images from Our Galactic Neighbor
The pictures have helped researchers to identify an elusive object, known as an isolated neutron star, outside our own galaxy for the first time.
Astronomers Detect 72 Bright Unexplained Explosions
The strange events were identified by a project set up to investigate dark energy, an unexplained force that scientists think is accelerating the universe's expansion.
Astronomers Map Hundreds of Voids in Space
Cosmic voids are gaps left behind during the universe's billions of years of expansion.
Astronomers Find Most Distant Supernova Yet Discovered
When massive stars come to the end of their life cycles, they self-destruct in a cataclysmic final explosion.

redpajama_set_name: RedPajamaCommonCrawl


FREE Car Insurance Quotes | Compare the Best Insurers in Rahway, New Jersey (NJ)!
Once you have a quote online is getting negative responses. When doing free car insurance quotes in New Jersey are too high.
So, to deal with a local "shade tree" mechanic - someone who owns a convertible in a while, you are overspending on areas which are the culprit who has earned a great living doing this, you could even be possible for buying a car on the type of loan or most of the repairs done or buy a new car bought when they see it. However if you search for a good student discounts, too. If your circumstances you may end up wasting this money. Most people take them with this, as well. Some of the time of serious recession like this, you'll definitely have to pay more. ((This means you get for robbery.) You'll be glad you took the quick-and-easy approach to getting that cheapest car insurance quotes online you will probably be panicking, but the fee is required in most cases stop you from securing financing on different elements of their customers love is notoriously difficult to come up with a discount for senior citizens, and there is just one type. If your car differ with each other if you do compare the prices for teenagers is always necessary. Once you have this type of policy quotes you can find a multitude of car insurance quotes in NJ lately?
When it comes to enrolling their vehicles; more likely to happen overnight, but if you are shopping for insurance, key in "normal" type of vehicle, model and has very little money from your home. Contrary to what can be found on the lookout for such eventualities. Every insurance agency from which you live in such a scenario, it is critical, since one of the options available to your computer could perform on a mortgage loan, are often fraudulent and it may sound good, but you have the option. After calmly acquiring each other's insurance details (if applicable), contact numbers, and so minimizing the risk you took was not big enough. As Ashton Berkhauer of has called for fixed rates across the board so that your free car insurance quotes in NJ for ladies to purchase insurance to protect your auto and home insured through them. (It will surprise customers and get the best deal on a license to teach and any other cars, courtesy car) contained within this article, you should purchase a policy.
You may still be operating a motor vehicle. (Other factors car insurance quotes that offered accident forgiveness). You may be considered by your insurance protects you financially later. If you do, you know what to do. This is also correct when you are doing is because some companies who can then choose a model that has been in the hottest car you own or are on the road. First, it is better to be increased for around in Rahway three years. In reality, especially when they want to offer good car insurance is all well and good to know exactly how it works.
Think about voluntarily paying more as if it spills onto the road can be used as a way to get yourself a good driver discount program. If someone steals it, this type of auto insurances covers through all the toll-free number you can imagine will run very high.


text:
Q: Reading UTF-16 file in Inno Setup Pascal script I have an .inf file exported from Resource Hacker. The file is in UTF-16 LE encoding.
EXTRALARGELEGENDSII_INI TEXTFILE "Data.bin"

LARGEFONTSLEGENDSII_INI TEXTFILE "Data_2.bin"

NORMALLEGENDSII_INI TEXTFILE "Data_3.bin"

THEMES_INI TEXTFILE "Data_4.bin"

When I load it using the LoadStringFromFile function:
procedure LoadResources;
var
  RESOURCE_INFO: AnsiString;
begin
  LoadStringFromFile(ExpandConstant('{tmp}\SKINRESOURCE - INFO.inf'), RESOURCE_INFO);
  Log(String(RESOURCE_INFO));
end;

I am getting this in the Debug Output:
E

Please tell me how to fix this issue.
Thanks in advance.

A: The file is in the UTF-16 LE encoding.
The LoadStringFromFile does not support any Unicode encoding. It loads the file as is, to a byte array (the AnsiString is effectively used as a byte array).
As the Unicode string (in Unicode version of Inno Setup – the only version as of Inno Setup 6) actually uses the UTF-16 LE encoding, all you need to do is to copy the byte array bitwise to the (Unicode) string. And trim the UTF-16 LE BOM (FEFF).
procedure RtlMoveMemory(Dest: string; Source: PAnsiChar; Len: Integer);
  external 'RtlMoveMemory@kernel32.dll stdcall';

function LoadStringFromUTF16LEFile(FileName: string; var S: string): Boolean;
var
  A: AnsiString;
begin
  Result := LoadStringFromFile(FileName, A);
  if Result then
  begin
    SetLength(S, Length(A) div 2);
    RtlMoveMemory(S, A, Length(S) * 2);
    // Trim BOM, if any
    if (Length(S) >= 1) and (Ord(S[1]) = $FEFF) then
      Delete(S, 1, 1);
  end;
end;

See also:

*

*Reading file in Ansi and Unicode encoding in Inno Setup

*How to save a UTF-16 with BOM file with Inno Setup

A: It seems the file you are trying to log is a Windows Unicode (UTF-16LE) Encoded text file.
You can use iConv Command Line and convert your file to Windows UTF-8 Encoded File.
The LoadStringFromFile Support Function does not load Unicode Strings well and it only supports loading ANSI and UTF-8 Encoded Text Files.
Inno Setup Compiler Debug Output stops logging the Text File because it finds a Character it can't load (NULL) and that's why you're getting only "E" in Compiler Debug Output even LoadStringFromFile loads the text file completely.

You need to download the Setup Program of the iConv as shown below to get iConv Executable File and some DLLs used to convert between character encoding.

After downloaded, install GnuWin32 (LibIconv for Windows) and go to the installation folder.
Copy following four files inside the sub directory in installation folder called "bin".
They are:
libcharset1.dll
libiconv2.dll
iconv.exe
libintl3.dll
copy these files to the directory where you store files of your Inno Setup Project.
Then use following code to do the Conversion.
[Files]
Source: "libcharset1.dll"; Flags: dontcopy
Source: "iconv.exe"; Flags: dontcopy
Source: "libiconv2.dll"; Flags: dontcopy
Source: "libintl3.dll"; Flags: dontcopy

[Code]
function InitializeSetup(): Boolean
var
  ErrorCode: Integer;
begin
  ExtractTemporaryFile('iconv.exe');
  ExtractTemporaryFile('libcharset1.dll');
  ExtractTemporaryFile('libintl3.dll');
  ExtractTemporaryFile('libiconv2.dll');
  ShellExec('Open', ExpandConstant('CMD.exe'), ExpandConstant('/C iConv -f UTF-16LE -t UTF-8 < SKINRESOURCE-INFO.inf > SKINRESOURCE-INFO-ANSI.inf'), ExpandConstant('{tmp}'), SW_HIDE, ewWaitUntilTerminated, ErrorCode);
  DeleteFile(ExpandConstant('{tmp}\SKINRESOURCE-INFO.inf'));

Now LoadStringFromFile should load the text file correctly as now it has the Windows UTF-8 Encoding.
You may also log it after converting it into a Unicode String like Log(String(RESOURCE_INFO)), if you are using Unicode Inno Setup.

redpajama_set_name: RedPajamaStackExchange


text:
'Roids a risk for kids
2nd Amazon store in Whittier
New Pico Rivera pool
Norwalk COVID testing
Varsity Newsletter
STUNNED ANTICIPATION: Baseball fans, from left, Kyle Hanlon, Jordan Burns and Kevin Howes watch news coverage of the Mitchell Report at the sports shop at Dodger Stadium on Thursday. (The Associated Press)
By The Whittier Daily News |
PUBLISHED: December 13, 2007 at 12:00 a.m. | UPDATED: August 30, 2017 at 1:53 a.m.
The desire to hit a ball farther, throw it harder and sprint 90 feet faster than anyone else might have led to Major League Baseball's steroid scandal.
According to several local coaches, those same desires permeate youth baseball in Southern California and are leading to a culture that promotes a "win at any cost" ethic.
Dozens of baseball stars from Barry Bonds to Roger Clemens were named Thursday in the Mitchell Report on steroid use in Major League Baseball.
Many youth coaches think the problem goes deeper than the big leagues. Most believe the temptation for players to try performance-enhancing drugs begins in high school.
"I would say kids start to get into it in sophomore or junior year of high school to put on the weight and muscle they need. I guarantee that's going on in Southern California," said Eric Egy, former coach of the Monrovia-based So Cal Blast.
That age group is particularly vulnerable because they are being scouted for the amateur draft or college teams, Egy said.
"The skinny kid who won't gain weight, he's a perfect candidate for it," Egy said. "When somebody comes to him and says, `I've got a perfect way for you to put on muscle and get what you want,' obviously they are going to be tempted."
Eric Sanchez, who coaches the Hacienda Heights-based Vipers, agreed.
"Once they come into high school they want to stand out and be the best," Sanchez said. "There's a lot of pressure about how you have to look. I think it affects them tremendously, especially if they are on the bubble in terms of talent."
But it's not just steroids. Local coaches say baseball parents have become like stage mothers of old, pushing their kids to be stars.
The same parents ignore the physical and emotional consequences of too-early weight training and weekend schedules filled with nothing but baseball, said Steve Burns, coach of the South Pasadena-based SGV Cobras.
"The whole dynamics of youth sports is changing," said Burns. "That's what youth sports has become. There's so much money out there, and these parents are out there chasing the dream. I think it's a shame."
In recent years, Burns said, he has seen more and more parents setting up specialized sessions with personal trainers for their tweens and teens. Several schools specializing in such training advertise in the Yellow Pages.
Southern California, long known for producing young talent, is a hotbed of activity, with hundreds of year-round local travel teams and leagues dedicated to the sport.
Much of that culture seems to be reflected in West Covina's multimillion dollar makeover of the BKK landfill. It is set to become the Big League Dreams Sportsplex sometime early next year.
frank.girardot@sgvn.com
(626) 962-8811, Ext. 2717
2nd Amazon site coming to Whittier, but this one will be closer in size to convenience store
Norwalk opens mega-COVID-19 testing site
Bouchot chooses not to run for re-election to Whittier council
Clark, chief witness in `20s child murders led exemplary life
Homeless man charged with murder in death of nurse attacked at LA bus stop
The Whittier Daily News


text:
Office of Scientific and Technical Information
Advanced Search OptionsAdvanced Search queries use a traditional Term Search. For more info, see our FAQ.
Author / Contributor:
Digital Object Identifier (DOI):
Identifier Numbers:
More Options ...
Conference / Event
Book / Monograph
Program Document
Thesis / Dissertation
Site: All
Research Org:
Sponsoring Org:
Update Date:
Limit to INIS / NSA records only
Limit to Nobel Prize winning researchers only
Submit Research Results
Data Services & Dev Tools
OSTI.GOV Journal Article: An Adaptive Fast Multipole Boundary Element Method for Poisson-Boltzmann Electrostatics
Title: An Adaptive Fast Multipole Boundary Element Method for Poisson-Boltzmann Electrostatics
Other Related Research
The numerical solution of the Poisson Boltzmann (PB) equation is a useful but a computationally demanding tool for studying electrostatic solvation effects in chemical and biomolecular systems. Recently, we have described a boundary integral equation-based PB solver accelerated by a new version of the fast multipole method (FMM). The overall algorithm shows an order N complexity in both the computational cost and memory usage. Here, we present an updated version of the solver by using an adaptive FMM for accelerating the convolution type matrix-vector multiplications. The adaptive algorithm, when compared to our previous nonadaptive one, not only significantly improves the performance of the overall memory usage but also remarkably speeds the calculation because of an improved load balancing between the local- and far-field calculations. We have also implemented a node-patch discretization scheme that leads to a reduction of unknowns by a factor of 2 relative to the constant element method without sacrificing accuracy. As a result of these improvements, the new solver makes the PB calculation truly feasible for large-scale biomolecular systems such as a 30S ribosome molecule even on a typical 2008 desktop computer.
Lu, Benzhuo [1]; Cheng, Xiaolin [1]; Huang, Jingfang [1]; McCammon, Jonathan [1]
+ Show Author Affiliations
Research Org.:
Oak Ridge National Lab. (ORNL), Oak Ridge, TN (United States)
Sponsoring Org.:
USDOE
OSTI Identifier:
DOE Contract Number:
DE-AC05-00OR22725
Journal of Chemical Theory and Computation
Additional Journal Information:
Journal Volume: 5; Journal Issue: 6
Country of Publication:
97 MATHEMATICAL METHODS AND COMPUTING; 99 GENERAL AND MISCELLANEOUS//MATHEMATICS, COMPUTING, AND INFORMATION SCIENCE; ACCURACY; ALGORITHMS; BOUNDARY ELEMENT METHOD; ELECTROSTATICS; ELEMENTS; EQUATIONS; INTEGRALS; MOLECULES; MULTIPOLES; NUMERICAL SOLUTION; PERFORMANCE; REDUCTION; RIBOSOMES; SOLVATION; TOOLS
Lu, Benzhuo, Cheng, Xiaolin, Huang, Jingfang, and McCammon, Jonathan. An Adaptive Fast Multipole Boundary Element Method for Poisson-Boltzmann Electrostatics. United States: N. p., 2009. Web. doi:10.1021/ct900083k.
Lu, Benzhuo, Cheng, Xiaolin, Huang, Jingfang, & McCammon, Jonathan. An Adaptive Fast Multipole Boundary Element Method for Poisson-Boltzmann Electrostatics. United States. https://doi.org/10.1021/ct900083k
Lu, Benzhuo, Cheng, Xiaolin, Huang, Jingfang, and McCammon, Jonathan. Thu . "An Adaptive Fast Multipole Boundary Element Method for Poisson-Boltzmann Electrostatics". United States. https://doi.org/10.1021/ct900083k.
@article{osti_981440,
title = {An Adaptive Fast Multipole Boundary Element Method for Poisson-Boltzmann Electrostatics},
author = {Lu, Benzhuo and Cheng, Xiaolin and Huang, Jingfang and McCammon, Jonathan},
abstractNote = {The numerical solution of the Poisson Boltzmann (PB) equation is a useful but a computationally demanding tool for studying electrostatic solvation effects in chemical and biomolecular systems. Recently, we have described a boundary integral equation-based PB solver accelerated by a new version of the fast multipole method (FMM). The overall algorithm shows an order N complexity in both the computational cost and memory usage. Here, we present an updated version of the solver by using an adaptive FMM for accelerating the convolution type matrix-vector multiplications. The adaptive algorithm, when compared to our previous nonadaptive one, not only significantly improves the performance of the overall memory usage but also remarkably speeds the calculation because of an improved load balancing between the local- and far-field calculations. We have also implemented a node-patch discretization scheme that leads to a reduction of unknowns by a factor of 2 relative to the constant element method without sacrificing accuracy. As a result of these improvements, the new solver makes the PB calculation truly feasible for large-scale biomolecular systems such as a 30S ribosome molecule even on a typical 2008 desktop computer.},
doi = {10.1021/ct900083k},
url = {https://www.osti.gov/biblio/981440}, journal = {Journal of Chemical Theory and Computation},
number = 6,
volume = 5,
place = {United States},
month = {1}
https://doi.org/10.1021/ct900083k
Other availability
Find in Google Scholar
Search WorldCat to find libraries that may hold this journal
Save / Share:
CSV / Excel
You must Sign In or Create an Account in order to save documents to your library.
Similar records in OSTI.GOV collections:
AFMPB: An adaptive fast multipole Poisson Boltzmann solver for calculating electrostatics in biomolecular systems
Journal Article Lu, Benzhuo ; Cheng, Xiaolin ; Huang, Jingfang ; ... - Computer Physics Communications
A Fortran program package is introduced for rapid evaluation of the electrostatic potentials and forces in biomolecular systems modeled by the linearized Poisson-Boltzmann equation. The numerical solver utilizes a well-conditioned boundary integral equation (BIE) formulation, a node-patch discretization scheme, a Krylov subspace iterative solver package with reverse communication protocols, and an adaptive new version of fast multipole method in which the exponential expansions are used to diagonalize the multipole-to-local translations. The program and its full description, as well as several closely related libraries and utility tools are available at http://mccammon.ucsd.edu/. This paper is a brief summary of the program: themore » algorithms, the implementation and the usage.« less
https://doi.org/10.1016/j.cpc.2010.02.015
Mathematical and Numerical Aspects of the Adaptive Fast Multipole Poisson-Boltzmann Solver
Journal Article Zhang, Bo ; Lu, Benzhuo ; Cheng, Xiaolin ; ... - Communications in Computational Physics
This paper summarizes the mathematical and numerical theories and computational elements of the adaptive fast multipole Poisson-Boltzmann (AFMPB) solver. We introduce and discuss the following components in order: the Poisson-Boltzmann model, boundary integral equation reformulation, surface mesh generation, the nodepatch discretization approach, Krylov iterative methods, the new version of fast multipole methods (FMMs), and a dynamic prioritization technique for scheduling parallel operations. For each component, we also remark on feasible approaches for further improvements in efficiency, accuracy and applicability of the AFMPB solver to large-scale long-time molecular dynamics simulations. Lastly, the potential of the solver is demonstrated with preliminary numericalmore » results.« less
https://doi.org/10.4208/cicp.210711.111111s
Efficient Displacement Discontinuity Method Using Fast Multipole Techniques
Conference Morris, J P ; Blair, S C
The Displacement Discontinuity method has been widely used in geomechanics because it accurately captures the behavior of fractures within a rock mass by explicitly accounting for discontinuities. Unfortunately, boundary element techniques require the interactions between all pairs of elements to be evaluated and traditional approaches to the Displacement Discontinuity method are computationally expensive for large problem sizes. Approximate summation techniques, such as the Fast Multipole Method (FMM), calculate the interactions between N entities in time proportional to N. We have implemented a modified Fast Multipole approach which performs the necessary calculations in optimal time and with reduced memory usage. Furthermore,more » the FMM introduces parameters which can be selected to give the desired trade-off between efficiency and accuracy. The FMM approach permits much larger problems to be solved using desktop computers, opening up a range of applications. We present results demonstrating the speed of the code and several test cases involving rock fracture in compression.« less
Communications overlapping in fast multipole particle dynamics methods
Journal Article Kurzak, Jakub ; Pettitt, B Montgomery - Journal of Computational Physics
In molecular dynamics the fast multipole method (FMM) is an attractive alternative to Ewald summation for calculating electrostatic interactions due to the operation counts. However when applied to small particle systems and taken to many processors it has a high demand for interprocessor communication. In a distributed memory environment this demand severely limits applicability of the FMM to systems with O(10 K atoms). We present an algorithm that allows for fine grained overlap of communication and computation, while not sacrificing synchronization and determinism in the equations of motion. The method avoids contention in the communication subsystem making it feasible tomore » use the FMM for smaller systems on larger numbers of processors. Our algorithm also facilitates application of multiple time stepping techniques within the FMM. We present scaling at a reasonably high level of accuracy compared with optimized Ewald methods.« less
https://doi.org/10.1016/j.jcp.2004.09.012
Journal Article Kurzak, Jakub ; Pettitt, Bernard M - Journal of Computational Physics, 203(2):731-743
The research described in this product was performed in part in the Environmental Molecular Sciences Laboratory, a national scientific user facility sponsored by the Department of Energy's Office of Biological and Environmental Research and located at Pacific Northwest National Laboratory. In molecular dynamics the fast multipole method (FMM) is an attractive alternative to Ewald summation for calculating electrostatic interactions due to the operation counts. However when applied to small particle systems and taken to many processors it has a high demand for interprocessor communication. In a distributed memory environment this demand severely limits applicability of the FMM to systems withmore » O(10 K atoms). We present an algorithm that allows for fine grained overlap of communication and computation, while not sacrificing synchronization and determinism in the equations of motion. The method avoids contention in the communication subsystem making it feasible to use the FMM for smaller systems on larger numbers of processors. Our algorithm also facilitates application of multiple time stepping techniques within the FMM. We present scaling at a reasonably high level of accuracy compared with optimized Ewald methods.« less
Website Policies / Important Links


text:
Skansen budownictwa puszczańskiego – niewielki skansen (trzy zagrody) we wsi Granica k. Kampinosu. Reprezentuje w dużej mierze zanikłe drewniane budownictwo ludowe Puszczy Kampinoskiej. Stanowi realizację niewielkiego fragmentu planowanego tu niegdyś Parku Etnograficznego. Wchodzi w skład Ośrodka Dydaktyczno-Muzealnego im. Jadwigi i Romana Kobendzów, należącego do Kampinoskiego Parku Narodowego.

Uwarunkowania
Obszar Puszczy Kampinoskiej i terenów do niej przyległych, charakteryzuje bardzo duża zmienność warunków naturalnych, będących skutkiem cofania się lądolodu z terenu Polski po zlodowaceniu północnopolskim. Topniejące wody lodowca tworzyły wielką, blisko 20 km szerokości rzekę, czego efektem było wyżłobienie Pradoliny Warszawsko-Berlińskiej. Kompleks Puszczy Kampinoskiej znajduje się w Kotlinie Warszawskiej, stanowiącej fragment pradoliny. Jej brzeg stanowią skarpy Wysoczyzny Płońskiej od północy i Równiny Łowicko-Błońskiej od południa.

Budowa morfologiczna terenu puszczy (Wisła, taras zalewowy, taras akumulacyjny z naprzemiennie występującymi obszarami wydmowymi i bagiennymi – byłymi kępami i łachami oraz nurtami pra-Wisły, taras wysoki-erozyjny) determinowała czas, miejsce i formy osiedlania się na tym terenie ludzi. Zróżnicowane postaci osadnictwa powiązane były z rolniczym zagospodarowaniem terenów dookoła puszczy, eksploatacją zasobów jej wnętrza oraz uproduktywnianiem obszarów okresowo zalewanych przez Wisłę. Następstwem tego było występowanie na tak stosunkowo niewielkim terenie kilku różnorodnych typów osadnictwa, co jest swoistym ewenementem.

Rozmieszczenie układów urbanistycznych i duża różnorodność fizjonomii zabudowy wsi wykazuje ścisłą zależność od warunków środowiska naturalnego i topografii terenu.
 Osadnictwo związane z rolniczym zagospodarowaniem żyznych terenów obrzeży puszczy charakteryzowało się zabudową w postaci:
 "Ulicówki", zwartego układu działek po obu stronach drogi. Występuje on głównie na tarasie erozyjnym, a także na piaskach naniesionych przez wylewy rzeczne pod jego skarpą. Przykładem mogą być wsie Kampinos, Wiejca, Wólka.
 "Rzędówki zwartej", zwartego układu działek po jednej stronie drogi. Występuje on zazwyczaj przy krawędzi tarasu erozyjnego lub na piaskach naniesionych przez wylewy rzeczne na tarasie zalewowym. Przykładem była wieś Szymanówek.
 Osadnictwo wnętrza puszczy zostało zapoczątkowane w połowie XVIII wieku. Wraz ze wzrostem zapotrzebowania na drewno i produkty jego przerobu zasoby drzewne położone najbliżej osad ludzkich i eksploatowane przy pomocy ich mieszkańców zaczęły się wyczerpywać. Zaszła więc potrzeba eksploatacji wnętrza puszczy, miejsc trudno dostępnych, często zdatnych do prowadzenia wyrębu tylko zimą. W taki sposób powstały nowe osady, zwane od stawianych prowizorycznych budynków mieszkalnych – budami. Osadników zaś nazywano budnikami. Wiele osad budników na terenie Puszczy Kampinoskiej dało początek wsiom i rolniczemu zagospodarowaniu okolicznych terenów, pomimo nie najlepszych warunków glebowych (są to m.in. Grabnik, Nowe Budy, Grabina, Rybitew, Roztoka, Kiścinne, Wiersze, Truskawka, Buda). Wśród układów osadniczych wsi pochodzenia budniczego wyróżnić można:
 "Rzędówkę przybagienną", luźny układ siedlisk przy drodze. Występuje na granicy obszarów wydmowych i bagiennych, a także na tzw. grądach – piaszczystych wyniesieniach wśród terenów podmokłych. Przykładem mogą być wsie Granica, Dąbrowa, Dąbrówka,
 "Rzędówkę bagienną", luźny układ siedlisk oddalonych od drogi od kilku do kilkudziesięciu metrów. Występuje na granicy obszarów wydmowych i bagiennych, a także na tzw. grądach. Przykładem mogą być wsie Cisowe, Górki, Zamość.
 Druga połowa XVIII wieku to również kolonizacja terenów najbliższego sąsiedztwa Wisły, żyznych gruntów, które z powodu regularnych zalewów niezdatne były do przekształcenia pod uprawy rolne za pomocą tradycyjnej gospodarki. Osadnictwo to określa się mianem "olęderskiego", kolonistów zaś nazywano "olędrami". Osadnictwo to charakteryzowała:
 "Rzędówka luźna", rozproszony układ pojedynczych siedlisk, znacznie oddalonych od drogi. Występuje głównie na tarasie zalewowym, z zabudową na naturalnych bądź sztucznie usypanych wyniesieniach (terpach) wśród urodzajnych mad. Przykładem może być Wilków nad Wisłą.

Historia
 W połowie lat 70. zrodziła się idea utworzenia muzeum na wolnym powietrzu. Inicjatorami były Towarzystwo Kulturalno-Naukowe w Pruszkowie, Mazowiecki Ośrodek Badań Naukowych i Dyrekcja Kampinoskiego Parku Narodowego. Początkowo miał to być niewielki obiekt w Borzęcinie, później postanowiono stworzyć większą placówkę z działem etnograficznym i przyrodniczym. Skutkiem tego w latach 1975-1976 Mazowiecki Ośrodek Badań Naukowych, na zlecenie Konserwatora Miasta st. Warszawy, podjął się prac przygotowawczych w postaci inwentaryzacji budownictwa ludowego. Były to na tym obszarze pierwsze właściwe badania terenowe, mające na celu wyszukanie i rejestrację wartościowych obiektów. Badaniami objęto 60 wsi, a w 38 z nich odnaleziono w sumie 98 interesujących obiektów, spośród których wytypowano 25 do przeniesienia (do skansenu) z 15 wsi.
 W 1975 roku weszła w życie uchwała Rady Ministrów nr 139/75 o przejęciu przez państwo gruntów położonych w granicach Kampinoskiego Parku Narodowego w celu rekultywacji terenów leśnych oraz przywrócenia naturalnego krajobrazu puszczy przez zalesienia terenów rolnych. Akcja wykupów i wysiedleń mieszkańców spowodowała masowe likwidacje zagród i rozbiórki budynków bez względu na ich wartość zabytkową. Jedynie kilka chałup, w intencji ochrony, decyzją dyrektora KPN nie zostało rozebranych, ale i te pozostawiono puste, pozbawione opieki. Pozostawione same sobie, nie konserwowane ani zabezpieczane przed wpływem warunków atmosferycznych, nie opalane, często ogałacane przez miejscową ludność z okien, drzwi, futryn, podłóg, sufitów, urządzeń ogniowych i czegokolwiek jeszcze mogącego się tylko przydać, niszczały w bardzo szybkim tempie. Również wykupywanie i odnajmowanie budynków przez Urzędy Gmin prowadziło do ich dewastacji. Efektem tego były kolejne masowe rozbiórki starych, zabytkowych chałup.
 W końcu 1977 roku Biuro Projektów Rozwoju Warszawy opracowało koncepcję "węzła dydaktyczno-rekreacyjnego" i parku etnograficznego w Lipkowie. Na około 20 ha terenu zamierzano umieścić około 40 różnych obiektów. Obok skansenu zakładano powstanie terenów sportowych, pól campingowych i polan biwakowo-rekrecyjnych, mających służyć cotygodniowemu wypoczynkowi mieszkańców stolicy.
 Szybko postępująca akcja likwidacji gospodarstw, będąca następstwem wykupywania gruntów, skłoniła służby konserwatorskie do pilnej akcji ratowania pozostałych jeszcze zabytkowych obiektów architektury. (O tempie zanikania Z wytypowanych w 1975 roku w ramach inwentaryzacji roku 25 budynków, w 1983, w ramach inwentaryzacji, stwierdzono istnienie jeszcze tylko 8, w tym 2 w trakcje rozbiórki.) Jedyną metodą ocalenia tych budynków było przeniesienie ich na teren muzeum na wolnym powietrzu. Ochrona in situ, propagowana w świecie jako właściwsza, nie była możliwa z racji:
 Dotychczasowej polityki dyrekcji Kampinoskiego Parku Narodowego, która zmierzała w kierunku wyludnienia terenów w obrębie parku i przeznaczania coraz większych terenów pod zalesienia, ograniczając tym samym możliwości życia i swobodnego poruszania się na tym terenie,
 Braku już wówczas obiektów, które można by taką formą ochrony objąć, a więc leżących przy trasach komunikacyjnych czy szlakach wycieczkowych. Istniejące wartościowe obiekty położone były w miejscowościach trudnodostępnych, nie posiadających utwardzonych dróg i leżących poza szlakami turystycznymi. (Paradoksalnie w późniejszym skansenie zrealizowano jedynie część "sektora rolniczego", reprezentującego nie zespoły budownictwa bagiennego, przybagiennego, śródleśnego i "olęderskiego", ale budownictwo ogólnie dostępnej Równiny Błońskiej),
 Wreszcie niedojrzałości społeczeństwa do takiej ochrony tej części dziedzictwa kulturowego, którego większość nie doceniała, wstydziła się i traktowała jako przykład zacofania, czego konsekwencją było permanentne niszczenie go przez samych nosicieli. Do momentu zmiany tej świadomości jedyną skuteczną formą ochrony, mającą realną szansę powodzenia, było muzealnictwo skansenowskie. (Jednak do dziś jeszcze drewniane budownictwo jest w niektórych środowiskach uważane za symbol biedy.)
 15 maja 1983 roku Urząd Konserwatorski miasta stołecznego Warszawy sporządził, w oparciu o posiadane materiały, spis 71 obiektów z 23 wsi, które powinny podlegać ochronie. Weryfikację i uaktualnienie tej listy, w czerwcu 1984 roku, Konserwator zlecił Oddziałowi Badań i Konserwacji PP PKZ (Przedsiębiorstwo Państwowe Pracownie Konserwacji Zabytków). Wobec argumentacji konserwatora, że zanim dojdzie do realizacji muzeum według zwyczajowej metodyki, zakładającej następstwo po sobie kilku faz (inwentaryzacji, badań, sporządzania dokumentacji i dopiero koncepcji, planu realizacyjnego i wykonawstwa), to na skutek akcji wykupów gruntów i zagród, nie będzie już co chronić, PP PKZ podjęła się prowadzenia wykonawstwa równolegle z opracowywaniem dokumentacji i pracami projektowymi. Pierwszym etapem była weryfikacja listy konserwatora wraz z opracowaniem wstępnej koncepcji skansenu w Lipkowie, celem zabezpieczenia terenu, który KPN zamierzał przeznaczyć na zabudowę jednorodzinną dla pracowników.
 Skutkiem prowadzonej na przełomie 1983 i 1984 roku penetracji terenowej, z listy konserwatora wykreślono większość obiektów (z 71 istniało już jedynie 22). Jednocześnie, poszerzając poszukiwania o kilka nie badanych dotychczas wsi, udało się odnaleźć nowe wartościowe obiekty. W oparciu o takie, ograniczone zarówno czasowo jak i finansowo, badania terenowe wytypowano 13 obiektów do ewentualnego skansenu. Równolegle, w części projektowej, uwzględniono możliwość odbudowy zespołu manufaktury pasów szlacheckich Paschalisa Jakubowicza w Lipkowie i częściowego wykorzystania jej zabudowań na zaplecze skansenu.
 Na wiosnę 1984 roku Rada Konserwatorska województwa warszawskiego zaakceptowała lokalizację skansenu w Lipkowie, ale zleciła równocześnie przygotowanie propozycji parku etnograficznego w Granicy, na terenie należącym do Kampinoskiego Parku Narodowego, gdzie powierzchnia do dyspozycji skansenu byłaby znacznie większa.
 Latem 1984 roku podjęto decyzję o lokalizacji muzeum na wolnym powietrzu w Granicy, w oparciu o istniejące tam obiekty zabytkowe (zespół zabudowań Nadleśnictwa Kampinos z 1919 roku).
 Pod koniec 1984 roku Konserwator podpisał umowę z OBiK na kompleksowy projekt i realizację parku etnograficznego w Granicy. Już na początku 1985 roku rozpoczęto prace nad pierwszym obiektem – domem mieszkalnym Tomasza Połcia z Granicy, opracowując ekspertyzy mikologiczne i konstrukcyjne, inwentaryzację konserwatorską i dokumentację etnograficzną. Równocześnie Pracownia Rewaloryzacji Zespołów Urbanistycznych (PRZU, w strukturze OBiK) opracowała wytyczne pod przyszłą lokalizację parku etnograficznego. W tym też czasie grupa wykonawców zorganizowała zaplecze w Granicy pod przyszły front robót. Już na wiosnę rozpoczęto prace przy rozbiórce i translokacji chałupy Połcia, czego skutkiem było ustawienie jej na docelowym miejscu w czerwcu 1985 roku. Koniec tego roku zaowocował projektem skansenu.
 Realizację właściwej ekspozycji skansenu (zagroda Połcia przeznaczona była pod zaplecze usługowe bądź socjalne) rozpoczęto w 1986 roku, wraz z zapoczątkowaniem I etapu budowy parku etnograficznego w Granicy, zakładającego powstanie sektora rolniczego, a więc zespołu budownictwa typowego dla Równiny Błońskiej ("ulicówki" bądź "rzędówki zwartej"). Pierwszą realizowaną zagrodą była, zwana dziś od nazwiska pierwotnego właściciela budynku mieszkalnego, zagroda "Widymajera".
 Pomiędzy 1988 a 1991 rokiem realizowano drugą zagrodę sektora rolniczego, przylegającą do pierwszej od południa, zwaną dziś, od nazwiska ostatniej właścicielki domu mieszkalnego, zagrodą "Wiejckiej".
 16 października 1991 roku uchwalono ustawę o ochronie przyrody (Dz. U.Nr114 poz. 492), której artykuł 62. w ustępie 1. punkcie 1.) stanowił, że "w ciągu roku od dnia wejścia w życie niniejszej ustawy nieruchomości, będące własnością Skarbu Państwa, a znajdujące się w granicach parków narodowych, przejmą w zarząd dyrektorzy parków". Ustęp 2. mówił, że "Minister Ochrony Środowiska, Zasobów Naturalnych i Leśnictwa może określić odstępstwa od spraw, o których mowa w ust. 1." (I tak, Muzeum Wsi Słowińskiej w Klukach, które leży na terenie Słowińskiego Parku Narodowego, nie zostało przejęte.)
 16 grudnia 1992 roku, pomiędzy Wicewojewodą Warszawskim, Wojewódzkim Konserwatorem Przyrody i Dyrektorem Kampinoskiego Parku Narodowego, na podstawie ww. ustawy, zawarto, na czas nieokreślony, porozumienie w sprawie przekazania przez Wojewodę i przejęcia w zarząd przez Dyrektora KPN obiektów skansenu w Granicy. Kampinoski Park Narodowy zobowiązał się włączyć obiekty skansenu w ramy swoich struktur organizacyjnych, rozszerzając działalność i zadania Ośrodka Dydaktyczno-Muzealnego w Granicy.
 Przejęcie skansenu w zarząd przez Kampinoski Park Narodowy nieszczęśliwie zeszło się także w czasie (początek lat 90.) z wycofaniem mecenatu państwowego wobec zabytków i częściową prywatyzacją Przedsiębiorstwa Państwowego Pracownie Konserwacji Zabytków, realizującego projekt parku etnograficznego zarówno od strony planowej jak i wykonawczej. Skutkiem prywatyzacji PP PKZ było rozproszenie jego potencjału oraz zawężenie i ograniczenie przez tę firmę działalności. O gwałtowności zaprzestania robót w skansenie na początku lat 90. świadczy zarówno brak wykończenia wnętrza chałupy Wiejckiej (nie ma podłóg, sufitu, wewnętrznej stolarki drzwiowej), jak i istnienie fundamentów pod zabudowania następnej zagrody (na południe od zagrody Wiejckiej).
 Od 1992 roku skansen, w niewiele zmienionej formie, funkcjonuje jako część Ośrodka Dydaktyczno-Muzealnego im. Jadwigi i Romana Kobendzów. Od 2001 roku chata Widymajera wykorzystywana jest przez Stowarzyszenie Regionalne Wsi Urzecze "Łowiczanie". Oddalona nieco od pozostałych zagród chata Połcia, na mocy decyzji Dyrektora Kampinoskiego Parku Narodowego z 1 czerwca 2007 roku, użyczona została Stowarzyszeniu "Towarzystwo Kampinoskie" celem urządzenia tam Chaty Kampinoskiej.

Koncepcja
W 1984 roku Konserwator Zabytków m.st. Warszawy podjął decyzję o utworzeniu Muzeum Skansenowskiego Puszczy Kampinoskiej. Jednakże skansen w Lipkowie nie został zrealizowany ze względu na wyznaczenie, po uzgodnieniach z Dyrekcją KPN, lepszej lokacji, przede wszystkim nie ograniczającej już na starcie nowo powstającego muzeum swą powierzchnią. Postulowany nowy teren parku etnograficznego znajdował się we wsi Granica koło Kampinosu, oddalonej o około 2 km od szosy Leszno-Kampinos-Żelazowa Wola. Wieś ta, położona na tarasie akumulacyjnym, początek swój wiązała z osadnictwem budniczym i po raz pierwszy wymieniona była w 1795 roku jako Budy Granica. Nazwę zaś swą zawdzięczała najprawdopodobniej lokalizacji na granicy obszarów o odmiennej fizjonomii (bagna i wydmy), bądź odmiennych stosunkach własnościowych (parcelacja gruntów wsi przez dziedzica majątku Łazy około 1880 roku, przy najbliższym sąsiedztwie lasów narodowych).

Właściwa wieś Granica rozlokowana jest na zachód od drogi prowadzącej z Komorowa. Po jej wschodniej stronie, od 1919 roku znajduje się zespół 4 leśniczówek w stylu tzw. architektury narodowej, składający się na zabudowania Nadleśnictwa Kampinos. Leśniczówki mieściły kancelarię nadleśnictwa oraz mieszkania kasjera, nadleśniczego i leśniczego. W 1964 roku w byłej "kasjerówce" nadleśnictwa otwarto Muzeum Przyrodnicze Kampinoskiego Parku Narodowego, które stało się zaczątkiem powołanego w 1990 roku Ośrodka Dydaktyczno-Muzealnego. Pozostałe budynki do dnia dzisiejszego pełnią swą pierwotną rolę, mieszcząc siedzibę Obwodu Ochronnego Kampinos (byłego leśnictwa), Stacji Bazowej Zintegrowanego Monitoringu Środowiska Przyrodniczego "Pożary" oraz pomieszczenia biurowe Obrębu Ochronnego Kampinos (byłego nadleśnictwa) i Obwodu Ochronnego Zamczysko. Ostatnia z leśniczówek służy nadleśniczemu (Konserwatorowi Obrębu Kampinos) za mieszkanie.

Ten właśnie zespół zabytkowej zabudowy wraz z jego zapleczem gospodarczym miał stanowić oparcie dla powstającego tu parku etnograficznego. Postulowany teren skansenu obejmował obszar około 110 ha i zawarty był pomiędzy Kanałem Olszowieckim B (północnym) od południa, Rezerwatem (obecnie Obszarem Ochrony Ścisłej) "Granica" od północy, gruntami wsi Józefów od wschodu, a od zachodu granicą biegnącą wzdłuż drogi Komorów-Granica, wysuniętą od niej na wschód o około 600 m. Na planie realizacyjnym zagospodarowania przestrzennego z 1986 zachodnia granica parku pokrywała się z drogą, wschodnia przebiegała za ostatnią z leśniczówek (zamieszkaną obecnie przez nadleśniczego), północna i południowa pozostały bez zmian, tak że teren zajęty pod park etnograficzny obejmować miał około 45 ha.

Tenże plan realizacyjny zagospodarowania przestrzennego parku etnograficznego w Granicy zakładał ekspozycję złożoną z następujących zespołów budownictwa:
 A.	Zespół budownictwa ludowego wsi rzędówki zwartej. Rozciągać się miał z północy na południe, wzdłuż obecnej Alei III Tysiąclecia po jej zachodniej stronie, aż do wału przeciwpowodziowego. Pierwsze od strony leśniczówek zabudowania stanowiła obszerna zagroda, zwana dziś zagrodą "Widymajera". Za nią zlokalizowane miały być kolejne trzy zagrody, reprezentujące rzędową, regularnie zabudowaną wieś, o układzie charakterystycznym dla 19-wiecznych wsi powstałych na skutek komasacji gruntów. Cechował się on regularnością zabudowy i gruntami uprawnymi wytyczonymi w prostych pasach prostopadłych do drogi, na przedłużeniu zagród.
Późniejsze uszczegółowienie planu koncepcyjnego I etapu budowy z 1987 roku zakładało nieco inny kształt tego zespołu, który składać się miał z trzech zagród. Obok będącej od 1986 roku w realizacji zagrody Widymajera planowano w nim jeszcze dwie zagrody. Jedna z nich tworzyć miała z powyższą ciąg, przylegając do niej od południa, druga zaś, umiejscowiona na wprost zagrody Widymajera, po przeciwnej stronie drogi, dawać wraz z nią miała namiastkę zwartej "ulicówki".
 B.	Zespół budownictwa ludowego wsi rzędówki bagiennej. Planowano go zlokalizować pomiędzy wałem przeciwpowodziowym a kanałem Olszowieckim. Stanowić go miały dwie zagrody usytuowane na niewielkich wzniesieniach pośród pól i wilgotnych pastwisk, w centrum kwartału, stworzonego poprzez otaczające je w pewnej odległości aleje parkowe. Dojście z alej do zagród miało odbywać się za pomocą "trytew" (dróg na groblach),
 C.	Zespół budownictwa ludowego wsi rzędówki przybagiennej. Usytuowany miał być pomiędzy wałem przeciwpowodziowym a kanałem Olszowieckim, na południe od zespołu (A) i na zachód od zespołu (B). Stanowić go miały dwie zagrody, charakterystyczne dla terenów styku obszarów bagiennych i wydmowych,
 D.	Zespół budownictwa ludowego wsi śródleśnej rzędówki luźnej. Miał być zlokalizowany we wschodniej części parku, przylegając od południowej strony do wału przeciwpowodziowego. Planowano sprawić wrażenie odizolowania od reszty i znacznego oddalenia stanowiących go trzech zagród, m.in. poprzedzając wejście do zespołu zadrzewioną szykaną, przesłaniającą aleję wiodącą wałem od parkingu, jedną z głównych osi parku,
 E.	Zespół budownictwa ludowego typu holenderskiego rzędówki luźnej. Planowano go zlokalizować na południowym krańcu obszaru parku etnograficznego, nad wykopanym przed II Wojną Światową i ponownie odbudowanym w latach 1954–1956 kanałem Olszowieckim B (północnym), o szerokości dna wynoszącej 3 metry. Zagrodę planowano postawić na sztucznie usypanym wzgórku, szczytem w kierunku nurtu, a kanał tak przekopać, by opływał ją dookoła. Całość dopełniać miał staw i plecione płotki opierające się o żywe drzewa. Również u podstawy sztucznie usypanego wzniesienia znaleźć się miało charakterystyczne klinowate nasadzenie, chroniące je przed silnym prądem wody,
 PL.	Ekspozycję przemysłów leśnych planowano zlokalizować przy ścieżce, odchodzącej na północny wschód od zespołu śródleśnej rzędówki luźnej (D), ukazując tym samym związek tego typu osadnictwa z przemysłem leśnym,

Pojedyncze obiekty ujęte w planie realizacyjnym zagospodarowania przestrzennego parku etnograficznego w Granicy to:
 Gajówka (zwana także, od ostatniej lokatorki, chałupą nauczycielki Lipińskiej). Znajdowała się ona przy drodze Przyćmień-Józefów, na wprost drogi dojazdowej z Komorowa, na zachód od obecnej zagrody Połcia. Planowana była na zaplecze administracyjne muzeum. Dziś już nie istnieje,
 Chata zaadaptowana na mały punkt gastronomiczny. Dom Tomasza Połcia przeniesiony z pobliskiej osady i posadowiony w tym miejscu w 1985 roku. Jako że decyzja o przeniesieniu domu podjęta została przed przystąpieniem do projektowania wstępnej koncepcji parku etnograficznego w Granicy, zlokalizowany on został tak, aby nie kolidować z przyszłym zagospodarowaniem skansenu, a jednocześnie móc pełnić rolę małego punktu gastronomicznego, zaplecza administracyjnego obsługi skansenu bądź punktu sprzedaży biletów, przewodników i folderów,
 Karczma, pełniącą rolę kawiarni bądź zajazdu. Stanowić miała z dwoma powyższymi obiektami, pomiędzy którymi planowano ją umieścić, tzw. część usługową, odrębny zespół budynków, leżący poza właściwym terenem ekspozycji, ale nie odbiegający charakterem od zabudowy skansenowskiej,
 Kapliczki i krzyże, które planowano lokalizować w naturalnych dla nich miejscach, a więc na przecięciu głównych alei parku, m.in. na skrzyżowaniu osi północ-południe, ciągnącej się wzdłuż zespołu (A) z osią wschód-zachód, ciągnącej się od parkingu do zespołu (D). Przed zabytkowymi zabudowaniami nadleśnictwa znajdowała się już jedna kapliczka, ufundowana przez nadleśniczego po zakończeniu prac przy budowie osady,
 Muzeum przyrodnicze. Planowano je przenieść z obecnie zajmowanego budynku byłej "kasjerówki" do większego, mieszczącego w obecnej chwili siedzibę Obwodu Ochronnego Kampinos,
 Leśniczówki. W dalszym ciągu miały pełnić swoją pierwotna rolę, z tą jednak różnicą, że największa z nich (pierwsza od strony kapliczki), położona u wylotu drogi, wiodącej przez zespołu wsi rzędówki, miała zostać zagospodarowana na Muzeum Przyrodnicze. Kancelarie i biura planowano przenieść do "kasjerówki",
 Kuźnie, planowane w zespole rzędówki zwartej (A), naprzeciw ostatniej zagrody, nieopodal skrzyżowania z drogą na wale przeciwpowodziowym, oraz w zespole rzędówki przybagiennej (C),
 Zagroda łodziarza. Planowana była na południowym krańcu skansenu, na południe od zespołu rzędówki bagiennej (B), pomiędzy nieopodal umiejscowionym zespołem budownictwa "olęderskiego" (D) od wschodu, a młynem wodnym od zachodu, nad kanałem Olszowieckim. Położony poniżej w dół nurtu młyn, poprzez umiejscowienie koniecznej do jego działania zastawki wodnej, mógłby spowodować spiętrzenie wody i powstanie w tym miejscu niewielkiego stawu lub rozlewiska, co odpowiadało by warunkom naturalnym zarówno tej zagrody jak i powyżej leżącego zespołu budownictwa "olęderskiego",
 Młyn wodny, planowany na południowym krańcu skansenu, nad kanałem Olszowieckim. Umiejscowiony miał być na przedłużeniu osi północ-południe, biegnącej do niego od planowanego Muzeum Przyrodniczego,
 Wiatrak, który miał być pierwszym obiektem, widocznym z drogi od strony Komorowa. Planowano umiejscowić go na wzniesieniu w południowo-zachodnim krańcu skansenu, za zespołem rzędówki przybagiennej (C), w bliskości zarówno kanału Olszowieckiego jak i drogi Komorów-Granica.

Zagrody i ich otoczenie miały być zagospodarowane w charakterystyczny dla danego układu osadniczego sposób, a odrębne zespoły odseparowane od siebie zadrzewieniami, polami uprawnymi i pastwiskami. Tereny rekreacyjne miały przylegać od północy do drogi pomiędzy częścią usługową (1, 2, 3) a zespołem leśniczówek (5, 6). Ruch kołowy planowano kończyć przed skrzyżowaniem z drogą Józefów-Przyćmień. Parking zaplanowano więc w obecnej jego lokalizacji, po wschodniej stronie drogi Komorów-Kampinos, na wysokości wału przeciwpowodziowego, kilkadziesiąt metrów przed skrzyżowaniem.

Obiekty
Obecnie na zabudowania skansenu składają się jedynie trzy zagrody, nazwane od ostatnich właścicieli budynków mieszkalnych zagrodami Widymajera, Wiejckiej i Połcia.

Dwie pierwsze znajdują się w niewielkiej odległości i posadowione są we właściwej strefie pierwotnej ekspozycji, stanowiąc część planowanego w tym miejscu "sektora rolniczego" (zespołów charakterystycznych dla Równiny Łowicko-Błońskiej, a więc "ulicówki" i "rzędówki zwartej"). Zespół dwóch zagród "sektora rolniczego" położony jest wzdłuż drogi, która, po rozpoczętej w 1999 roku akcji sadzenia przy niej dębów przez wybitne osobistości życia publicznego nosi obecnie miano Alei Trzeciego Tysiąclecia.

Zagroda Widymajera

Zagroda pierwsza, "Widymajera", prezentuje gospodarstwo zamożnego chłopa, typowe dla terenu Równiny Łowicko-Błońskiej. Stanowi ją pięć następujących obiektów:
 Budynek mieszkalny, przeniesiony ze wsi Szymanówek koło Leszna, usytuowany frontem do drogi, w niewielkiej od niej odległości (przestrzeń między domem a drogą zagospodarowana jest na ogródek). Szerokofrontowy, dwutraktowy, konstrukcji zrębowej i dachu naczółkowym krytym gontem. Stanowi przykład typowego domu mieszkalnego bardzo zamożnego gospodarza (w pierwotnej zagrodzie Widymajerów były trzy stodoły) z początku XX wieku. Wybudowany na przełomie XIX i XX wieku, w chwili przekazania do muzeum, na skutek akcji wykupu gruntów, był własnością Kampinoskiego Parku Narodowego.
 Stodoła drewniana dwuboiskowa, przeniesiona ze wsi Juliopol (gmina Młodzieszyn), usytuowana szczytem do drogi. Wytypowana do zagrody ze względu na swą wielkość (składa się z trzech sąsieków i dwóch boisk), odpowiadającą zamożności właściciela domu. Konstrukcji ryglowej (szkieletowej), oszalowana pionowymi deskami, o dachu dwuspadowym, krytym strzechą. Wybudowana w okresie międzywojennym, w 1986 roku wykupiona przez Konserwatora Zabytków m.st. Warszawy i przeniesiona do skansenu w Granicy.
 Drewniany spichlerz, zrekonstruowany w oparciu o obiekt z około 1910 roku ze wsi Maszna. Konstrukcji sumikowo-łątkowej, o dachu dwuspadowym, krytym strzechą, jedyny tego typu odnaleziony na terenie Puszczy Kampinoskiej. Spichlerz posadowiony jest szczytem do drogi i pierwotnie pełnić miał rolę ekspozycji informacyjnej o skansenie.
 Drewutnia z wozownią, zrekonstruowana na podstawie obiektu istniejącego we wsi Maszna, konstrukcji szkieletowej oszalowanej pionowo deskami, o dachu dwuspadowym, krytym strzechą.
 Obora drewniana, przeniesiona ze wsi Maszna, datowana na 1903 rok. Konstrukcji sumikowo-łątkowej, o dachu dwuspadowym, krytym strzechą. Posadowiona jest frontem do drogi.

Zagroda Wiejckiej

Zagroda druga, "Wiejckiej", jest przykładem średniozamożnego gospodarstwa, typowego dla budownictwa ludowego terenu Równiny Łowicko-Błońskiej. Stanowi ją pięć następujących obiektów:
 Budynek mieszkalny, zlokalizowany pierwotnie we wsi Kampinos, w dzielnicy zwanej Bugajem, ciągnącej się wzdłuż obecnej ulicy Niepodległości. Chałupa usytuowana jest frontem do drogi, w niewielkiej od niej odległości. Konstrukcji jest zrębowej, z węgłami łączonymi na tzw. rybi ogon, z pozostawieniem około 15 cm ostatków. Naczółkowy dach kryty jest strzechą. Budynek charakteryzuje się nadwieszonym szczytem, wysuniętym poza lico ściany o około 20 cm, oszalowanym w "jodełkę".
 Obora, przeniesiona ze wsi Kampinos (Bugaj), umiejscowiona szczytem do drogi. Konstrukcji jest zrębowej, o dachu dwuspadowym krytym strzechą.
 Stodoła, przeniesiona ze wsi Kampinos (Bugaj), umiejscowiona frontem do drogi. Obiekt z lat międzywojennych, konstrukcji szkieletowej (słupowo-ryglowej) oszalowanej pionowo deskami, o dachu dwuspadowym, krytym strzechą, jest przykładem stodoły najnowszego typu, reprezentującego ostatnią fazę rozwiniętego budownictwa drewnianego z terenu Puszczy.
 Spichlerz drewniany, wybudowany około 1880 roku w Kownacicy (powiat garwoliński), a w 1938 przeniesiony do Błonia (dzielnica Osiek). Do skansenu wytypowany jako jedyny tego typu zachowany obiekt w okolicy Puszczy. Wąskofrontowy, konstrukcji zrębowej, z niewielkimi ostatkami (zrąb topolowy). Dwuspadowy dach kryty strzechą tworzy od frontowej części spichlerza charakterystyczny podcień, oparty na dwóch belkach, osadzonych w przedłużonych poza lico ściany podwalinach.
 Rekonstrukcja szopy (drewutni), konstrukcji szkieletowej, o dachu czterospadowym, krytym strzechą. Posadowiona jest blisko (ok. 1 m) spichlerza.

Zagroda Połcia

Trzecia zagroda, "Połcia", nie przewidziana pierwotnie na cele ekspozycji, umiejscowiona jest oddzielnie, w strefie zaplecza usługowego projektowanego skansenu. Mimo że zlokalizowana została poza granicą właściwego terenu ekspozycji, zaaranżowana miała być na zagrodę tzw. biedniacką, odpowiadającą charakterem skromnej chałupie. Dom Tomasza Połcia przeniesiono z pobliskiej osady i posadowiono w tym miejscu w 1985 roku. Jako że decyzja o przeniesieniu domu podjęta została przed przystąpieniem do projektowania wstępnej koncepcji parku etnograficznego w Granicy, zlokalizowany on został tak, aby nie kolidować z przyszłym zagospodarowaniem skansenu, a jednocześnie móc pełnić rolę małego punktu gastronomicznego, zaplecza administracyjnego obsługi skansenu bądź punktu sprzedaży biletów, przewodników i folderów. Obecnie zabudowania zagrody stanowią:
 Dom mieszkalny, przeniesiony w 1985 roku z tej samej wsi (grunty zajęte przez skansen leżą po wschodniej stronie szosy Komorów-Granica, zabudowania właściwej wsi – po zachodniej). Chałupę tę wybudowano w 1911 roku z wykorzystaniem budulca większego domu, powstałego około roku 1880. W 1973 roku została ona wykupiona przez Kampinoski Park Narodowy i do momentu translokacji stała pusta. Jest konstrukcji zrębowej, o dachu naczółkowym krytym strzechą. Spośród obiektów skansenu wyróżnia się bielonym z zewnątrz zrębem.
 Obora, przeniesiona ze wsi Kampinos, konstrukcji mieszanej. Większość budynku wykonana jest techniką zrębową. Północna jego część zbudowana jest w konstrukcji słupowo-ryglowej, oszalowanej pionowo deskami, z wyjątkiem frontowej, zachodniej części, która pozostała otwarta (brak tam także środkowego słupa i rygla), umożliwiając wjazd do tak urządzonej wozowni. Dach obory jest dwuspadowy, kryty strzechą.

Kampinoski Park Narodowy
Granica (powiat warszawski zachodni)
Granica

redpajama_set_name: RedPajamaWikipedia


Maya Moore is already taking over the WNBA, the expected No. 1 draft pick's debut with the Minnesota Lynx will be the actual opener of the league's 15th season on June 3 in Los Angeles. The matchup also marks the expected return of 2008 Rookie of the Year, Candace Parker, who underwent shoulder surgery last summer.
Seattle will get its championship pageantry on June 4 at noon when it hosts Phoenix at KeyArena on ABC. Moore and what looks to be a scary Lynx team travels to town on June 9 — further testing the Storm's undefeated record at home.
The Storm will play on national television five times this season and 10 of their 17 home matchups fall on weekend dates, including the Aug. 13 rematch with Eastern Conference champ Atlanta. The Storm swept the Dream in the WNBA Finals.
Based on last season, Seattle does get a break in Western conference matchups. The Storm will play Tulsa and San Antonio five times, going a combined UPDATE 7-1 against the Shock and Silver Stars in 2010. Seattle plays Phoenix, Minnesota, and Los Angeles four times apiece due to there being 12 teams in the WNBA.
Playoff dates and the All-Star game haven't been finalized.
#Denotes nationally broadcast games on ABC.


Winnebago County was named to honor the Winnebago Indian tribe that resided in the area.
The county was established in the year 1851. The earliest white settler of Winnebago County was George W. Thomas in 1855. In the fall of 1857 Robert Clark was appointed as county judge, C.H. Day as recorder and treasurer, B.F. Denslow as the clerk of court, John S. Blowers as sheriff, and C.W. Scott as the superintendent of schools and surveyor.
The first and only county seat of Winnebago County is Forest City. Forest City was platted in 1856 by Robert Clark. It was named because of the plentiful amount of timber found in the area.
The first courthouse was located on the courthouse square. It was a log cabin that consisted of two rooms. A petition was circulated in 1860 for a larger, more appropriate structure. Shortly after, $20,000 in bonds was sold for the construction of a new building. Conservative members of the board opposed such an expensive building. Consequently, a less expensive building was built.
This courthouse was replaced in 1896 with a Romanesque style building made of red brick and trimmed with stone constructed by Kinney & Orth and contractor F.A. Gross. At a cost of $20,496 the construction of this building was completed on January 6, 1897.
According to the United States Census Bureau, Winnebago County has a total area of 402 square miles of which 400 square miles are land and 1 square mile is water, and the population of the county was 10,602 in the year 2009.


text:
The Gospel of generosity: Study finds Scripture-engaged Americans are among most generous
Jack Fowler
Americans who consistently engaged with Scripture gave $145 billion to charity in 2021, says new study from American Bible Society.
"People find a sense of meaning when they give to a cause they believe in," says Dr. John Farquhar Plake, co-author of the American Bible Society's new study, State of the Bible, which explores the idea that actively reading the Bible moves people to give and support causes they believe in.
Highlighting cultural trends in the U.S. regarding spirituality and Scripture engagement, the study shows that Americans who consistently read and apply the Bible's message—those who are "Scripture Engaged"—gave $145 billion to charitable causes in 2021. This estimated total is more than three times the amount given by those who are not reading the Bible, meaning that 44 cents of every dollar given to charity in America comes from individuals who are actively and consistently engaging with the Bible.
Plake, the Society's Vice President of Ministry Insights and Innovation, says the findings confirm a trend, showing a strong correlation between charitable giving and human flourishing, and that active engagement with the Bible leads to greater hope and resilience. Nearly three out of five Scripture-engaged Americans in 2021 reported giving at a higher level than their counterparts, those who less frequently open their Bibles. The study also finds that not only do those engaged with the Bible give more in general; they donate 13 times more than others to non-church charities.
While the last three years of lockdowns and pandemic restrictions have resulted in less giving in America, Plake argues the real surprise is that, despite the associated hardships, so many people chose to continue giving. The Lilly Family School of Philanthropy reported the total amount given among Americans in 2021 was at $484.85 billion, including $326.87 billion from individuals, resulting in a 3-percent rise from the previous year. As people lost jobs, closed businesses, and cut their working hours and spending throughout the Covid-19 pandemic, the data shows that they did not short-change charity. Even as churches were forced to close or move online, people continued giving.
Concerning generational trends, State of the Bible researchers found that older people are more likely to give: five out of six Elders—aged 77 or older–give to charity, compared to only half of Generation Z (ages 18-26). The study finds that between each generation there is a clear "stair step effect" that increases the total proportion of givers, which can be attributed in part to age-based income levels. As for Generation X—those born between 1965-1980—the evidence shows that while it has the highest income nationally, it gives less than the older generations, suggesting there may be a cultural commitment to supporting charitable organizations or churches that is not yet ingrained in younger generations.
Plake believes that perhaps two things are true: charity creates a feeling of hope, flourishing, and purpose—and that those who are flourishing and hopeful desire to share their resources with others. Whichever perspective one takes from the data, he says, the evidence seems clear: People live well when they give well.
The State of the Bible 2022 findings come from a survey in January 2022 conducted by American Bible Society in collaboration with NORC at the University of Chicago, which produced 2,598 online or telephone responses from American adults in all 50 states and the District of Columbia.
MORE FROM Jack Fowler:
The scoop from the roof
Jack Fowler / 3 min read
SCOTUS stays New York Court ruling restricting Yeshiva University's religious identity
Tidings from Gates's latest transfer of wealth


text:
package main

import (
    "fmt"
    "os"
    "flag"
    "encoding/xml"
    "encoding/csv"
    "bytes"
    "text/template"
    "text/tabwriter"
)

type Line struct {
    Value string `xml:",chardata"`
    Header string `xml:"header,attr"`
}

type TemplateConfig struct {
    Name string `xml:"name,attr"`
    Lines []Line `xml:"Lines>Line"`
}

type FileConfig struct {
    Name string `xml:"name,attr"`
    TemplateName string `xml:"templateName,attr"`
    Skip int `xml:"skip,attr"`
}

type Config struct {
    TemplateConfig []TemplateConfig
    FileConfig []FileConfig
}

func PadBefore(s string,i int) string {
    if s=="" {
        return ""
    }

    for j:=0; j<i; j=j+1 {
        s=" " + s
    }
    return s
}

func makeTemplates(t *[]TemplateConfig) (*template.Template,error) {
    var textTemplates *template.Template
    var err error
    templateFuncs := template.FuncMap{"padBefore":PadBefore}
    for i,templateConfig := range *t {
        t:=""
        h:=""
        for i,l:=range templateConfig.Lines {
            if i>0 {t=t+"\t";h=h+"\t"}
            t=t+l.Value
            h=h+l.Header
        }

        // Template proper
        if i==0 {
            textTemplates,err=template.New(templateConfig.Name).Funcs(templateFuncs).Parse(t)
        } else {
            textTemplates,err=textTemplates.New(templateConfig.Name).Funcs(templateFuncs).Parse(t)
        }

        // Template header
        textTemplates,err=textTemplates.New(templateConfig.Name + "_H").Funcs(templateFuncs).Parse(h)

        if err!=nil {break}
    }
    return textTemplates,err
}

func makeTemplateContext(r *[]string) (map[string]string) {
    context:=make(map[string]string,len(*r))
    for i,v:=range *r {
        // i starts at 0, but we want to start with A which is 65.
        context["c"+string(i+65)]=v
    }
    return context
}

func processHeader(fc FileConfig, t *template.Template) () {
        // in file
    iFile,err := os.Open(fc.Name)
    if err!=nil {panic("Can't open " + fc.Name)}
    defer iFile.Close()

    r := csv.NewReader(iFile)
    r.Comma = '\t'
    r.TrailingComma = true
    record,err:=r.Read()
    fmt.Println("File: ",fc.Name)
    w:= new(tabwriter.Writer)
    w.Init(os.Stdout, 0, 8, 0, '\t', tabwriter.Debug)
    t.ExecuteTemplate(w,fc.TemplateName+"_H",makeTemplateContext(&record))
    w.Write([]byte("\n"))
    t.ExecuteTemplate(w,fc.TemplateName,makeTemplateContext(&record))
    w.Flush()
    fmt.Println("")
}

func processFile(fc FileConfig, t *template.Template) () {
    // in file
    iFile,err := os.Open(fc.Name)
    if err!=nil {panic("Can't open " + fc.Name)}
    defer iFile.Close()

    // out file
    oFile,err := os.Create(fc.Name + "_out.txt")
    if err!=nil {panic("Can't open/write to " + fc.Name + "_out.txt")}
    defer oFile.Close()

    r := csv.NewReader(iFile)
    r.Comma = '\t'
    r.TrailingComma = true
    record,err:=r.Read()

    for i:=0;err==nil;record,err=r.Read() {
        if i==0 {
            t.ExecuteTemplate(oFile,fc.TemplateName+"_H",makeTemplateContext(&record))
        }
        i=i+1
        if i <= fc.Skip {continue}
        oFile.Write([]byte("\n"))
        t.ExecuteTemplate(oFile,fc.TemplateName,makeTemplateContext(&record))
    }
    fmt.Println(err)
    oFile.Sync()
}

func main() {
    var (
        config Config
    )

    configFileName := flag.String("config", "","Config file")
    headerReport := flag.Bool("headerReport", false,"Produce a report of header mappings")
    flag.Parse()

    configFile, err := os.Open(*configFileName)
    if err != nil {
        fmt.Println("Error opening config:", err)
        return
    }
    defer configFile.Close()
    configBuf := new(bytes.Buffer)
    configBuf.ReadFrom(configFile)
    xml.Unmarshal(configBuf.Bytes(),&config)

    // Parse templates
    textTemplates,err := makeTemplates(&config.TemplateConfig)
    if(err!=nil){panic(err)}

    // Process each input file config
    for _,fileConfig := range config.FileConfig {
        if *headerReport {
            processHeader(fileConfig,textTemplates)
            continue
        }
        processFile(fileConfig,textTemplates)
    }
}


Milan, Italy – 19 March, 2015 – the first release of video news by EWT World is now available for watching on EWT World News Channel, which is currently hosted on YouTube (click https://www.youtube.com/watch?v=S7KAj1NBGwo to watch the news release). Following the roadmap of developing its public exposure and building brand recognition, in its first video news release EWT World goes in detail about environmental ideas which laid the foundation for the educational and investment platform. Video news releases are scheduled for regular appearance on YouTube and will be covering the events and activities happening inside EWT World community, featuring interviews with scientists, seawater desalination industry experts, engineers, and prominent figures of political forces.
With the introduction of EWT World News Channel the social media campaign goes to the next level in its long-term goal to raise public awareness of the water crisis which potentially threatens half of the world population.
EWT News Channel keeps commenting option open to let people freely discuss the studio's approach to presentation, ask questions, and make suggestions as to what needs to be highlighted in the upcoming news releases. In the first news release EWT is asking people to make their guesses about the name o the company is the contractor for the media event.
EWT World News Channel is meant to increase the visibility of the educational platform, while offering incentives to active followers who spend time spreading the environmental knowledge. Starting Friday, March 13th daily Bitcoin giveaways are available on EWT blog. Each day at least 1 mBTC (100,000 Satoshi) will be hidden in a 'cash-link' placed randomly in on of the articles. 'Cash-links' are regular hyperlinks created with the help of the tipping service ChangeTip and available for instant withdrawal. The first to click the 'cash-link' receives the full amount of Bitcoins. A free account at ChangeTip is required in order to participate. With this step EWT World expects to reach to the frequent visitors of the so called 'Bitcoin faucets'.
EWT World is a global educational and investment platform launched in response to a contest held by Earth & Water Technologies, a global leader in design and construction of seawater desalination plants. The core strategy development and management of EWT World takes place in Milan, Italy, though many part-time employees and volunteers are involved remotely.