From fc6d81dd8493f04ba2795fc0822c4e6f5ca819f5 Mon Sep 17 00:00:00 2001 From: baol Date: Mon, 13 May 2024 16:26:36 +0800 Subject: [PATCH] add example0 --- ..._for_large_scale_scientific_applications.pdf | 16 ++++++++++++++++ example0/hello | Bin 0 -> 16368 bytes example0/hello.cpp | 14 ++++++++++++++ example0/hello.f90 | 13 +++++++++++++ example0/hello.o | Bin 0 -> 2072 bytes example0/main | Bin 0 -> 16656 bytes example0/math_module.f90 | 14 ++++++++++++++ example0/math_module.mod | Bin 0 -> 1990 bytes example0/math_module.o | Bin 0 -> 1176 bytes example0/math_module.so | Bin 0 -> 15064 bytes 10 files changed, 57 insertions(+) create mode 100644 automated_fortran_cpp_binding_for_large_scale_scientific_applications.pdf create mode 100755 example0/hello create mode 100644 example0/hello.cpp create mode 100644 example0/hello.f90 create mode 100644 example0/hello.o create mode 100755 example0/main create mode 100644 example0/math_module.f90 create mode 100644 example0/math_module.mod create mode 100644 example0/math_module.o create mode 100755 example0/math_module.so diff --git a/automated_fortran_cpp_binding_for_large_scale_scientific_applications.pdf b/automated_fortran_cpp_binding_for_large_scale_scientific_applications.pdf new file mode 100644 index 0000000..2822b11 --- /dev/null +++ b/automated_fortran_cpp_binding_for_large_scale_scientific_applications.pdf @@ -0,0 +1,16 @@ +--2024-05-13 16:25:52-- https://www.osti.gov/servlets/purl/1649607 +Resolving www.osti.gov (www.osti.gov)... 192.107.175.222 +Connecting to www.osti.gov (www.osti.gov)|192.107.175.222|:443... connected. +HTTP request sent, awaiting response... 302 +Location: https://www.osti.gov/biblio/1649607 [following] +--2024-05-13 16:25:53-- https://www.osti.gov/biblio/1649607 +Reusing existing connection to www.osti.gov:443. +HTTP request sent, awaiting response... 200 +Length: unspecified [text/html] +Saving to: ‘1649607’ + + 0K .......... .......... .......... .......... .......... 93.0K + 50K .......... .......... .......... ... 131K=0.8s + +2024-05-13 16:25:54 (105 KB/s) - ‘1649607’ saved [86013] + diff --git a/example0/hello b/example0/hello new file mode 100755 index 0000000000000000000000000000000000000000..a282238d7f4773688ae6b77ab4ba2bf2c2c4aa87 GIT binary patch literal 16368 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 literal 0 HcmV?d00001 diff --git a/example0/hello.cpp b/example0/hello.cpp new file mode 100644 index 0000000..4e8a062 --- /dev/null +++ b/example0/hello.cpp @@ -0,0 +1,14 @@ +#include + +extern "C" { + void add_number(float x, float y, float* sum); +} + +int main() { + float a = 5.0; + float b = 10.0; + float result; + add_number(a, b, &result); + std::cout << "the sum of the numbers is " << result << std::endl; + return 0; +} diff --git a/example0/hello.f90 b/example0/hello.f90 new file mode 100644 index 0000000..3401e81 --- /dev/null +++ b/example0/hello.f90 @@ -0,0 +1,13 @@ +program main + use math_module + implicit none + real :: a, b, result + + a = 5.0 + b = 10.0 + + call add_number(a, b, result) + + print *, "the sum of the number is : ", result + +end program main diff --git a/example0/hello.o b/example0/hello.o new file mode 100644 index 0000000000000000000000000000000000000000..60bccda003c8f3389c0e6a4d8ff2a8cc41f828f7 GIT binary patch literal 2072 zcmbu9&r1|h9KgS`np&xC(jhQvPEnA# zSTwi<`!l8hUt0HVQ4YSJLwcaZuJm3a`ok3zr%2I8UBPJV%S{X#rcx3 zexTJxL8}7h>YLj*DtzYSoPUXy8dV{SFi2nR`R)9RT662++Ck*_Al>qI*Bxs9it+%tiV-1U)LQW6KJsO6) z(=Sq^U2Um(jEHiMNc(F%hJ@{xC zucId6cQ}o9T9D=;djP+A052o&!4-Ht6XzuJ_$1YTegKc!DjIx!`09jZfjbw>x>euE z8X2%=imn%UcGdC&Yr&fh90d{gi;ia%O15Vg0<_{GoMlbBRR=2eY*oqkoxrla89#>P z`t&j=-I2mG257-&4?j|p5y|P=(S>22mz?9tM{-Au)N=s(6|IDSqI{!-yb6#hzb zuFrjaqr}rU!S!_|o^n`BX%M4_`v``AzY^F}r~@z3CAK`LY#V{I7=STt2R0Z}z7K}y zMw5bDsW?^iRo%cb#wYT9eqa~wVgRK%C9CM!6-O@n-%7^{bcgtSxu7YHw+y7FSXFv) zLcK6mi1rdS8D(9J0Ce`0OT8gE87Vl6nz#&?6yRsWYBu8QUqCn2{MUTCuT)d*DNZAZ zivLN1;Sj%*gEBP30a6dijne*9;r+87K_}a4Tqy}A#NLuDzJJcYtrkU_&!6!m8cF># z38L_OQU55H^SOVt&G_1gU|sHCmzwSpePi+b!^q;jLj+%C(bqIlBz`Q%(U+7zC--kF Jxn#!k{{q_<5K906 literal 0 HcmV?d00001 diff --git a/example0/main b/example0/main new file mode 100755 index 0000000000000000000000000000000000000000..a6adbf8a2d2fc96b7ffedcba8598d22d6e919743 GIT binary patch literal 16656 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 literal 0 HcmV?d00001 diff --git a/example0/math_module.o b/example0/math_module.o new file mode 100644 index 0000000000000000000000000000000000000000..37ecfdb2f376e2a425de8b476556f5f4341066f6 GIT binary patch literal 1176 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 S|MDn{uW#`H6A}jz#Qz0&2mR>) literal 0 HcmV?d00001