C coefficients in PDE toolbox on different domains

3 ビュー (過去 30 日間)
Kaveh Gharibi
Kaveh Gharibi 2017 年 6 月 21 日
回答済み: Mudambi Srivatsa 2017 年 6 月 27 日
I am solving a system of 3 PDE on a domain and I managed to do it successfully when my coefficient are the same on the whole domain. Now I am having a problem that the C coefficients are changing on the domain based on the solution. So I am gonna have two subdomains, and on each of them I have different c matrices. My code for C is as follows
function cmatrix = ccoefPsiPrincipalRev1(region,state)
% global Ineg Ipos
n1 = 36;
nr = numel(region.x);
state.u
region.x
if ~isnan(state.u)
variable=state;
save ('v1' , 'variable')
dpsixdy=state.uy(1,:) ;
dpsixdx=state.ux(1,:) ;
dpsiydy=state.uy(2,:) ;
dpsiydx=state.ux(2,:) ;
sigma1=(dpsixdy-dpsiydx)/2+sqrt(((dpsixdy+dpsiydx)/2).^2+dpsixdx.^2) ;
sigma2=(dpsixdy-dpsiydx)/2-sqrt(((dpsixdy+dpsiydx)/2).^2+dpsixdx.^2) ;
sign=sigma1.*sigma2 ;
indp=find(sign>0) ;
indn=find(sign<=0) ;
cmatrix = zeros(n1,nr);
normrev= (sqrt(10^-12+ (state.uy(1,indn)+state.ux(2,indn)).^2+4*(state.ux(1,indn)).^2 ) ) ;
cmatrix(1,indn) = 4./normrev;
cmatrix(4,indn) = 1./normrev;
cmatrix(7,indn) = 1./normrev;
cmatrix(10,indn) = -region.y(indn);
cmatrix(11,indn) = region.y(indn);
cmatrix(14,indn) = 1./normrev;
cmatrix(17,indn) = 1./normrev;
cmatrix(22,indn) = region.x(indn);
cmatrix(23,indn) = -region.x(indn);
cmatrix(26,indn) = -region.y(indn);
cmatrix(27,indn) = region.y(indn);
cmatrix(30,indn) = region.x(indn);
cmatrix(31,indn) = -region.x(indn);
normrev= (sqrt(10^-12+ (state.uy(1,indp)+state.ux(2,indp)).^2+4*(state.ux(1,indp)).^2 ) );
cmatrix(10,indp) = region.y(indp);
cmatrix(11,indp) = -region.y(indp);
cmatrix(22,indp) = -region.x(indp);
cmatrix(23,indp) = region.x(indp);
cmatrix(26,indp) = -region.y(indp);
cmatrix(27,indp) = region.y(indp);
cmatrix(30,indp) = region.x(indp);
cmatrix(31,indp) = -region.x(indp);
else
cmatrix = NaN(n1,nr);
end
I think so many thing are wrong with it , I get this error
Error using pde.EquationModel/solveStationaryNonlinear (line 99) Nonlinear solution failed due to singular Jacobian matrix.
How can I do this?

採用された回答

Mudambi Srivatsa
Mudambi Srivatsa 2017 年 6 月 27 日
The following post might be helpful in understanding the "Nonlinear solution failed due to singular Jacobian matrix" error:
https://www.mathworks.com/matlabcentral/answers/120468-why-do-i-receive-an-error-about-a-singular-jacobian-when-i-use-the-bvp4c-function-within-matlab

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeEigenvalue Problems についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by