diff --git a/src/build_system_wsmp.f90 b/src/build_system_wsmp.f90 index 8ec16c1f1aaf615578268d28543012dc3fe61f4b..95dd444e24f5c4dc66c909577632df6c54fb2355 100644 --- a/src/build_system_wsmp.f90 +++ b/src/build_system_wsmp.f90 @@ -68,7 +68,7 @@ double precision weightel_glob(osolve%nleaves) integer, external :: ifind_loc_wsmp double precision,dimension(:,:),allocatable::lsf_el -double precision ael(8*ndof,8*ndof),bel(8*ndof),patch1(5,5),patch2(3,3) +double precision ael(8*ndof,8*ndof),bel(8*ndof),patch1(5,5),patch2(3,3),elem_dz double precision,dimension(:),allocatable::penalty_loc,penalty_glob,eviscosity,weightel double precision r0,s0,t0,rst,amin integer i,j,k,itodo,idof,i1,i2,iii,jjj,err,jj,i1loc,k1,k2,ii @@ -172,6 +172,8 @@ do ileaves=1,osolve%nleaves ! transfer elemental matrix and rhs into wsmpmatrix structure ! different for symmetric or nonsymmetric matrices + do i=1,params%mpe + do k1=1,params%mpe do idof1=1,ndof i1=(vo%ftr(osolve%icon(k1,ileaves))-1)*ndof+idof1 @@ -189,6 +191,17 @@ do ileaves=1,osolve%nleaves endif enddo enddo + if (kfix(ileaves) < 1) then + if (idof1 == 3) then + iloc=iffind_loc_wsmp(i1loc,i1,ja,ia,n_iproc,nz_loc) + elem_dz=(osolve%icon(5,ileaves)-osolve%icon(1,ileaves))*params%vex + if (k1 < 5) then + avals(iloc)=avals(iloc)+(params%dt*weightel(ileaves))/(2*elem_dz) + else + avals(iloc)=avals(iloc)-(params%dt*weightel(ileaves))/(2*elem_dz) + endif + endif + endif b(i1loc,1)=b(i1loc,1)+bel(iii) endif enddo