BEGIN:VCALENDAR
VERSION:2.0
PRODID:Linklings LLC
BEGIN:VTIMEZONE
TZID:Europe/Stockholm
X-LIC-LOCATION:Europe/Stockholm
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20230831T095745Z
LOCATION:Davos
DTSTART;TZID=Europe/Stockholm:20230626T112000
DTEND;TZID=Europe/Stockholm:20230626T115000
UID:submissions.pasc-conference.org_PASC23_sess104_pos147@linklings.com
SUMMARY:P11 - Bridging the Language Gap: Classes for C++/Fortran Interoper
 ability
DESCRIPTION:Poster\n\nIvan Pribec (Leibniz Supercomputing Centre)\n\nFortr
 an and C++ remain popular languages for high-performance scientific comput
 ing. Interoperation of these two languages is of great interest; be it to 
 take advantage of a mature ecosystem of libraries, or for coupling individ
 ual simulation codes into larger multi-scale or multi-physics applications
 . Fortran 2018 introduced enhanced facilities for interoperability with C 
 including an API for passing and manipulating Fortran arrays (including th
 ose with allocatable and pointer attributes). This is achieved by means of
  a C descriptor - an opaque C structure type - and an accompanying library
  of functions. In this contribution I present a handful of new templated C
 ++ classes that wrap the C descriptor and expose native semantic features 
 of C++ including iterators, range-based for loops and elemental access ope
 rators. Implicit casts to std::span (C++20) and std::mdspan (C++23) contai
 ners enable efficient reuse of C++ routines. Reuse of Fortran routines fro
 m C++ is also simplified through the use of class template argument deduct
 ion (CTAD) to construct compatible C descriptors for popular C++ container
  and array types.\n\nSession Chair: Elaine M. Raybourn (Sandia National La
 boratories)
END:VEVENT
END:VCALENDAR
