{"action":"created","issue":{"url":"https://api.github.com/repos/OPM/opm-autodiff/issues/456","labels_url":"https://api.github.com/repos/OPM/opm-autodiff/issues/456/labels{/name}","comments_url":"https://api.github.com/repos/OPM/opm-autodiff/issues/456/comments","events_url":"https://api.github.com/repos/OPM/opm-autodiff/issues/456/events","html_url":"https://github.com/OPM/opm-autodiff/pull/456","id":104671801,"number":456,"title":"Autodiff matrix types","user":{"login":"babrodtk","id":3326841,"avatar_url":"https://avatars.githubusercontent.com/u/3326841?v=3","gravatar_id":"","url":"https://api.github.com/users/babrodtk","html_url":"https://github.com/babrodtk","followers_url":"https://api.github.com/users/babrodtk/followers","following_url":"https://api.github.com/users/babrodtk/following{/other_user}","gists_url":"https://api.github.com/users/babrodtk/gists{/gist_id}","starred_url":"https://api.github.com/users/babrodtk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/babrodtk/subscriptions","organizations_url":"https://api.github.com/users/babrodtk/orgs","repos_url":"https://api.github.com/users/babrodtk/repos","events_url":"https://api.github.com/users/babrodtk/events{/privacy}","received_events_url":"https://api.github.com/users/babrodtk/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":10,"created_at":"2015-09-03T11:31:03Z","updated_at":"2015-09-08T06:56:33Z","closed_at":"2015-09-08T06:34:43Z","pull_request":{"url":"https://api.github.com/repos/OPM/opm-autodiff/pulls/456","html_url":"https://github.com/OPM/opm-autodiff/pull/456","diff_url":"https://github.com/OPM/opm-autodiff/pull/456.diff","patch_url":"https://github.com/OPM/opm-autodiff/pull/456.patch"},"body":"This significantly improves performance of flow by keeping track of matrix types. The gist of it is that if a is zero, identity or a purely diagonal matrix, we can use specialized multiplication/addition/etc. methods that are faster than a general sparse (op) sparse method.\r\n\r\nTested that it gives same result as master."},"comment":{"url":"https://api.github.com/repos/OPM/opm-autodiff/issues/comments/138454963","html_url":"https://github.com/OPM/opm-autodiff/pull/456#issuecomment-138454963","issue_url":"https://api.github.com/repos/OPM/opm-autodiff/issues/456","id":138454963,"user":{"login":"bska","id":1871438,"avatar_url":"https://avatars.githubusercontent.com/u/1871438?v=3","gravatar_id":"","url":"https://api.github.com/users/bska","html_url":"https://github.com/bska","followers_url":"https://api.github.com/users/bska/followers","following_url":"https://api.github.com/users/bska/following{/other_user}","gists_url":"https://api.github.com/users/bska/gists{/gist_id}","starred_url":"https://api.github.com/users/bska/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bska/subscriptions","organizations_url":"https://api.github.com/users/bska/orgs","repos_url":"https://api.github.com/users/bska/repos","events_url":"https://api.github.com/users/bska/events{/privacy}","received_events_url":"https://api.github.com/users/bska/received_events","type":"User","site_admin":false},"created_at":"2015-09-08T06:56:33Z","updated_at":"2015-09-08T06:56:33Z","body":"> Thanks for the review, merging.\r\n\r\nThis breaks the build in downstream module opm-polymer (\r\n```\r\n/var/lib/jenkins/workspace/opm-polymer/opm/polymer/fullyimplicit/PolymerPropsAd.cpp: In member function ‘Opm::ADB Opm::PolymerPropsAd::effectiveInvWaterVisc(const ADB&, const double*) const’:\r\n/var/lib/jenkins/workspace/opm-polymer/opm/polymer/fullyimplicit/PolymerPropsAd.cpp:182:47: error: conversion from ‘Eigen::SparseMatrix<double>’ to non-scalar type ‘Opm::AutoDiffBlock<double>::M {aka Opm::AutoDiffMatrix}’ requested\r\n         ADB::M dim_diag = spdiag(dinv_mu_w_eff);\r\n                                               ^\r\n/var/lib/jenkins/workspace/opm-polymer/opm/polymer/fullyimplicit/PolymerPropsAd.cpp: In member function ‘Opm::ADB Opm::PolymerPropsAd::polymerWaterVelocityRatio(const ADB&) const’:\r\n/var/lib/jenkins/workspace/opm-polymer/opm/polymer/fullyimplicit/PolymerPropsAd.cpp:229:37: error: conversion from ‘Eigen::SparseMatrix<double>’ to non-scalar type ‘Opm::AutoDiffBlock<double>::M {aka Opm::AutoDiffMatrix}’ requested\r\n         ADB::M dmc_diag = spdiag(dmc);\r\n                                     ^\r\n/var/lib/jenkins/workspace/opm-polymer/opm/polymer/fullyimplicit/PolymerPropsAd.cpp: In member function ‘Opm::ADB Opm::PolymerPropsAd::adsorption(const ADB&, const ADB&) const’:\r\n/var/lib/jenkins/workspace/opm-polymer/opm/polymer/fullyimplicit/PolymerPropsAd.cpp:277:39: error: conversion from ‘Eigen::SparseMatrix<double>’ to non-scalar type ‘Opm::AutoDiffBlock<double>::M {aka Opm::AutoDiffMatrix}’ requested\r\n         ADB::M dads_diag = spdiag(dads);\r\n                                       ^\r\nmake[2]: *** [CMakeFiles/opmpolymer.dir/opm/polymer/fullyimplicit/PolymerPropsAd.cpp.o] Error 1\r\nmake[1]: *** [CMakeFiles/opmpolymer.dir/all] Error 2\r\nmake: *** [all] Error 2\r\nBuild step 'Execute managed script' marked build as failure\r\nFinished: FAILURE\r\n```"}}