0001 function [f]=neumannbc(f,h,jacx,jacy,wx,wy,xy,ifro,nov);
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 [ldnov,ne]=size(nov);
0031 npdx=length(wx);
0032 npdy=length(wy);
0033 mn=npdx*npdy;
0034 nm1=ldnov-npdx;
0035 for ie=1:ne
0036
0037
0038 for i=2:npdx-1
0039 ip=nov(i,ie);
0040 if ifro(ip)>30
0041 hh=h(xy(ip,1),xy(ip,2));
0042 f(ip)=f(ip)+hh(1)*wx(i)*jacx(ie);
0043 end
0044 end
0045
0046 for j=2:npdy-1
0047 ip=nov(j*npdx,ie);
0048 if ifro(ip)>30
0049 hh=h(xy(ip,1),xy(ip,2));
0050 f(ip)=f(ip)+hh(2)*wy(j)*jacy(ie);
0051 end
0052 end
0053
0054 for i=2:npdx-1
0055 ip=nov(nm1+i,ie);
0056 if ifro(ip)>30
0057 hh=h(xy(ip,1),xy(ip,2));
0058 f(ip)=f(ip)+hh(3)*wx(i)*jacx(ie);
0059 end
0060 end
0061
0062 for j=2:npdy-1
0063 ip=nov((j-1)*npdx+1,ie);
0064 if ifro(ip)>30
0065 hh=h(xy(ip,1),xy(ip,2));
0066 f(ip)=f(ip)+hh(4)*wy(j)*jacy(ie);
0067 end
0068 end
0069
0070
0071
0072 i=1;io=2; iv=npdx+1;
0073 ip=nov(i,ie); iio=nov(io,ie); iiv=nov(iv,ie);
0074
0075 if ifro(ip)>30 && ifro(iio)>30
0076 hh=h(xy(ip,1),xy(ip,2));
0077 f(ip)=f(ip)+hh(1)*wx(1)*jacx(ie);
0078 end
0079
0080 if ifro(ip)>30 && ifro(iiv)>30
0081 hh=h(xy(ip,1),xy(ip,2));
0082 f(ip)=f(ip)+hh(4)*wy(1)*jacy(ie);
0083 end
0084
0085
0086 i=npdx;io=npdx-1; iv=npdx*2;
0087 ip=nov(i,ie); iio=nov(io,ie); iiv=nov(iv,ie);
0088
0089 if ifro(ip)>30 && ifro(iio)>30
0090 hh=h(xy(ip,1),xy(ip,2));
0091 f(ip)=f(ip)+hh(1)*wx(npdx)*jacx(ie);
0092 end
0093
0094 if ifro(ip)>30 && ifro(iiv)>30
0095 hh=h(xy(ip,1),xy(ip,2));
0096 f(ip)=f(ip)+hh(2)*wy(1)*jacy(ie);
0097 end
0098
0099
0100 i=mn;io=i-1; iv=i-npdx;
0101 ip=nov(i,ie); iio=nov(io,ie); iiv=nov(iv,ie);
0102
0103 if ifro(ip)>30 && ifro(iio)>30
0104 hh=h(xy(ip,1),xy(ip,2));
0105 f(ip)=f(ip)+hh(3)*wx(npdx)*jacx(ie);
0106 end
0107
0108 if ifro(ip)>30 && ifro(iiv)>30
0109 hh=h(xy(ip,1),xy(ip,2));
0110 f(ip)=f(ip)+hh(2)*wy(npdy)*jacy(ie);
0111 end
0112
0113
0114 i=nm1+1;io=i+1; iv=i-npdx;
0115 ip=nov(i,ie); iio=nov(io,ie); iiv=nov(iv,ie);
0116
0117 if ifro(ip)>30 && ifro(iio)>30
0118 hh=h(xy(ip,1),xy(ip,2));
0119 f(ip)=f(ip)+hh(3)*wx(1)*jacx(ie);
0120 end
0121
0122 if ifro(ip)>30 && ifro(iiv)>30
0123 hh=h(xy(ip,1),xy(ip,2));
0124 f(ip)=f(ip)+hh(4)*wy(npdy)*jacy(ie);
0125 end
0126
0127 end
0128 return
0129