{"action":"created","comment":{"url":"https://api.github.com/repos/JGCRI/gcam-doc/pulls/comments/68846040","id":68846040,"diff_hunk":"@@ -0,0 +1,461 @@\n+---\n+layout: index\n+title: GCAM Solver\n+prev: \n+next:\n+current-version: v4.2 \n+---\n+\n+At each time step, GCAM searches for a vector of prices that casue all\n+markets to be cleared and all consistency conditions to be satisfied.\n+The mapping from input prices to output market disequilibria is a\n+vector function $$\\vec y = F(\\vec p)$$.  The GCAM solver is responsible\n+for finding the root of this equation; that is, the point at which\n+$$F(\\vec p) = 0$$.\n+\n+GCAM has several solver algorithms at its disposal. The solver\n+algorithms can be combined so that several of them are used in\n+sequence. The mix of algorithms can be varied from one model timestep\n+to the next and can be customized for markets that require special\n+treatment. Additionally, each solver algorithm has several adjustable\n+parameters that are user configurable. These configuration options are\n+specified in the\n+[solver configuration file](#Solver-Configuration-File).\n+\n+Solver Algorithms\n+-----------------\n+\n+### Bisection Solver\n+\n+#### Description\n+\n+The bisection solver is a multidimensional generalization of of\n+one-dimensional bisection methods. The one-dimensional methods work by\n+first establishing a bracket, identified by a change of sign in\n+$$f(x)$$, around the solution. At each iteration $$f(x)$$ is evaluated\n+at the midpoint of the bracket interval, and the sign of the result\n+tells us which half of the interval contains the solution. The\n+endpoints of the bracket are adjusted to the newly-identified\n+interval, and the iterations continue until the interval is small\n+enough that we have effectively isolated the solution.\n+\n+For a system of equations in multiple dimensions, it is generally not\n+possible to construct a rigorous bracket around a solution. Even if we\n+find two points for which all of the equations in the system have\n+opposite sign, there is no guarantee that a solution exists somewhere\n+on the line connecting the two points. The reason why is that the\n+solution to the equation $$\\vec F(\\vec x) = 0$$ is a single point\n+$$\\vec x_0$$ where all components of $$\\vec F$$ are simultaneously\n+zero. As we move from one of our putative bracket points to the other\n+the overwhelming likelihood is that the components of $$\\vec F$$ will\n+change sign at different places along the path, none of which will be\n+the solution we seek. Thus, in general, bracketing and bisection is\n+not a viable strategy for solving a system of equations.\n+\n+Despite this shortcoming, bisection can often be used to get the\n+solver into the general vicinity of the solution, from which one of the\n+other solvers can easily find it. For initial guesses far from\n+the solution, bisection can often be faster than more sophisticated\n+solution techniques. Moreover, bisection places no conditions on the\n+Jacobian matrix, making it useful for jostling the solver out of","path":"solver.md","position":60,"original_position":60,"commit_id":"69dc04a4b315c56e27b1e9c447e37c62314efbec","original_commit_id":"69dc04a4b315c56e27b1e9c447e37c62314efbec","user":{"login":"rplzzz","id":7209964,"avatar_url":"https://avatars.githubusercontent.com/u/7209964?v=3","gravatar_id":"","url":"https://api.github.com/users/rplzzz","html_url":"https://github.com/rplzzz","followers_url":"https://api.github.com/users/rplzzz/followers","following_url":"https://api.github.com/users/rplzzz/following{/other_user}","gists_url":"https://api.github.com/users/rplzzz/gists{/gist_id}","starred_url":"https://api.github.com/users/rplzzz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rplzzz/subscriptions","organizations_url":"https://api.github.com/users/rplzzz/orgs","repos_url":"https://api.github.com/users/rplzzz/repos","events_url":"https://api.github.com/users/rplzzz/events{/privacy}","received_events_url":"https://api.github.com/users/rplzzz/received_events","type":"User","site_admin":false},"body":"Replaced with \"partial derivatives\", since that gets closer to the heart of the matter.","created_at":"2016-06-28T21:22:04Z","updated_at":"2016-06-28T21:22:04Z","html_url":"https://github.com/JGCRI/gcam-doc/pull/4#discussion_r68846040","pull_request_url":"https://api.github.com/repos/JGCRI/gcam-doc/pulls/4","_links":{"self":{"href":"https://api.github.com/repos/JGCRI/gcam-doc/pulls/comments/68846040"},"html":{"href":"https://github.com/JGCRI/gcam-doc/pull/4#discussion_r68846040"},"pull_request":{"href":"https://api.github.com/repos/JGCRI/gcam-doc/pulls/4"}}},"pull_request":{"url":"https://api.github.com/repos/JGCRI/gcam-doc/pulls/4","id":75380355,"html_url":"https://github.com/JGCRI/gcam-doc/pull/4","diff_url":"https://github.com/JGCRI/gcam-doc/pull/4.diff","patch_url":"https://github.com/JGCRI/gcam-doc/pull/4.patch","issue_url":"https://api.github.com/repos/JGCRI/gcam-doc/issues/4","number":4,"state":"open","locked":false,"title":"Add chapter describing the GCAM solver.","user":{"login":"rplzzz","id":7209964,"avatar_url":"https://avatars.githubusercontent.com/u/7209964?v=3","gravatar_id":"","url":"https://api.github.com/users/rplzzz","html_url":"https://github.com/rplzzz","followers_url":"https://api.github.com/users/rplzzz/followers","following_url":"https://api.github.com/users/rplzzz/following{/other_user}","gists_url":"https://api.github.com/users/rplzzz/gists{/gist_id}","starred_url":"https://api.github.com/users/rplzzz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rplzzz/subscriptions","organizations_url":"https://api.github.com/users/rplzzz/orgs","repos_url":"https://api.github.com/users/rplzzz/repos","events_url":"https://api.github.com/users/rplzzz/events{/privacy}","received_events_url":"https://api.github.com/users/rplzzz/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-06-27T21:09:24Z","updated_at":"2016-06-28T21:22:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"50c526c3d7f230f729bbacbcf48474beb5ed2872","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/JGCRI/gcam-doc/pulls/4/commits","review_comments_url":"https://api.github.com/repos/JGCRI/gcam-doc/pulls/4/comments","review_comment_url":"https://api.github.com/repos/JGCRI/gcam-doc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/JGCRI/gcam-doc/issues/4/comments","statuses_url":"https://api.github.com/repos/JGCRI/gcam-doc/statuses/69dc04a4b315c56e27b1e9c447e37c62314efbec","head":{"label":"JGCRI:gcam-solver","ref":"gcam-solver","sha":"69dc04a4b315c56e27b1e9c447e37c62314efbec","user":{"login":"JGCRI","id":8431983,"avatar_url":"https://avatars.githubusercontent.com/u/8431983?v=3","gravatar_id":"","url":"https://api.github.com/users/JGCRI","html_url":"https://github.com/JGCRI","followers_url":"https://api.github.com/users/JGCRI/followers","following_url":"https://api.github.com/users/JGCRI/following{/other_user}","gists_url":"https://api.github.com/users/JGCRI/gists{/gist_id}","starred_url":"https://api.github.com/users/JGCRI/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JGCRI/subscriptions","organizations_url":"https://api.github.com/users/JGCRI/orgs","repos_url":"https://api.github.com/users/JGCRI/repos","events_url":"https://api.github.com/users/JGCRI/events{/privacy}","received_events_url":"https://api.github.com/users/JGCRI/received_events","type":"Organization","site_admin":false},"repo":{"id":59048576,"name":"gcam-doc","full_name":"JGCRI/gcam-doc","owner":{"login":"JGCRI","id":8431983,"avatar_url":"https://avatars.githubusercontent.com/u/8431983?v=3","gravatar_id":"","url":"https://api.github.com/users/JGCRI","html_url":"https://github.com/JGCRI","followers_url":"https://api.github.com/users/JGCRI/followers","following_url":"https://api.github.com/users/JGCRI/following{/other_user}","gists_url":"https://api.github.com/users/JGCRI/gists{/gist_id}","starred_url":"https://api.github.com/users/JGCRI/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JGCRI/subscriptions","organizations_url":"https://api.github.com/users/JGCRI/orgs","repos_url":"https://api.github.com/users/JGCRI/repos","events_url":"https://api.github.com/users/JGCRI/events{/privacy}","received_events_url":"https://api.github.com/users/JGCRI/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/JGCRI/gcam-doc","description":"Documentation for the GCAM Integrated Assessment model","fork":false,"url":"https://api.github.com/repos/JGCRI/gcam-doc","forks_url":"https://api.github.com/repos/JGCRI/gcam-doc/forks","keys_url":"https://api.github.com/repos/JGCRI/gcam-doc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JGCRI/gcam-doc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JGCRI/gcam-doc/teams","hooks_url":"https://api.github.com/repos/JGCRI/gcam-doc/hooks","issue_events_url":"https://api.github.com/repos/JGCRI/gcam-doc/issues/events{/number}","events_url":"https://api.github.com/repos/JGCRI/gcam-doc/events","assignees_url":"https://api.github.com/repos/JGCRI/gcam-doc/assignees{/user}","branches_url":"https://api.github.com/repos/JGCRI/gcam-doc/branches{/branch}","tags_url":"https://api.github.com/repos/JGCRI/gcam-doc/tags","blobs_url":"https://api.github.com/repos/JGCRI/gcam-doc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JGCRI/gcam-doc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JGCRI/gcam-doc/git/refs{/sha}","trees_url":"https://api.github.com/repos/JGCRI/gcam-doc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JGCRI/gcam-doc/statuses/{sha}","languages_url":"https://api.github.com/repos/JGCRI/gcam-doc/languages","stargazers_url":"https://api.github.com/repos/JGCRI/gcam-doc/stargazers","contributors_url":"https://api.github.com/repos/JGCRI/gcam-doc/contributors","subscribers_url":"https://api.github.com/repos/JGCRI/gcam-doc/subscribers","subscription_url":"https://api.github.com/repos/JGCRI/gcam-doc/subscription","commits_url":"https://api.github.com/repos/JGCRI/gcam-doc/commits{/sha}","git_commits_url":"https://api.github.com/repos/JGCRI/gcam-doc/git/commits{/sha}","comments_url":"https://api.github.com/repos/JGCRI/gcam-doc/comments{/number}","issue_comment_url":"https://api.github.com/repos/JGCRI/gcam-doc/issues/comments{/number}","contents_url":"https://api.github.com/repos/JGCRI/gcam-doc/contents/{+path}","compare_url":"https://api.github.com/repos/JGCRI/gcam-doc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JGCRI/gcam-doc/merges","archive_url":"https://api.github.com/repos/JGCRI/gcam-doc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JGCRI/gcam-doc/downloads","issues_url":"https://api.github.com/repos/JGCRI/gcam-doc/issues{/number}","pulls_url":"https://api.github.com/repos/JGCRI/gcam-doc/pulls{/number}","milestones_url":"https://api.github.com/repos/JGCRI/gcam-doc/milestones{/number}","notifications_url":"https://api.github.com/repos/JGCRI/gcam-doc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JGCRI/gcam-doc/labels{/name}","releases_url":"https://api.github.com/repos/JGCRI/gcam-doc/releases{/id}","deployments_url":"https://api.github.com/repos/JGCRI/gcam-doc/deployments","created_at":"2016-05-17T18:31:44Z","updated_at":"2016-06-16T18:23:21Z","pushed_at":"2016-06-27T21:09:24Z","git_url":"git://github.com/JGCRI/gcam-doc.git","ssh_url":"git@github.com:JGCRI/gcam-doc.git","clone_url":"https://github.com/JGCRI/gcam-doc.git","svn_url":"https://github.com/JGCRI/gcam-doc","homepage":null,"size":4929,"stargazers_count":1,"watchers_count":1,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":4,"forks":0,"open_issues":4,"watchers":1,"default_branch":"gh-pages"}},"base":{"label":"JGCRI:gh-pages","ref":"gh-pages","sha":"fc7f0bcb9c0f86b4c53d87109bbc5e578a31fc3f","user":{"login":"JGCRI","id":8431983,"avatar_url":"https://avatars.githubusercontent.com/u/8431983?v=3","gravatar_id":"","url":"https://api.github.com/users/JGCRI","html_url":"https://github.com/JGCRI","followers_url":"https://api.github.com/users/JGCRI/followers","following_url":"https://api.github.com/users/JGCRI/following{/other_user}","gists_url":"https://api.github.com/users/JGCRI/gists{/gist_id}","starred_url":"https://api.github.com/users/JGCRI/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JGCRI/subscriptions","organizations_url":"https://api.github.com/users/JGCRI/orgs","repos_url":"https://api.github.com/users/JGCRI/repos","events_url":"https://api.github.com/users/JGCRI/events{/privacy}","received_events_url":"https://api.github.com/users/JGCRI/received_events","type":"Organization","site_admin":false},"repo":{"id":59048576,"name":"gcam-doc","full_name":"JGCRI/gcam-doc","owner":{"login":"JGCRI","id":8431983,"avatar_url":"https://avatars.githubusercontent.com/u/8431983?v=3","gravatar_id":"","url":"https://api.github.com/users/JGCRI","html_url":"https://github.com/JGCRI","followers_url":"https://api.github.com/users/JGCRI/followers","following_url":"https://api.github.com/users/JGCRI/following{/other_user}","gists_url":"https://api.github.com/users/JGCRI/gists{/gist_id}","starred_url":"https://api.github.com/users/JGCRI/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JGCRI/subscriptions","organizations_url":"https://api.github.com/users/JGCRI/orgs","repos_url":"https://api.github.com/users/JGCRI/repos","events_url":"https://api.github.com/users/JGCRI/events{/privacy}","received_events_url":"https://api.github.com/users/JGCRI/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/JGCRI/gcam-doc","description":"Documentation for the GCAM Integrated Assessment model","fork":false,"url":"https://api.github.com/repos/JGCRI/gcam-doc","forks_url":"https://api.github.com/repos/JGCRI/gcam-doc/forks","keys_url":"https://api.github.com/repos/JGCRI/gcam-doc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JGCRI/gcam-doc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JGCRI/gcam-doc/teams","hooks_url":"https://api.github.com/repos/JGCRI/gcam-doc/hooks","issue_events_url":"https://api.github.com/repos/JGCRI/gcam-doc/issues/events{/number}","events_url":"https://api.github.com/repos/JGCRI/gcam-doc/events","assignees_url":"https://api.github.com/repos/JGCRI/gcam-doc/assignees{/user}","branches_url":"https://api.github.com/repos/JGCRI/gcam-doc/branches{/branch}","tags_url":"https://api.github.com/repos/JGCRI/gcam-doc/tags","blobs_url":"https://api.github.com/repos/JGCRI/gcam-doc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JGCRI/gcam-doc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JGCRI/gcam-doc/git/refs{/sha}","trees_url":"https://api.github.com/repos/JGCRI/gcam-doc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JGCRI/gcam-doc/statuses/{sha}","languages_url":"https://api.github.com/repos/JGCRI/gcam-doc/languages","stargazers_url":"https://api.github.com/repos/JGCRI/gcam-doc/stargazers","contributors_url":"https://api.github.com/repos/JGCRI/gcam-doc/contributors","subscribers_url":"https://api.github.com/repos/JGCRI/gcam-doc/subscribers","subscription_url":"https://api.github.com/repos/JGCRI/gcam-doc/subscription","commits_url":"https://api.github.com/repos/JGCRI/gcam-doc/commits{/sha}","git_commits_url":"https://api.github.com/repos/JGCRI/gcam-doc/git/commits{/sha}","comments_url":"https://api.github.com/repos/JGCRI/gcam-doc/comments{/number}","issue_comment_url":"https://api.github.com/repos/JGCRI/gcam-doc/issues/comments{/number}","contents_url":"https://api.github.com/repos/JGCRI/gcam-doc/contents/{+path}","compare_url":"https://api.github.com/repos/JGCRI/gcam-doc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JGCRI/gcam-doc/merges","archive_url":"https://api.github.com/repos/JGCRI/gcam-doc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JGCRI/gcam-doc/downloads","issues_url":"https://api.github.com/repos/JGCRI/gcam-doc/issues{/number}","pulls_url":"https://api.github.com/repos/JGCRI/gcam-doc/pulls{/number}","milestones_url":"https://api.github.com/repos/JGCRI/gcam-doc/milestones{/number}","notifications_url":"https://api.github.com/repos/JGCRI/gcam-doc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JGCRI/gcam-doc/labels{/name}","releases_url":"https://api.github.com/repos/JGCRI/gcam-doc/releases{/id}","deployments_url":"https://api.github.com/repos/JGCRI/gcam-doc/deployments","created_at":"2016-05-17T18:31:44Z","updated_at":"2016-06-16T18:23:21Z","pushed_at":"2016-06-27T21:09:24Z","git_url":"git://github.com/JGCRI/gcam-doc.git","ssh_url":"git@github.com:JGCRI/gcam-doc.git","clone_url":"https://github.com/JGCRI/gcam-doc.git","svn_url":"https://github.com/JGCRI/gcam-doc","homepage":null,"size":4929,"stargazers_count":1,"watchers_count":1,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":4,"forks":0,"open_issues":4,"watchers":1,"default_branch":"gh-pages"}},"_links":{"self":{"href":"https://api.github.com/repos/JGCRI/gcam-doc/pulls/4"},"html":{"href":"https://github.com/JGCRI/gcam-doc/pull/4"},"issue":{"href":"https://api.github.com/repos/JGCRI/gcam-doc/issues/4"},"comments":{"href":"https://api.github.com/repos/JGCRI/gcam-doc/issues/4/comments"},"review_comments":{"href":"https://api.github.com/repos/JGCRI/gcam-doc/pulls/4/comments"},"review_comment":{"href":"https://api.github.com/repos/JGCRI/gcam-doc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/JGCRI/gcam-doc/pulls/4/commits"},"statuses":{"href":"https://api.github.com/repos/JGCRI/gcam-doc/statuses/69dc04a4b315c56e27b1e9c447e37c62314efbec"}}}}
{"actor":{"display_login":"rplzzz"}}