{"action":"created","comment":{"url":"https://api.github.com/repos/NREL/EnergyPlus/pulls/comments/31845391","id":31845391,"diff_hunk":"@@ -1,129 +1,53 @@\n #ifndef Pipes_hh_INCLUDED\n #define Pipes_hh_INCLUDED\n \n+// C++ headers\n+#include <memory>\n+#include <string>\n+\n // ObjexxFCL Headers\n #include <ObjexxFCL/Array1D.hh>\n \n // EnergyPlus Headers\n #include <EnergyPlus.hh>\n #include <DataGlobals.hh>\n+#include <PlantComponent.hh>\n \n namespace EnergyPlus {\n \n namespace Pipes {\n \n-\t// Using/Aliasing\n-\n-\t// Data\n-\t// MODULE PARAMETER DEFINITIONS\n-\t// na\n-\n-\t// DERIVED TYPE DEFINITIONS\n-\n-\t// MODULE VARIABLE DECLARATIONS:\n-\n-\textern int NumLocalPipes;\n-\textern bool GetPipeInputFlag;\n-\n-\t// SUBROUTINE SPECIFICATIONS FOR MODULE Pipe\n-\n-\t// Types\n-\n-\tstruct LocalPipeData\n+\tclass LocalPipeData : public PlantComponent\n \t{\n+\tpublic:\n \t\t// Members\n-\t\tstd::string Name; // main plant (cooling) loop ID\n-\t\tint TypeOf; // type of pipe\n \t\tint InletNodeNum; // Node number on the inlet side of the plant\n \t\tint OutletNodeNum; // Node number on the inlet side of the plant\n \t\tint LoopNum; // Index of plant loop where this pipe resides\n \t\tint LoopSide; // Index of plant loop side where this pipe resides\n \t\tint BranchIndex; // Index of plant Branch index where this pipe resides\n \t\tint CompIndex; // Index of plant Comp index where this pipe resides\n-\t\tbool OneTimeInit;\n-\t\tbool CheckEquipName;\n-\t\tbool EnvrnFlag;\n \n \t\t// Default Constructor\n \t\tLocalPipeData() :\n-\t\t\tTypeOf( 0 ),\n \t\t\tInletNodeNum( 0 ),\n \t\t\tOutletNodeNum( 0 ),\n \t\t\tLoopNum( 0 ),\n \t\t\tLoopSide( 0 ),\n \t\t\tBranchIndex( 0 ),\n-\t\t\tCompIndex( 0 ),\n-\t\t\tOneTimeInit( true ),\n-\t\t\tCheckEquipName( true ),\n-\t\t\tEnvrnFlag( true )\n+\t\t\tCompIndex( 0 )\n \t\t{}\n \n-\t\t// Member Constructor\n-\t\tLocalPipeData(\n-\t\t\tstd::string const & Name, // main plant (cooling) loop ID\n-\t\t\tint const TypeOf, // type of pipe\n-\t\t\tint const InletNodeNum, // Node number on the inlet side of the plant\n-\t\t\tint const OutletNodeNum, // Node number on the inlet side of the plant\n-\t\t\tint const LoopNum, // Index of plant loop where this pipe resides\n-\t\t\tint const LoopSide, // Index of plant loop side where this pipe resides\n-\t\t\tint const BranchIndex, // Index of plant Branch index where this pipe resides\n-\t\t\tint const CompIndex, // Index of plant Comp index where this pipe resides\n-\t\t\tbool const OneTimeInit,\n-\t\t\tbool const CheckEquipName,\n-\t\t\tbool const EnvrnFlag\n-\t\t) :\n-\t\t\tName( Name ),\n-\t\t\tTypeOf( TypeOf ),\n-\t\t\tInletNodeNum( InletNodeNum ),\n-\t\t\tOutletNodeNum( OutletNodeNum ),\n-\t\t\tLoopNum( LoopNum ),\n-\t\t\tLoopSide( LoopSide ),\n-\t\t\tBranchIndex( BranchIndex ),\n-\t\t\tCompIndex( CompIndex ),\n-\t\t\tOneTimeInit( OneTimeInit ),\n-\t\t\tCheckEquipName( CheckEquipName ),\n-\t\t\tEnvrnFlag( EnvrnFlag )\n-\t\t{}\n+\t\tstatic std::shared_ptr<PlantComponent> pipeFactory( std::string objectName );\n+\t\tint performEveryTimeInit();\n+\t\tint performOneTimeInit();\n+\t\tint performBeginEnvrnInit();\n+\t\tint simulate();\n \n \t};\n \n \t// Object Data\n-\textern Array1D< LocalPipeData > LocalPipe; // dimension to number of pipes\n-\n-\t// Functions\n-\n-\tvoid\n-\tSimPipes(\n-\t\tint const CompType,\n-\t\tstd::string & PipeName,\n-\t\tint & CompIndex,\n-\t\tReal64 const MaxVolFlowRate,\n-\t\tbool const InitLoopEquip,\n-\t\tbool const FirstHVACIteration\n-\t);\n-\n-\t// End Plant Loop Module Driver Subroutines\n-\t//******************************************************************************\n-\n-\t// Beginning of Plant Loop Module Get Input subroutines\n-\t//******************************************************************************\n-\n-\tvoid\n-\tGetPipeInput();\n-\n-\t// End of Get Input subroutines for the Plant Loop Module\n-\t//******************************************************************************\n-\n-\t// Beginning Initialization Section of the Plant Loop Module\n-\t//******************************************************************************\n-\n-\tvoid\n-\tInitializePipes(\n-\t\tint const PipeType, // Type of Pipe\n-\t\tstd::string const & PipeName, // Name of Pipe\n-\t\tint & PipeNum, // Index into pipe structure for name\n-\t\tReal64 const MaxVolFlowRate // unused at present time\n-\t);\n+\textern Array1D< std::shared_ptr< LocalPipeData > > LocalPipe; // dimension to number of pipes","path":"src/EnergyPlus/Pipes.hh","position":141,"original_position":140,"commit_id":"beefcbbbc30202c1cb2ec7134847a0fb547362f4","original_commit_id":"ac35d365441e199f17919432b50262aa19c19924","user":{"login":"DeadParrot","id":993517,"avatar_url":"https://avatars.githubusercontent.com/u/993517?v=3","gravatar_id":"","url":"https://api.github.com/users/DeadParrot","html_url":"https://github.com/DeadParrot","followers_url":"https://api.github.com/users/DeadParrot/followers","following_url":"https://api.github.com/users/DeadParrot/following{/other_user}","gists_url":"https://api.github.com/users/DeadParrot/gists{/gist_id}","starred_url":"https://api.github.com/users/DeadParrot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DeadParrot/subscriptions","organizations_url":"https://api.github.com/users/DeadParrot/orgs","repos_url":"https://api.github.com/users/DeadParrot/repos","events_url":"https://api.github.com/users/DeadParrot/events{/privacy}","received_events_url":"https://api.github.com/users/DeadParrot/received_events","type":"User","site_admin":false},"body":"@jasondegraw This is a good debate to have now (or a year ago ;-). I think it is hard to work on a code that is partly 0-based and partly 1-based and, while you may be comfortable with 0-based, I have worked with groups transitioning from Fortran and 0-based is a big source of grief (and bugs). But, happily, the collection framework, like the Arrays, does both:\r\n```\r\ncollection(1); // First element\r\ncollection[0]; // First element\r\n```\r\nYes, this can be another source of confusion without good communication, but it does let you go with 1-based for now and switch down the road. And it would take about 3 minutes to make the collections do everything 0-based, so let's get this debated and decided!","created_at":"2015-06-05T19:47:30Z","updated_at":"2015-06-05T19:47:30Z","html_url":"https://github.com/NREL/EnergyPlus/pull/4945#discussion_r31845391","pull_request_url":"https://api.github.com/repos/NREL/EnergyPlus/pulls/4945","_links":{"self":{"href":"https://api.github.com/repos/NREL/EnergyPlus/pulls/comments/31845391"},"html":{"href":"https://github.com/NREL/EnergyPlus/pull/4945#discussion_r31845391"},"pull_request":{"href":"https://api.github.com/repos/NREL/EnergyPlus/pulls/4945"}}},"pull_request":{"url":"https://api.github.com/repos/NREL/EnergyPlus/pulls/4945","id":36532623,"html_url":"https://github.com/NREL/EnergyPlus/pull/4945","diff_url":"https://github.com/NREL/EnergyPlus/pull/4945.diff","patch_url":"https://github.com/NREL/EnergyPlus/pull/4945.patch","issue_url":"https://api.github.com/repos/NREL/EnergyPlus/issues/4945","number":4945,"state":"open","locked":false,"title":"Create simulate-able base class for plant (HVAC?) components","user":{"login":"Myoldmopar","id":849824,"avatar_url":"https://avatars.githubusercontent.com/u/849824?v=3","gravatar_id":"","url":"https://api.github.com/users/Myoldmopar","html_url":"https://github.com/Myoldmopar","followers_url":"https://api.github.com/users/Myoldmopar/followers","following_url":"https://api.github.com/users/Myoldmopar/following{/other_user}","gists_url":"https://api.github.com/users/Myoldmopar/gists{/gist_id}","starred_url":"https://api.github.com/users/Myoldmopar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Myoldmopar/subscriptions","organizations_url":"https://api.github.com/users/Myoldmopar/orgs","repos_url":"https://api.github.com/users/Myoldmopar/repos","events_url":"https://api.github.com/users/Myoldmopar/events{/privacy}","received_events_url":"https://api.github.com/users/Myoldmopar/received_events","type":"User","site_admin":false},"body":"## Overview\r\nA new base class is created for objects that are called to simulate by plant.  The plant data structure is expanded to include a shared pointer to an instance of this base class.  This is shared because the component can be called (Sim*()) at different locations in plant, so the shared pointer simply calls the same Sim* as before.  Components (right now only pipes) are modified to derive from the base class and work with the virtual methods defined in the base class.  Investigation will be performed to see how far this can be pushed (all HVAC components? other?)\r\n\r\nSeveral things modified here, described in the order they are shown below at the time of this writing.\r\n\r\n### DataPlant.hh\r\n- Added a shared pointer to the plant component structure that will point to a \"PlantComponent\" instance \r\n- Cleaned up a bunch of unused member constructors in DataPlant\r\n\r\n### Pipes.cc\r\n- Modified the Pipes code significantly:\r\n  - Component array is now an array of shared pointers to the LocalPipeData _class_, which derives from the PlantComponent base class\r\n  - _Construction_ is handled by a factory which is a static class method in LocalPipeData, and only constructs a _single_ pipe with a name passed in as the only factory argument\r\n  - The factory has 2 purposes:\r\n    - Instantiate a shared pointer to a LocalPipeData instance and add it to the local component array\r\n    - Return a shared pointer to the same data but polymorphed into the PlantComponent base class, which is stored by the plant for calling later\r\n- Extracted out all the different levels of initialization into separate functions:\r\n  - Every-time initialization\r\n  - One-time initialization\r\n- Extracted out the simulation calculations into a separate simulate() function\r\n\r\n### Pipes.hh\r\n- Changed pipe struct into a class that derives from the new PlantComponent base class\r\n- Changed main component array to store shared pointers instead of actual object instances\r\n- Moved functions from global into actual class methods _completely_, although the factory method is still static...on purpose\r\n\r\n### PlantComponent.hh\r\n- This is a brand new file, and will be in flux for a little while\r\n- It basically defines the interface (pure virtual base class) for components being called to simulate _from plant_\r\n- It could be generalized to other HVAC components as well, but maybe it is better to keep it a little lower scope\r\n\r\n### PlantLoopEquip.hh\r\n- Only modified the pipes section...this is **key** in how I am doing this because it can be done one-by-one until all the components are complete\r\n- Initially this will make it somewhat bulkier, but once everything is done this will be **so** much cleaner\r\n- For pipes, I operate directly on the component pointer in the plant data structure, instead of calling global functions and passing in arguments.  \r\n- Right now, the checks for one-time init and envrn-inits happen as each component is called, but once this whole thing gets pushed to all the components, we won't have to do these checks on each component, and we will finally get a performance boost out of this.\r\n- Even with these checks remaining _as they are now_, we are still getting a miniscule boost because the components are not checking _GetInput?_ every single time Sim* is called.\r\n\r\n### PlantManager.cc\r\n- When the plant is building up the loop topology and assigning type of numbers, etc., it now calls the new pipe factory method also.  This returns the shared pointer to the plant component so that it can be called later (in PlantLoopEquip above).  \r\n\r\n## So what's the plan?\r\n- This method is nice because it can be implemented gradually without a one-all breaking of the code/solver.  It also should produce no -- or _extremely_ small -- diffs.\r\n- To add more plant components, the following steps are to be taken:\r\n  - Convert the component class to derive from the PlantComponent base class\r\n  - Extract out the initialization/simulation/construction pieces into the appropriate virtual methods\r\n  - Modify PlantManager so that the compPtr will be created and available\r\n  - Modify PlantLoopEquip to take advantage of this base class\r\n\r\n## ToDo:\r\n- [x] Pull out the logic in PlantLoopEquip for the pipes into a small worker function that can be reused\r\n- [ ] Re-implement name verification in the component construction\r\n- This should work out of the box for singly-connected plant components.  Test out for a few types of mroe complex plant components:\r\n  - [ ] Plant to plant (water cooled chiller) -- should work, except that we might need to add an argument to Sim* to state where we are calling from (which branch/comp/etc.)\r\n  - [ ] Plant to plant to plant (add heat recovery)\r\n  - [ ] Plant to air (chilled water coil) -- we only manage the interface to the plant, but there could be complications...","created_at":"2015-05-29T18:31:55Z","updated_at":"2015-06-05T19:47:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3009fa54f5ab5000b47f08000be59c2c982879be","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/NREL/EnergyPlus/pulls/4945/commits","review_comments_url":"https://api.github.com/repos/NREL/EnergyPlus/pulls/4945/comments","review_comment_url":"https://api.github.com/repos/NREL/EnergyPlus/pulls/comments{/number}","comments_url":"https://api.github.com/repos/NREL/EnergyPlus/issues/4945/comments","statuses_url":"https://api.github.com/repos/NREL/EnergyPlus/statuses/beefcbbbc30202c1cb2ec7134847a0fb547362f4","head":{"label":"NREL:PullLogicFromPlantComponents","ref":"PullLogicFromPlantComponents","sha":"beefcbbbc30202c1cb2ec7134847a0fb547362f4","user":{"login":"NREL","id":1906800,"avatar_url":"https://avatars.githubusercontent.com/u/1906800?v=3","gravatar_id":"","url":"https://api.github.com/users/NREL","html_url":"https://github.com/NREL","followers_url":"https://api.github.com/users/NREL/followers","following_url":"https://api.github.com/users/NREL/following{/other_user}","gists_url":"https://api.github.com/users/NREL/gists{/gist_id}","starred_url":"https://api.github.com/users/NREL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NREL/subscriptions","organizations_url":"https://api.github.com/users/NREL/orgs","repos_url":"https://api.github.com/users/NREL/repos","events_url":"https://api.github.com/users/NREL/events{/privacy}","received_events_url":"https://api.github.com/users/NREL/received_events","type":"Organization","site_admin":false},"repo":{"id":14620185,"name":"EnergyPlus","full_name":"NREL/EnergyPlus","owner":{"login":"NREL","id":1906800,"avatar_url":"https://avatars.githubusercontent.com/u/1906800?v=3","gravatar_id":"","url":"https://api.github.com/users/NREL","html_url":"https://github.com/NREL","followers_url":"https://api.github.com/users/NREL/followers","following_url":"https://api.github.com/users/NREL/following{/other_user}","gists_url":"https://api.github.com/users/NREL/gists{/gist_id}","starred_url":"https://api.github.com/users/NREL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NREL/subscriptions","organizations_url":"https://api.github.com/users/NREL/orgs","repos_url":"https://api.github.com/users/NREL/repos","events_url":"https://api.github.com/users/NREL/events{/privacy}","received_events_url":"https://api.github.com/users/NREL/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/NREL/EnergyPlus","description":"","fork":false,"url":"https://api.github.com/repos/NREL/EnergyPlus","forks_url":"https://api.github.com/repos/NREL/EnergyPlus/forks","keys_url":"https://api.github.com/repos/NREL/EnergyPlus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/NREL/EnergyPlus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/NREL/EnergyPlus/teams","hooks_url":"https://api.github.com/repos/NREL/EnergyPlus/hooks","issue_events_url":"https://api.github.com/repos/NREL/EnergyPlus/issues/events{/number}","events_url":"https://api.github.com/repos/NREL/EnergyPlus/events","assignees_url":"https://api.github.com/repos/NREL/EnergyPlus/assignees{/user}","branches_url":"https://api.github.com/repos/NREL/EnergyPlus/branches{/branch}","tags_url":"https://api.github.com/repos/NREL/EnergyPlus/tags","blobs_url":"https://api.github.com/repos/NREL/EnergyPlus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/NREL/EnergyPlus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/NREL/EnergyPlus/git/refs{/sha}","trees_url":"https://api.github.com/repos/NREL/EnergyPlus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/NREL/EnergyPlus/statuses/{sha}","languages_url":"https://api.github.com/repos/NREL/EnergyPlus/languages","stargazers_url":"https://api.github.com/repos/NREL/EnergyPlus/stargazers","contributors_url":"https://api.github.com/repos/NREL/EnergyPlus/contributors","subscribers_url":"https://api.github.com/repos/NREL/EnergyPlus/subscribers","subscription_url":"https://api.github.com/repos/NREL/EnergyPlus/subscription","commits_url":"https://api.github.com/repos/NREL/EnergyPlus/commits{/sha}","git_commits_url":"https://api.github.com/repos/NREL/EnergyPlus/git/commits{/sha}","comments_url":"https://api.github.com/repos/NREL/EnergyPlus/comments{/number}","issue_comment_url":"https://api.github.com/repos/NREL/EnergyPlus/issues/comments{/number}","contents_url":"https://api.github.com/repos/NREL/EnergyPlus/contents/{+path}","compare_url":"https://api.github.com/repos/NREL/EnergyPlus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/NREL/EnergyPlus/merges","archive_url":"https://api.github.com/repos/NREL/EnergyPlus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/NREL/EnergyPlus/downloads","issues_url":"https://api.github.com/repos/NREL/EnergyPlus/issues{/number}","pulls_url":"https://api.github.com/repos/NREL/EnergyPlus/pulls{/number}","milestones_url":"https://api.github.com/repos/NREL/EnergyPlus/milestones{/number}","notifications_url":"https://api.github.com/repos/NREL/EnergyPlus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/NREL/EnergyPlus/labels{/name}","releases_url":"https://api.github.com/repos/NREL/EnergyPlus/releases{/id}","created_at":"2013-11-22T14:47:34Z","updated_at":"2015-06-05T07:03:28Z","pushed_at":"2015-06-05T17:09:34Z","git_url":"git://github.com/NREL/EnergyPlus.git","ssh_url":"git@github.com:NREL/EnergyPlus.git","clone_url":"https://github.com/NREL/EnergyPlus.git","svn_url":"https://github.com/NREL/EnergyPlus","homepage":null,"size":417164,"stargazers_count":52,"watchers_count":52,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":38,"mirror_url":null,"open_issues_count":407,"forks":38,"open_issues":407,"watchers":52,"default_branch":"develop"}},"base":{"label":"NREL:develop","ref":"develop","sha":"73f75ae3ba2eed0b73b8c0227a1f3c7f2ee5181e","user":{"login":"NREL","id":1906800,"avatar_url":"https://avatars.githubusercontent.com/u/1906800?v=3","gravatar_id":"","url":"https://api.github.com/users/NREL","html_url":"https://github.com/NREL","followers_url":"https://api.github.com/users/NREL/followers","following_url":"https://api.github.com/users/NREL/following{/other_user}","gists_url":"https://api.github.com/users/NREL/gists{/gist_id}","starred_url":"https://api.github.com/users/NREL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NREL/subscriptions","organizations_url":"https://api.github.com/users/NREL/orgs","repos_url":"https://api.github.com/users/NREL/repos","events_url":"https://api.github.com/users/NREL/events{/privacy}","received_events_url":"https://api.github.com/users/NREL/received_events","type":"Organization","site_admin":false},"repo":{"id":14620185,"name":"EnergyPlus","full_name":"NREL/EnergyPlus","owner":{"login":"NREL","id":1906800,"avatar_url":"https://avatars.githubusercontent.com/u/1906800?v=3","gravatar_id":"","url":"https://api.github.com/users/NREL","html_url":"https://github.com/NREL","followers_url":"https://api.github.com/users/NREL/followers","following_url":"https://api.github.com/users/NREL/following{/other_user}","gists_url":"https://api.github.com/users/NREL/gists{/gist_id}","starred_url":"https://api.github.com/users/NREL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NREL/subscriptions","organizations_url":"https://api.github.com/users/NREL/orgs","repos_url":"https://api.github.com/users/NREL/repos","events_url":"https://api.github.com/users/NREL/events{/privacy}","received_events_url":"https://api.github.com/users/NREL/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/NREL/EnergyPlus","description":"","fork":false,"url":"https://api.github.com/repos/NREL/EnergyPlus","forks_url":"https://api.github.com/repos/NREL/EnergyPlus/forks","keys_url":"https://api.github.com/repos/NREL/EnergyPlus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/NREL/EnergyPlus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/NREL/EnergyPlus/teams","hooks_url":"https://api.github.com/repos/NREL/EnergyPlus/hooks","issue_events_url":"https://api.github.com/repos/NREL/EnergyPlus/issues/events{/number}","events_url":"https://api.github.com/repos/NREL/EnergyPlus/events","assignees_url":"https://api.github.com/repos/NREL/EnergyPlus/assignees{/user}","branches_url":"https://api.github.com/repos/NREL/EnergyPlus/branches{/branch}","tags_url":"https://api.github.com/repos/NREL/EnergyPlus/tags","blobs_url":"https://api.github.com/repos/NREL/EnergyPlus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/NREL/EnergyPlus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/NREL/EnergyPlus/git/refs{/sha}","trees_url":"https://api.github.com/repos/NREL/EnergyPlus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/NREL/EnergyPlus/statuses/{sha}","languages_url":"https://api.github.com/repos/NREL/EnergyPlus/languages","stargazers_url":"https://api.github.com/repos/NREL/EnergyPlus/stargazers","contributors_url":"https://api.github.com/repos/NREL/EnergyPlus/contributors","subscribers_url":"https://api.github.com/repos/NREL/EnergyPlus/subscribers","subscription_url":"https://api.github.com/repos/NREL/EnergyPlus/subscription","commits_url":"https://api.github.com/repos/NREL/EnergyPlus/commits{/sha}","git_commits_url":"https://api.github.com/repos/NREL/EnergyPlus/git/commits{/sha}","comments_url":"https://api.github.com/repos/NREL/EnergyPlus/comments{/number}","issue_comment_url":"https://api.github.com/repos/NREL/EnergyPlus/issues/comments{/number}","contents_url":"https://api.github.com/repos/NREL/EnergyPlus/contents/{+path}","compare_url":"https://api.github.com/repos/NREL/EnergyPlus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/NREL/EnergyPlus/merges","archive_url":"https://api.github.com/repos/NREL/EnergyPlus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/NREL/EnergyPlus/downloads","issues_url":"https://api.github.com/repos/NREL/EnergyPlus/issues{/number}","pulls_url":"https://api.github.com/repos/NREL/EnergyPlus/pulls{/number}","milestones_url":"https://api.github.com/repos/NREL/EnergyPlus/milestones{/number}","notifications_url":"https://api.github.com/repos/NREL/EnergyPlus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/NREL/EnergyPlus/labels{/name}","releases_url":"https://api.github.com/repos/NREL/EnergyPlus/releases{/id}","created_at":"2013-11-22T14:47:34Z","updated_at":"2015-06-05T07:03:28Z","pushed_at":"2015-06-05T17:09:34Z","git_url":"git://github.com/NREL/EnergyPlus.git","ssh_url":"git@github.com:NREL/EnergyPlus.git","clone_url":"https://github.com/NREL/EnergyPlus.git","svn_url":"https://github.com/NREL/EnergyPlus","homepage":null,"size":417164,"stargazers_count":52,"watchers_count":52,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":38,"mirror_url":null,"open_issues_count":407,"forks":38,"open_issues":407,"watchers":52,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/NREL/EnergyPlus/pulls/4945"},"html":{"href":"https://github.com/NREL/EnergyPlus/pull/4945"},"issue":{"href":"https://api.github.com/repos/NREL/EnergyPlus/issues/4945"},"comments":{"href":"https://api.github.com/repos/NREL/EnergyPlus/issues/4945/comments"},"review_comments":{"href":"https://api.github.com/repos/NREL/EnergyPlus/pulls/4945/comments"},"review_comment":{"href":"https://api.github.com/repos/NREL/EnergyPlus/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/NREL/EnergyPlus/pulls/4945/commits"},"statuses":{"href":"https://api.github.com/repos/NREL/EnergyPlus/statuses/beefcbbbc30202c1cb2ec7134847a0fb547362f4"}}}}