New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove libcf? #1

Closed
doutriaux1 opened this Issue Aug 30, 2016 · 8 comments

Comments

Projects
None yet
5 participants
@doutriaux1
Member

doutriaux1 commented Aug 30, 2016

I don't think anybody uses or trust the libcf regrid implementation, and it just adds a useless dependency to cdms2 (and it also adds a dependency to uuid)

@dnadeau4 dnadeau4 added this to the 3.0 milestone Aug 30, 2016

@durack1

This comment has been minimized.

Member

durack1 commented Aug 30, 2016

@doutriaux1 you have a 👍 from me, the TechX folks started on libCF and then quickly moved across to ESMF and the current integration in cdms2 so removing a partially implemented dependency is a good idea to me

@pletzer

This comment has been minimized.

pletzer commented Sep 1, 2016

@doutriaux1 @durack1 Ok to remove libCF dependency. The main advantage of libCF interpolation is multidimensionality (no limits on the number of dimensions). The main shortcoming is that it does not support conservative interpolation.

@durack1

This comment has been minimized.

Member

durack1 commented Sep 1, 2016

@pletzer n-dimensional interpolation is certainly something that isn't provided by any other modules (at least that I am aware of).. Is there fairly thorough documentation available for the libCF regridding functionality? If so where would I find this?

@pletzer

This comment has been minimized.

pletzer commented Sep 1, 2016

See
https://www.unidata.ucar.edu/software/libcf/html/group__gs__regrid__grp.html.
Care was taken to use only primitive data types in the API so all calls can
be accessed directly from Python using ctypes. In UV-CDAT, we tried to
implement the same API for all interpolation methods (
https://github.com/UV-CDAT/uvcdat/blob/65ca26c122d3939cdf406eafa3683ffec130315c/Packages/regrid2/Lib/mvLibCFRegrid.py),
making it easy for users to switch from one method to another. The methods
are documented in the python code and tested.

Another difference with ESMF is that LibCF uses a Newton algorithm to find
the location of the src cell that contains a target point whereas ESMF uses
an octtree. I don't remember the performance comparison but I suspect LibCF
is on average faster while being occasionally slower (some odd initial
guesses may lead Newton to enter a limit cycle). You need only one
iteration with LibCF if the grid is rectilinear (without having to specify
it as rectilinear). The performance of ESMF on the other hand is more
consistent.

ESMF supports unstructured grids and runs in parallel.

On Fri, Sep 2, 2016 at 3:50 AM, Paul J. Durack notifications@github.com
wrote:

@pletzer https://github.com/pletzer n-dimensional interpolation is
certainly something that isn't provided by any other modules (at least that
I am aware of).. Is there fairly thorough documentation available for the
libCF regridding functionality? If so where would I find this?


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#1 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AC4wrvNHXz2S4q6KVBNvCSKsFMQBvSrlks5qlvRbgaJpZM4JxBlR
.

Alexander Pletzer
Phone: +64 210 857 9661
alexander@gokliya.net

@durack1

This comment has been minimized.

Member

durack1 commented Sep 2, 2016

@pletzer great thanks for this.. My statement above about removing libCF I think was misplaced.

@doutriaux1 I think the functionality available is not provided by any other integrated tools - so adding some tests to ensure that libCF continues to work with cdms changes would be good..

@dnadeau4 it would be useful to incorporate the documentation linked above into the cdms documentation tree too..

@pletzer

This comment has been minimized.

pletzer commented Sep 2, 2016

@doutriaux1 I believe there are tests exercising both esmf and libcf and
comparing the results. testing/regrid/testAccuracy.py
https://github.com/UV-CDAT/uvcdat/blob/65ca26c122d3939cdf406eafa3683ffec130315c/testing/regrid/testAccuracy.py
is one of them.

On Fri, Sep 2, 2016 at 12:43 PM, Paul J. Durack notifications@github.com
wrote:

@pletzer https://github.com/pletzer great thanks for this.. My
statement above about removing libCF I think was misplaced.

@doutriaux1 https://github.com/doutriaux1 I think the functionality
available is not provided by any other integrated tools - so adding some
tests to ensure that libCF continues to work with cdms changes would be
good..

@dnadeau4 https://github.com/dnadeau4 it would be useful to incorporate
the documentation linked above into the cdms documentation tree too..


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#1 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AC4wri_2nqBrrztDTKTNVssDWmwewv4Gks5ql3EXgaJpZM4JxBlR
.

Alexander Pletzer
Phone: +64 210 857 9661
alexander@gokliya.net

@jypeter

This comment has been minimized.

jypeter commented Sep 5, 2016

I confess I still use the old regrid2.Horizontal when going from regular to regular. I remember ESMF being terribly memory hungry (and therefore slow)

@pletzer

This comment has been minimized.

pletzer commented Sep 6, 2016

I think it's important to keep a choice.

Interpolation on a regular, uniform grid does not require all the machinery
for structured or unstructured grids. ESMF can handle any grid and this
naturally comes with a performance penalty.

On Tue, Sep 6, 2016 at 2:47 AM, Jean-Yves Peterschmitt <
notifications@github.com> wrote:

I confess I still use the old regrid2.Horizontal when going from
regular to regular. I remember ESMF being terribly memory hungry (and
therefore slow)


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#1 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AC4wrgbPT_MoSicRsfUu4_Z2V6JaZJK9ks5qnCt4gaJpZM4JxBlR
.

Alexander Pletzer
Phone: +64 210 857 9661
alexander@gokliya.net

@doutriaux1 doutriaux1 closed this Jan 9, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment