----------------------------------------------------------------------------------
@MSGID: zW7d.89812@fx43.iad>
e3b47898
@REPLY:
<c8ac7613-a6bc-4804-a668-40dbc9de519en@googlegroups.com> 06fed85f
@REPLYADDR Ron Shepard <nospam@nowhere.org>
@REPLYTO 2:5075/128 Ron Shepard
@CHRS: CP866 2
@RFC: 1 0
@RFC-References:
<aa2d38fc-1df2-4703-b1b3-67adf45e2793n@googlegroups.com> <8a0d90c2-1912-41f9-8cf1-76c8f12698adn@googlegroups.com>
<c8ac7613-a6bc-4804-a668-40dbc9de519en@googlegroups.com>
@RFC-Message-ID:
zW7d.89812@fx43.iad>
@TZUTC: -0500
@PID: Mozilla/5.0 (Macintosh; Intel Mac OS X
10.13; rv:102.0) Gecko/20100101 Thunderbird/102.14.0
@TID: FIDOGATE-5.12-ge4e8b94
On 9/3/23 3:34 PM, Farzad Tatar wrote:
I think you are on the right track with examination of the condition
number of the matrix. As you already note, the solution to this problem
may involve reformulations using different basis functions, or maybe the
same type of basis functions but different orders of the function, or
different grid spacing, and so on.
Here are a couple of comments about your posted code.
> dist_ = SQRT((xj_ - xi_)**2.0_dp + (yj_ - yi_)**2.0_dp)
You should almost never use a floating point exponent with an integer
value in fortran. You should use an integer exponent here. The floating
point exponent expression is much more expensive (it requires a LOG()
and and EXP() evaluation internally), and it is potentially less accurate.
> ALLOCATE(work(lwork)) !this is work vector
I do not see where lwork is set in your code. Normally with LAPACK
procedures, you make a workspace query call first, and then use the
returned value to allocate the workspace, and then call the procedure to
do the work.
$.02 -Ron Shepard
--- Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:102.0)
Gecko/20100101 Thunderbird/102.14.0
* Origin: Forte - www.forteinc.com (2:5075/128)
SEEN-BY: 5001/100 5005/49 5015/255 5019/40 5020/715
848 1042 4441 12000
SEEN-BY: 5030/49 1081 5058/104 5075/128
@PATH: 5075/128 5020/1042 4441