/* * Copyright (C) 2017, UChicago Argonne, LLC * All Rights Reserved * * Hardware/Hybrid Cosmology Code (HACC), Version 1.0 * * Salman Habib, Adrian Pope, Hal Finkel, Nicholas Frontiere, Katrin Heitmann, * Vitali Morozov, Jeffrey Emberson, Thomas Uram, Esteban Rangel * (Argonne National Laboratory) * * David Daniel, Patricia Fasel, Chung-Hsing Hsu, Zarija Lukic, James Ahrens * (Los Alamos National Laboratory) * * George Zagaris * (Kitware) * * OPEN SOURCE LICENSE * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. Software changes, * modifications, or derivative works, should be noted with comments and * the author and organization’s name. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. Neither the names of UChicago Argonne, LLC or the Department of Energy * nor the names of its contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * 4. The software and the end-user documentation included with the * redistribution, if any, must include the following acknowledgment: * * "This product includes software produced by UChicago Argonne, LLC under * Contract No. DE-AC02-06CH11357 with the Department of Energy." * * ***************************************************************************** * DISCLAIMER * THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT WARRANTY OF ANY KIND. NEITHER THE * UNITED STATES GOVERNMENT, NOR THE UNITED STATES DEPARTMENT OF ENERGY, NOR * UCHICAGO ARGONNE, LLC, NOR ANY OF THEIR EMPLOYEES, MAKES ANY WARRANTY, * EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE * ACCURARY, COMPLETENESS, OR USEFULNESS OF ANY INFORMATION, DATA, APPARATUS, * PRODUCT, OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT INFRINGE * PRIVATELY OWNED RIGHTS. * * ***************************************************************************** */ /// // Distribution / partition / decomposition of data // // Give C linkage to C++ Distribution class so that Fortran can access its functions. /// #include "Distribution.hpp" extern "C" { hacc::Distribution* Distribution__new(MPI_Fint *fcomm, int const n[], bool debug) { MPI_Comm comm = MPI_Comm_f2c(*fcomm); return new hacc::Distribution(comm, n, debug); } MPI_Fint Distribution__Cart_3D(hacc::Distribution* This) { MPI_Comm comm = This->cart_3d(); return MPI_Comm_c2f(comm); } void Distribution__delete(hacc::Distribution* This) { delete This; } }