Skip to content
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

Merging for RTES #147

Open
wants to merge 3,041 commits into
base: RTES
Choose a base branch
from
Open
Changes from all commits
Commits
Show all changes
3041 commits
Select commit Hold shift + click to select a range
6d1d327
Merge commit '83ccbf08f7a9d5d69e9410af3c0f863421966d8b'
Jul 19, 2022
ebef3f9
Merge commit '7a9dd487c864b1c7da9686e156a57ddd7b3fdd0e'
Jul 19, 2022
82b5a9f
Merge commit 'dd8efb526983cb2d89580dae8b27afe4a8c09734'
Jul 21, 2022
284259d
Merge commit '10816e08c0f1b28d9167669a22fea2d0fe4d6ff9'
Jul 21, 2022
f57baf2
Merge commit '8dee77e4da7f49d5b13a7f47bf415bcdcc3e2008'
Jul 21, 2022
2c0adcc
Merge commit '9ecee6f19834c753df07f58d1d2443a40288d3a5'
Jul 26, 2022
c2679a0
Merge commit 'bdf443a76c946f683ed49bc901c6d398bff90bfc'
Jul 27, 2022
c6d2d85
Merge commit '52c53a1da8a05c6bcd28b887d3d61ba31d0c1b06'
Jul 27, 2022
85377c8
Merge commit 'a76d1333b9286911ee4f471169093e86b6759b12'
Jul 27, 2022
cf38ec3
Merge commit '9f62e9bb263f0e908d5a6ec690a1a44cb1ea7375'
Jul 27, 2022
81866ba
Merge commit 'a4d3da4ab66f07269d386a5a39fb58203a937d19'
Jul 28, 2022
232eba7
Merge commit '8c42f546a50542f3b3859832c8e626ac18afcddc'
Jul 28, 2022
fbabe44
Merge commit 'b354d2f4b492173406b0729dde1db4778c325b7a'
Jul 29, 2022
a037b9e
Merge commit '18fdb9cd08e5cd3a4621fe3ac195a72faa3fa275'
Aug 2, 2022
26fd687
Merge commit '2258767acc8ba504f5c74f7f513dde4d49a6f7fe'
Aug 3, 2022
1fabf0e
Merge commit '1e9f47e05695fb7f57b7593224cbc4476e79f30a'
Aug 3, 2022
9a0c9cd
Merge commit 'b58999a6efd28224fd6761ab3b73eeb20930827e'
Aug 5, 2022
e3fde3c
Merge commit '7fb3cf575bd1cd23e8b66d220c18ac4a23772e41'
Aug 6, 2022
b03a280
Merge commit 'd605204b10d24e3f2ebc904a29626c0810e065c4'
Aug 7, 2022
6d9dbc0
Merge commit '46933266f97379afba387ef698896a17ec4798e1'
Aug 8, 2022
a507de0
Merge commit '317963d6857075df0474b0e71b448e2fb1c5cc3e'
Aug 9, 2022
fa74235
Merge commit 'f2a06b5f0ef185bff8cfa01ef32fc008b124a55d'
Aug 10, 2022
c01c555
Merge commit '68d69b68403a79079bdaece984e484688b654557'
Aug 10, 2022
d913317
Merge commit 'b4605cfae9784c3922b304c47f75c7e25acdb0cd'
Aug 11, 2022
181c13e
Merge commit 'ab03c41ef6801d6afa2c73d382b77adba30765ab'
Aug 11, 2022
3907fec
Merge commit '54c158b9ea480277d324b9b23a4222ff92f5b1f9'
Aug 11, 2022
2ebb427
Merge commit '9cd399a4c9698dc8d215808bc3d2a3e30df47d52'
Aug 12, 2022
66f820e
Merge commit 'd1bd6ced8024466ed954330af04d7dd278a8af14'
Aug 12, 2022
7d9e17c
Merge commit '185924a056b4ca2ab55c0bf428694f856cf1b90f'
Aug 15, 2022
bddce39
Merge commit '096c72e3749458487e744c1ed5b43fe2b0fa1b1f'
Aug 16, 2022
994436e
Merge commit '21be00e5611a227e89336aa36ee62d10550220a3'
Aug 17, 2022
7ed4a92
Merge commit '38db12659fedd04fcddc25a23d8e8474ffd205d8'
Aug 17, 2022
18965f0
Merge commit '0f444de6ff176ad33438fee7b624699455f140ba'
Aug 18, 2022
76595c1
Merge commit '0119fc77f40ac3e4e416b3b39578e0a02b1ecc85'
Aug 18, 2022
aa6e026
Merge commit 'e07662302a8a185877150400634bb9dc257ca5f9'
Aug 19, 2022
19c3803
Merge commit 'ae36f0ae198204d9bfef6b9a7eb87a52b4fee41f'
Aug 19, 2022
5a2c35d
Merge commit 'fde7d3905abeb07d50c3781b0c3b30c4f8f78215'
Aug 22, 2022
c104609
Merge commit '8c2e0381d4e65d8d35c9cf0f8427a0fef23f7ecc'
Aug 22, 2022
8b4a3fe
Merge commit 'e79f2a8a6e27fe28043a0efef5de8a3858332f5f'
Aug 22, 2022
2f0364c
Merge commit '603251b4f6984e329fa4c7b74a4e38a51e72e7db'
Aug 22, 2022
0f9918f
Merge commit 'd4c068aceb07d046a6a5475270ad5a1a55d30510'
Aug 23, 2022
abed613
Merge commit '1953c19e12d3c6a12039f885d1a24d40a698b6f4'
Aug 24, 2022
f6ed558
Merge commit 'c9cb253214aa410bf5a70d271b9c793ceba8037f'
Aug 25, 2022
5d0f780
Merge commit 'a759b689587bcac74133283b8c156dadc9ec4ac5'
Aug 25, 2022
9bd75ed
Merge commit 'ef9e5db53abbd54a61d725f611dcc999b01e6c47'
Aug 29, 2022
04733d0
Merge commit 'e217585cb276abc0dd25ae1278f8a23dd0c2b0b4'
Aug 30, 2022
64ee617
Merge commit 'b2bc088a47eb5889b2e40640f3689303941d0d67'
Sep 2, 2022
d6b4e17
Merge commit '875bb664aa0ef958b9e66a36a760f929bfda8eb5'
Sep 2, 2022
4ba5282
Merge commit '1d219ed5001cd400777121091a18f3af347ba31c'
Sep 2, 2022
5cdf0a9
Merge commit 'af76e2d2d9fa8c4e0df9004c58c4ca8e080fa522'
Sep 3, 2022
6540f51
Merge commit 'cf0f6428bcfd289a7e730b3b98e365eda03dcac9'
Sep 22, 2022
a62fe7a
Merge commit '0fec10fbcb6df3cd73aa0609a7b69a2d83b8e132'
Sep 22, 2022
47e3e2a
Merge commit 'e194323bfb9ab53a40e6646bb94de2388737ffe9'
Sep 22, 2022
4e5c2a9
Merge commit '6fe2bc2fa5438d28aaa38e908c97e39b9dcbb99d'
Sep 23, 2022
569a427
Merge commit '8b96bf435a8a2b35cfa0ac8df8b70ebfcb791418'
Sep 23, 2022
42edd7f
Merge commit '66edfdf542336ee8cdecd5af09289702df410a37'
Sep 27, 2022
6188385
Merge commit 'ec68bdf84f3596413202970efe5f276ea91bfd8d'
Sep 27, 2022
3c2ec98
Merge commit '9e7d6386e18e6e2d92a4c2cd72b8201866977447'
Sep 28, 2022
6afcd98
Merge commit 'bc96a8e122cfae70a090c09763813e8752e9a569'
Sep 29, 2022
dafe4b2
Merge commit 'edd5274d0f98f66fd9d29f30adba84044167110a'
Sep 29, 2022
34274da
Merge commit 'e3794f77d91efa50ac7805008d829d33d5a26752'
Oct 5, 2022
07bd257
Merge commit 'ff4d120bab952e1e69538bb2ecf264b539a4c1a8'
Oct 6, 2022
1e852ba
Merge commit '165bce6892d48bf2ed7877be01c0f029376aa39a'
Oct 6, 2022
07383be
Merge commit 'e613f27365e576439e017b5bafc330686b6820c0'
Oct 6, 2022
ad78127
Merge commit '359e32d938b9390a203585bf8257cdf67c51964a'
Oct 6, 2022
7824b05
Merge commit 'b025d147fa007889be44f4640fa73d890f1854c1'
Oct 7, 2022
8707d00
Merge commit 'cec4f947762920523d6b7fedfb3be7629365a254'
Oct 10, 2022
8264487
Merge commit '350bcaa4c2c3cf66c3e69f9af4b39be9503d380c'
Oct 10, 2022
6b092a0
Merge commit 'f3cb5c973b2a27932b9c41871938fdbfc6e7be65'
Oct 10, 2022
c2b5e81
Merge commit 'dc6c2b2d228df858162bcc538d0eaf628730fc9b'
Oct 11, 2022
d43ec62
Merge commit 'c7762cbcb2e9d667d5bdbcbfb61de4332c31da8f'
Oct 11, 2022
8dc0b4d
Merge commit 'f4d0e2628a62d5a7ac4467bc451eee9f0f1b950a'
Oct 11, 2022
85ea406
Merge commit '462805746b415263853f3f286296b88c8dfec9a5'
Oct 12, 2022
565f748
Merge commit 'f315a9f990fa051279833a105e20593e5955a572'
Oct 12, 2022
e4dfad6
Merge commit '1d2589ec7c327b76ddce08e1d09e1ae08d119562'
Oct 12, 2022
8b3ee60
Merge commit 'e70d613d5b63745cc25cd79efbb06764194fce99'
Oct 12, 2022
a50c8ab
Merge commit '992351afbca36bd4c4a8786b4582eeb3607d176b'
Oct 13, 2022
69faedd
Merge commit '336940e175a25260309d0c5cdc653f5c20008c86'
Oct 13, 2022
def8aed
Merge commit '9f0e6202a69a2909f36fd74457a3a299e87cc628'
Oct 14, 2022
749e995
Merge commit '0df0b01b06741bb15e83ba1239c7c6fec2d96071'
Oct 14, 2022
7f3e785
Merge commit '98a266f9b3974b0104e4c9bf845df49ba84da4c5'
Oct 14, 2022
93b5fff
Merge commit '1399cc510d5558e7867b7b235db734cfaa4a8838'
Oct 15, 2022
d12f9b6
Merge commit '928d735b8fb2c3da7a90edcfc7baf2abfc915bb7'
Oct 17, 2022
09bc917
Merge commit '46e106c89d6d637cd881de05154b22e037b27f0d'
Oct 17, 2022
77f5465
Merge commit '1a7d4eefea1d085692dbb1b75682c9999f11bc0c'
Oct 17, 2022
4aafd24
Merge commit '95c2ce288de403cf9377c629a553b00a291a080b'
Oct 17, 2022
7c33278
Merge commit '00d3504bb4ea51bfb6a02ba729d98b2cdb74e425'
Oct 18, 2022
60b7796
Merge commit '4cdb50036c225eaadf69acccd3ca34d5910227a6'
Oct 19, 2022
a49577d
Merge commit 'ca87540ec34fae47727e1ead329f6fc4916a92a2'
Oct 19, 2022
68c7693
Merge commit 'd0ba19cf46b73bca890f3464f32df4759289c6d8'
Oct 20, 2022
a357076
Merge commit 'b22af1f1ec56f0dba1fb2fc0f192cb603eceb100'
Oct 20, 2022
d66b2c9
Merge commit '6873fd780bc9d4f4b8673c7fb7fc79714be98c96'
Oct 20, 2022
9efba8c
Merge commit 'c4e6162f57cbe021ee8d9252303ee9832791a11e'
Oct 21, 2022
f150978
Merge commit '3c6e0442d4fb840745ece9f852bb035dec2ca171'
Oct 21, 2022
f748bbf
Merge commit '89c6c3ceafe093c1771e2af5f81e3258832da8ed'
Oct 22, 2022
05c61f7
Merge commit '44d5cde5a20e560f94c8a1fd375bd359c2059db8'
Oct 24, 2022
53a2aaf
Merge commit '8c0f26b05a78e40712e6b3fe1846dbb32dd0b16d'
Oct 24, 2022
0d42109
Merge commit '58321d08844f477c39c4eb3435828cc6287652f4'
Oct 25, 2022
8bf77de
Merge commit '024e4bb1a1244090c372cd30594fb573cc62aa87'
Oct 25, 2022
fe98296
Merge commit '85bf6ca94f6e88bc4792865feedf80a43c168cbb'
Oct 26, 2022
0394ceb
Merge commit 'c896543e7c6484d6b32da2f7133ab3af08ef7203'
Oct 26, 2022
c453c97
Merge commit 'b61fda6c2512aaf93cf48fa0a63a47def05d8ead'
Oct 27, 2022
ba4161d
Merge commit '578846ba60e898a804dca7f858b0b801be203770'
Oct 27, 2022
1665d1e
Merge commit 'c02263346a5467d8a68d01e723c7a830ece6ba3d'
Nov 1, 2022
077bf8d
Merge commit '186b7a2dc2f40681c7e2cfce7f4271a474f4f41a'
Nov 1, 2022
8d344ea
Merge commit '2804bc311b755228855c3e6bafdfef79da971e98'
Nov 2, 2022
8f8c671
Merge commit '8c13e7606cf21e0b6bfff37cedabe56af15f65a4'
Nov 2, 2022
2ec2197
Merge commit '257f4bcd772486aaffd54e5a6fe5e91dc40e62c4'
Nov 3, 2022
8b16708
Merge commit '73a5b21d20aa23e3092202436913f5f99533f84f'
Nov 7, 2022
218b37e
Merge commit '5d2b5791c50761b824b05820f797830c4c9696ca'
Nov 8, 2022
a19189d
Merge commit '0d7fc9f090708d7f54fb9a86f1b23fd6000b0938'
Nov 8, 2022
7879f02
Merge commit 'b43f2b1972a13e4327c36ecbde65487b3cb3477f'
Nov 8, 2022
18fcb5d
Merge commit 'b1cd530a4838e78b83cf913f69ed9136507becba'
Nov 9, 2022
8bf3b87
Merge commit '1665db33f736b6b9f3694b74058d2299b3c120c3'
Nov 9, 2022
f344922
Merge commit '02490521f3e9a856e4ac3203182fee96cbb5fffa'
Nov 9, 2022
d231c40
Merge commit 'cd9930a2a29ea5f59029e3a2c4d6ef2567cb2f6d'
Nov 10, 2022
6f465d7
Merge commit '59d2d52f1e07baf133d5e034c34df08b2e9e777c'
Nov 12, 2022
49fefdf
Merge commit '133e19a36e4c8332a6dae24ae97dce8053043d63'
Nov 14, 2022
d14d77d
Merge commit '389f11ef23164a967adb25aaf849830bc808f983'
Nov 14, 2022
08993b5
Merge commit '64a73dabc5ccc407db7483f9fc79d1a76a9fbaf2'
Nov 16, 2022
963a2ac
Merge commit '9b236e951d5841c98eb29616a3b17628c7f856a7'
Nov 17, 2022
b524299
Merge commit '686b2b8de7d164d9afc6731e1aaedfd2381744c6'
Nov 17, 2022
261f336
Merge commit 'd4b04e0950dd2118c2c91aa47ebdf37ce6edb987'
Nov 18, 2022
05ca7ec
Merge commit '556f10bf3d0d5826ab76d48c3d37abdb253e7baa'
Nov 22, 2022
4edd472
Merge commit '805ff05cc5d246e20432c86b18ec57df87994a5e'
Nov 22, 2022
6104458
Merge commit '9ade924c4e41ca6635ff87d0b29ba81e4f412c93'
Nov 23, 2022
6bfb618
Merge commit '87bfc789ab0b1624925b67d934b793d268b8537b'
Nov 23, 2022
8faafc7
Merge commit '80bc95385f9b69223c5546f7f5083c640760f84a'
Nov 23, 2022
1cc5457
Merge commit '6db83f3fe8ca9c26008cd80f1f94f8421b1f9e83'
Nov 25, 2022
4c3e8f5
Merge commit 'affcf577860ec9d541e471e9bcf92cb39110429c'
Nov 25, 2022
63691af
Merge commit 'fbf809809ff1a225c6667fac3ea5fe50e5eddd39'
Nov 28, 2022
955577b
Merge commit 'be6f1045e3352c2d98a1d1d56a5ed7ee5c88959a'
Nov 28, 2022
f23d1dd
Merge commit '053263b7cb352a2fade8fe9c3855bdc11a3f9531'
Nov 29, 2022
a90dbff
Merge commit '5868544503a565d214f6847a9f85128c28dfc893'
Nov 30, 2022
637568d
Merge commit '6c35d15bc13b930e76437821f4644a41820a9332'
Nov 30, 2022
176b91e
Merge commit 'cd574b829f2a2dac1e8690849a882454fdbd441a'
Dec 1, 2022
97f942d
Merge commit 'fbf4010e7e53b35709a2860bebd5f45c63c68ec5'
Dec 1, 2022
37eb481
Merge commit 'fb2a4929eb89b301c44f731cb5737db525020c93'
Dec 1, 2022
8e09cd9
Merge commit '2c7dfb04e73b4426b9599a346e577ae4e09aa0c6'
Dec 1, 2022
d1d434d
Merge commit '5ff65808a9394b429338de9900ea68b31d642fdd'
Dec 2, 2022
c8b607a
Merge commit '8fd44f1b406f4c40cb078fd8b4e0e8c2dc5dbbaa'
Dec 2, 2022
153aa95
Merge commit '25dc90ff366f2aba721c264988dd9f8f0e7017c2'
Dec 3, 2022
065843f
Merge commit 'b93a3fa680a0e502fbb59c7aea667891c442f83e'
Dec 7, 2022
76629b4
Merge commit '328890468d618f19616714f322ef9f022b3d7a68'
Dec 8, 2022
289193d
Merge commit 'c6702758d5f14a9688f1b9d7398e5e3a7fd2b66c'
Dec 8, 2022
4039f56
Merge commit '98c34602f1ff385789d3102c26ac7a48697d7162'
Dec 8, 2022
d504e2e
Merge commit '119f3a62cf5004108153f7b184bd29d7db530360'
Dec 9, 2022
d262464
Merge commit 'd5b7dc273945fcfb6f19a38516fd955aaf1e919e'
Dec 9, 2022
09ec94d
Merge commit 'ba95fd6930fc5e4ef75fd3638efb5cf67a4832fe'
Dec 9, 2022
b9ee726
Merge commit '3d2819690edc7fd6f85502a4d812c5e271a9c5f9'
Dec 12, 2022
1979b54
Merge commit '68150bc967b9e09f731a2bdad28295f6b29a6184'
Dec 13, 2022
8953510
Merge commit '4dc140aeda472593d3184a76badd4368aa6c6517'
Dec 13, 2022
a7885f3
Merge commit '88491fdeb10db890004f4a9fc6030e8273f342fa'
Dec 14, 2022
d366eca
Merge commit 'd6132652c87f9d8bd1c0095e1c9a9604f9459ae1'
Dec 24, 2022
9e7927e
Merge commit '14f7ca8844298a1b7dabfd73921b6b3a46a1b15d'
Dec 24, 2022
4b7688d
Merge commit '55a64984bd4e35c3c3ab9263cf392e511b091f62'
Jan 2, 2023
da468a9
Merge commit '11f57bcc2d0b70aaff66f27d5207296c13236d7a'
Jan 3, 2023
4559025
Merge commit '4ee20ab6bfef933a37263df9a56272692651f335'
Jan 4, 2023
7899289
Merge commit '26aba711d409df2136373909ba938df451eb8120'
Jan 5, 2023
15529a7
Merge commit 'c2a70956c3a952ccd218779e0a79a914a44760fb'
Jan 6, 2023
116c32f
Merge commit 'a5d902c0d18442571a50141be9923f8d87d1a2f3'
Jan 8, 2023
573c256
Merge commit '8a850c71efb523550a42551e2625c4a0b459b75a'
Jan 9, 2023
af60733
Merge commit '306842792a5704013e8b74cccd3683710f93cda5'
Jan 9, 2023
888ea6f
Merge commit '1d65cb9692f810003bcb40547eb38bb7adaae276'
Jan 10, 2023
149637c
Merge commit '2a5f14b0dee6b2b3ca1516416251f36f5053701e'
Jan 10, 2023
524afd4
Merge commit 'd6ebce4053cd51f93e1ebdcc0d793a25dc268bfc'
Jan 11, 2023
762b50f
Merge commit 'bb746f87ffc67d00c7d605e44874a53d021b73e0'
Jan 13, 2023
61da8f7
Merge commit '578111153d4cdd21fde949204f9dcf423ad2e2f8'
Jan 13, 2023
22043a8
Merge commit 'd6b69ba167e618048da83a20a5cd600d2122c611'
Jan 17, 2023
29b5cbf
Merge commit '88d02336f5540585a557beaa9f866d3fc6f7ae1c'
Jan 18, 2023
96b1f13
Merge commit '1ffdac377c44b9beed66c624c32c3bcff8bd1b58'
Jan 19, 2023
61235d2
Merge commit '5596d8e19dca13c36f3ea51a773f9525372c7d41'
Mar 1, 2023
256fc22
Merge commit '79ab97ae6646f6a996093b4c22d782b54df67dca'
Mar 2, 2023
a942987
Merge commit '43ae13c3ed18fb9fc7d6b6628cffe79e0013c55f'
Mar 2, 2023
54bdc86
Merge commit '8323572d879c077db45928997bd43b727c9a205d'
Mar 2, 2023
14f7879
Merge commit '77ef470854aaff120112cb8e5fad041b273a1836'
Mar 3, 2023
e155710
Merge commit 'bbe4a82d4880e2175881e72b42e5aab31fd5b4fb'
Mar 4, 2023
1e86fe2
Merge commit 'dfafbe426e87b796557b8eb4c627acde3cdce6d2'
Mar 6, 2023
2d0f27b
Merge commit '884e5d2806533111b162e1ed4ad5e06410de018b'
Mar 7, 2023
ba64f5f
Merge commit '852cc3d05f6354645b511887a125a91584516014'
Mar 7, 2023
31c7920
Merge commit '92bbbad08ecdd35b7976054b18dd725757321da6'
Mar 7, 2023
d391bec
Merge commit '95367b5675f43be312c2e3594173f2c25ee11491'
Mar 7, 2023
621efb4
Merge commit '173a586fddccffde8d76b7cdf0eedfdbf92ec30d'
Mar 7, 2023
dd2cf66
Merge commit 'fc31514ee0628db9d9c18830c079fe9d5862f796'
Mar 8, 2023
db2e714
Merge commit '3d61a08da7c51abf496d71a0fbe1c2e458b7b80e'
Mar 8, 2023
f33c668
Merge commit 'a413ca5540702b30b3d1f46fd0c084a974c321ae'
Mar 9, 2023
f3a2473
Merge commit '53fae86c767efbabf5da31cf8032c3f180e48194'
Mar 9, 2023
62689e9
Merge commit 'f2ea5b80af2ad5f00529f960f537b91d62c54e3c'
Mar 9, 2023
c456cfa
Merge commit '5339b1d22208e79cf891d8b3d9c2c3fee132bf5b'
Mar 10, 2023
bdf13b0
Merge commit '1b8ff8ff63928738a9086407ef553fb1085e721a'
Mar 13, 2023
478dd7f
Merge commit '39798173308581be55814780829461d0b4764cde'
Mar 14, 2023
5283a51
Merge commit '0f3c5e697de1b676cb7b87730d7987c990f50a51'
Mar 15, 2023
b753958
Merge commit '5e8d82f2cf18df3ce348a8597a9df6bd4fe9f942'
Mar 15, 2023
a79f620
Merge commit '38760d52c760f308779a6e084412913505170403'
Mar 16, 2023
e26c613
Merge commit '4ca70c1cc65980b5b2d96b9bb27a773dbf402128'
Mar 17, 2023
fa5501f
Merge commit '332ebedc862e9e0fa82db3015d308c4015973e97'
Mar 17, 2023
e9d2d45
Merge commit '164901fd2b7b31cfdaef9b0486d667960ee03662'
Mar 18, 2023
d22b03a
Merge commit '2c9ce0aa39b7c06e7400bed62c38364cf3cde356'
Mar 21, 2023
52b8445
Merge commit 'ed8a2288aba99de7d087ef0623db3ced6be8ab7a'
Mar 23, 2023
c3d1aed
Merge commit 'c6f672078f25e990b569f41a114eea47cadf1de6'
Mar 23, 2023
2b92bca
Merge commit '9002cb7707a0fc0a1297c3712c338d7a68c361c2'
Mar 23, 2023
72681e3
Merge commit 'ab5fa5942e5d7b27ed8377d5b942e495d749c2af'
Mar 23, 2023
6cde141
Merge commit '789735799d08e6a103b28f3301b922988d090665'
Mar 24, 2023
563bdcd
Merge commit '365e994ba069d6ba0a93c02c439220ee60052716'
Mar 27, 2023
0a8b7f9
Merge commit '3eccf737ce9b258d916f1ae68eeba54f3c21fbf8'
Mar 28, 2023
696a609
Merge commit 'd65d99f8a9d7e6f380bc7d7e30b4ef415a4b8772'
Mar 30, 2023
ade08cd
Merge commit '87ef6dce88d74f88f51553640db1a5668949690e'
Mar 30, 2023
16e28cc
Merge commit '8001de67140dd2b2e114780874a2de1ac35ae0aa'
Apr 7, 2023
9662682
Merge commit 'ed724bce80349a297826421c08e74c7780c99838'
Apr 7, 2023
54f90bf
Merge commit 'ef959e4cfbe0c9eda5cd48d8e278e547307870c6'
Apr 10, 2023
84de2cd
Merge commit '04f706b81aa68e58e7976b03f099d8133af7b7f4'
Apr 10, 2023
08a238d
Merge commit '7927c3f9a228d97947aae5d1e51bdd20a3e3eb70'
Apr 11, 2023
1df488a
Merge commit 'ed547d2c82404610e816eec3a46a8e1bb6bcce56'
Apr 11, 2023
cd0f550
Merge commit '31b558b7025563acaed8268d3966d31d536cfcaf'
Apr 11, 2023
928e353
Merge commit 'f0dc2b61824640eb18ec97ebc4f0938861ca22be'
Apr 13, 2023
cea119f
Merge commit 'd8c2ac81a91135f8a4619ec19ae057adf7e1171b'
Apr 13, 2023
956daa0
Merge commit '0b5ef0b31285845f153c6ac7e894f7c96578af22'
Apr 13, 2023
daecf83
Merge commit '0a3076a2d764aa49f0c1694b3f175078a5c4ec52'
Apr 14, 2023
eda9852
Merge commit '5c12bc4d429c12e5cc23622fdbd9ba3e2a5bb5ee'
Apr 14, 2023
4500fa6
Merge commit '0408a9ce14c1220cca48e9a9d6bbc700ee9418ad'
Apr 14, 2023
324f990
Merge commit 'eeb69794fbf873bce102682207f0ddaf57f9e9c0'
Apr 17, 2023
26d02c2
Merge commit '092e6fdb7e1a926c659b8beaf5303c96de99c957'
Apr 21, 2023
ccbf3e0
Merge commit '7203cb5ad7cfa67282970ddeba77c73782b8735d'
Apr 21, 2023
e17741c
Merge commit 'b03f17f94d8b47792586eb1ba3d7ede0fd7f52e3'
Apr 24, 2023
ddcc158
Merge commit '18571f74d3fafe500f106c3943ade2c168a37899'
Apr 24, 2023
880df74
Merge commit 'b33f42293b2891089af7bfb19a84fb3ab852e65b'
Apr 25, 2023
81d821b
Merge commit 'bfdab6d8ceb404d7d82d3ff554a5ccd3a8f7e689'
Apr 25, 2023
dee0eff
Merge commit 'cb4c8df20a45fc10b23afafefd940f92e1fd582f'
Apr 26, 2023
9e89a81
Merge commit 'f6cfc60b902831a2d80fece8f96f0c334661b514'
Apr 26, 2023
be26d25
Merge commit '96cecae67b68b5cfa6a222237f8bc50099a56140'
Apr 27, 2023
925d71b
Merge commit 'da3aab9f23678dc507e90c0f1bda90907b9ea8d3'
Apr 28, 2023
4b3a315
Merge commit 'd97f1605221c2bdc9c82169c9649e861b47053da'
Apr 29, 2023
a71f10e
Merge commit 'cbce56835285702e37b5493f86a949cda8bfce1d'
Apr 29, 2023
42a0ff1
Merge commit '244316fe039a15f002aa16aebc5fa691c1e83dbd'
Apr 29, 2023
34f5194
Merge commit '0124ff9274f939e9152e4e3ba4437cb720e43250'
Apr 30, 2023
b62ec11
Merge commit '49cc9abb030a1400a5ad643c249e3dc0745b5e00'
May 2, 2023
394e606
Merge commit '0b3e8bd9df04495ae5c84fb8270d4ce29d8c3de8'
May 3, 2023
9189c66
Merge commit '7f0316bdb3c1d6ce1df2f6e39b1541ad35de90aa'
May 5, 2023
ce6ca9a
Merge commit 'cdb5ac9574a68616560fa72652403f86cc5c0530'
May 5, 2023
214f697
Merge commit '89f888e7441ca3216e798c592b458865234c1567'
May 6, 2023
b41e00f
Merge commit 'd1694dad8cef593e9b823adffb559b52d975d8c8'
May 9, 2023
6276d82
Merge commit 'c681fa08bbb4fc42967b6982b23878b2957a6dc9'
May 9, 2023
a924844
Merge commit '03358c72c57ed13a9be2e7f9b78ec52d64a8e5bc'
May 10, 2023
cce62a3
Merge commit 'ccba6261849cc534b076efb887bb9426d12e4abf'
May 10, 2023
130cd96
Additional postprocessors & dirackernels
wjin33 Nov 12, 2023
2741301
add direc kernal with time dependent source/sink
wjin33 Nov 27, 2023
a03a633
direckerKernel modification
wjin33 Dec 2, 2023
f8ff798
Merge branch 'master' into devel
wjin33 Sep 12, 2024
9139b79
switch to const getvalue
wjin33 Sep 13, 2024
c216d7c
remove white space
wjin33 Sep 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions include/dirackernels/EnthalpySink.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "DiracKernel.h"
#include "PorousFlowPolyLineSink.h"

class SinglePhaseFluidProperties;

/**
* Point source (or sink) that adds (removes) fluid at a mass flux rate specified by a postprocessor
*/
class EnthalpySink : public PorousFlowPolyLineSink
{
public:
static InputParameters validParams();

EnthalpySink(const InputParameters & parameters);

virtual Real computeQpBaseOutflow(unsigned current_dirac_ptid) const override;

protected:
/// Pressure
const VariableValue & _pressure;
/// Specified inlet temperature
const Real & _T_in;
/// Fluid properties UserObject
const SinglePhaseFluidProperties & _fp;
};
35 changes: 35 additions & 0 deletions include/dirackernels/FunctionEnthalpySink.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "PorousFlowPolyLineSink.h"

class SinglePhaseFluidProperties;
class Function;
/**
* Point source (or sink) that adds (removes) fluid at a mass flux rate specified by a postprocessor
*/
class FunctionEnthalpySink : public PorousFlowPolyLineSink
{
public:
static InputParameters validParams();

FunctionEnthalpySink(const InputParameters & parameters);

virtual Real computeQpBaseOutflow(unsigned current_dirac_ptid) const override;

protected:
/// Pressure
const VariableValue & _pressure;
/// The function being used for evaluation
const Function & _func;
/// Fluid properties UserObject
const SinglePhaseFluidProperties & _fp;
};
46 changes: 46 additions & 0 deletions include/dirackernels/PointEnthalpySink.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "DiracKernel.h"

class SinglePhaseFluidProperties;

/**
* Point source that adds heat energy corresponding to adding a fluid with flux rate specified by a
* postprocessor at given temperature (specified by a postprocessor).
*/
class PointEnthalpySink : public DiracKernel
{
public:
static InputParameters validParams();

PointEnthalpySink(const InputParameters & parameters);

virtual void addPoints() override;
virtual Real computeQpResidual() override;
virtual Real computeQpJacobian() override;
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override;

protected:
/// The constant mass flux (kg/s)
const PostprocessorValue & _mass_flux;
/// Pressure
const VariableValue & _pressure;
/// Quadpoint temperature
const MaterialProperty<Real> * const _temperature;

/// Fluid properties UserObject
const SinglePhaseFluidProperties & _fp;
/// The location of the point source
const Point _p;
/// Presure variable number
unsigned int _p_var_num;
};
44 changes: 44 additions & 0 deletions include/dirackernels/PointEnthalpySourceFromFunction.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "DiracKernel.h"

class SinglePhaseFluidProperties;

/**
* Point source that adds heat energy corresponding to adding a fluid with flux rate specified by a
* postprocessor at given temperature (specified by a postprocessor).
*/
class PointEnthalpySourceFromFunction : public DiracKernel
{
public:
static InputParameters validParams();

PointEnthalpySourceFromFunction(const InputParameters & parameters);

virtual void addPoints() override;
virtual Real computeQpResidual() override;
virtual Real computeQpJacobian() override;
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override;
protected:
/// The constant mass flux (kg/s)
const PostprocessorValue & _mass_flux;
/// Pressure
const VariableValue & _pressure;
/// The function being used for inlet temperature (K)
const Function & _func;
/// Fluid properties UserObject
const SinglePhaseFluidProperties & _fp;
/// The location of the point source
const Point _p;
/// Presure variable number
unsigned int _p_var_num;
};
55 changes: 55 additions & 0 deletions include/dirackernels/PointEnthalpySourceSinkFromFunction.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "DiracKernel.h"
#include "PorousFlowSumQuantity.h"
class Function;
class SinglePhaseFluidProperties;
/**
* Point source (or sink) that adds (removes) fluid at a constant mass flux rate for times
* between the specified start and end times. If no start and end times are specified,
* the source (sink) starts at the start of the simulation and continues to act indefinitely
*/
class PointEnthalpySourceSinkFromFunction : public DiracKernel
{
public:
static InputParameters validParams();

PointEnthalpySourceSinkFromFunction(const InputParameters & parameters);

virtual void addPoints() override;
virtual Real computeQpResidual() override;
virtual Real computeQpJacobian() override;
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override;

protected:
/**
* This is used to hold the total fluid flowing into the line sink for each time step.
* Hence, it is positive for production wells where fluid is flowing
* from porespace into the line sink (and hence removed from the model)
*/
PorousFlowSumQuantity & _total_outflow_enthalpy;
/// The function being used for mass flux (kg/s) function
const Function & _func_mass_flux;
/// The function being used for temperature (K) function
const Function & _func_temperature;
/// Pressure
const VariableValue & _pressure;
/// Quadpoint temperature
const MaterialProperty<Real> * const _temperature;
/// Fluid properties UserObject
const SinglePhaseFluidProperties & _fp;
/// The location of the point source (sink)
const Point _p;
/// Presure variable number
unsigned int _p_var_num;

};
41 changes: 41 additions & 0 deletions include/dirackernels/PointSourceSinkFromFunction.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "DiracKernel.h"
#include "PorousFlowSumQuantity.h"
class Function;
/**
* Point source (or sink) that adds (removes) fluid at a mass flux rate specified by a postprocessor
*/
class PointSourceSinkFromFunction : public DiracKernel
{
public:
static InputParameters validParams();

PointSourceSinkFromFunction(const InputParameters & parameters);

virtual void addPoints() override;
virtual Real computeQpResidual() override;
// virtual Real computeQpJacobian() override;
// virtual Real computeQpOffDiagJacobian(unsigned int jvar) override;

protected:
/// The function being used for evaluation mass flux
const Function & _func;
/// The location of the point source (sink)
const Point _p;
/**
* This is used to hold the total fluid flowing into the line sink for each time step.
* Hence, it is positive for production wells where fluid is flowing
* from porespace into the line sink (and hence removed from the model)
*/
PorousFlowSumQuantity & _total_outflow_mass;
};
51 changes: 51 additions & 0 deletions include/dirackernels/PorousFlowSquarePulsePointEnthalpySink.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "DiracKernel.h"

class SinglePhaseFluidProperties;

/**
* Point source that adds heat energy corresponding to adding a fluid with flux rate specified by a
* postprocessor at given temperature (specified by a postprocessor).
*/
class PorousFlowSquarePulsePointEnthalpySink : public DiracKernel
{
public:
static InputParameters validParams();

PorousFlowSquarePulsePointEnthalpySink(const InputParameters & parameters);

virtual void addPoints() override;
virtual Real computeQpResidual() override;
virtual Real computeQpJacobian() override;
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override;

protected:
/// The constant mass flux (kg/s)
const Real _mass_flux;
/// Pressure
const VariableValue & _pressure;
/// Quadpoint temperature
const MaterialProperty<Real> * const _temperature;

/// Fluid properties UserObject
const SinglePhaseFluidProperties & _fp;
/// The location of the point source
const Point _p;
/// The time at which the point source (sink) starts operating
const Real _start_time;

/// The time at which the point source (sink) stops operating
const Real _end_time;
/// Presure variable number
unsigned int _p_var_num;
};
52 changes: 52 additions & 0 deletions include/dirackernels/PorousFlowSquarePulsePointEnthalpySource.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "DiracKernel.h"
class SinglePhaseFluidProperties;
/**
* Point source (or sink) that adds (removes) fluid at a constant mass flux rate for times
* between the specified start and end times. If no start and end times are specified,
* the source (sink) starts at the start of the simulation and continues to act indefinitely
*/
class PorousFlowSquarePulsePointEnthalpySource : public DiracKernel
{
public:
static InputParameters validParams();

PorousFlowSquarePulsePointEnthalpySource(const InputParameters & parameters);

virtual void addPoints() override;
virtual Real computeQpResidual() override;
virtual Real computeQpJacobian() override;
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override;

protected:
/// The constant mass flux (kg/s)
const Real _mass_flux;
/// Pressure
const VariableValue & _pressure;
/// The location of the point source (sink)
const Point _p;
/// Input temperature
const Real _temperature;

/// Fluid properties UserObject
const SinglePhaseFluidProperties & _fp;

/// The time at which the point source (sink) starts operating
const Real _start_time;

/// The time at which the point source (sink) stops operating
const Real _end_time;

/// Pressure variable number
unsigned int _p_var_num;
};
45 changes: 45 additions & 0 deletions include/postprocessors/PorousFlowAccumulator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class PorousFlowAccumulator;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relative change rate in a post-processor value.
*/
class PorousFlowAccumulator : public GeneralPostprocessor
{
public:
static InputParameters validParams();

PorousFlowAccumulator(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:
/// current post-processor value
const PostprocessorValue & _pps_value;

/// current time value
const PostprocessorValue & _pps_t;

// Real _accumulator_start_time;
// Real _accumulator_end_time;
Real _accumulator;

};

41 changes: 41 additions & 0 deletions include/postprocessors/PorousFlowDoubletBreakthroughTerminator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class PorousFlowDoubletBreakthroughTerminator;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relativse change rate in a post-processor value.
*/
class PorousFlowDoubletBreakthroughTerminator : public GeneralPostprocessor
{
public:
static InputParameters validParams();

PorousFlowDoubletBreakthroughTerminator(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:
/// current post-processor value
const PostprocessorValue & _pps_value;
/// constant input
Real _temp_init_value;
Real _pps_relative_diff;
Real _keep_constant;

};
41 changes: 41 additions & 0 deletions include/postprocessors/PorousFlowDoubletBreakthroughTime.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class PorousFlowDoubletBreakthroughTime;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relative change rate in a post-processor value.
*/
class PorousFlowDoubletBreakthroughTime : public GeneralPostprocessor
{
public:
static InputParameters validParams();

PorousFlowDoubletBreakthroughTime(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:
/// current post-processor value
const PostprocessorValue & _pps_value;
const PostprocessorValue & _pps_time;
/// constant input

Real _keep_constant;

};
42 changes: 42 additions & 0 deletions include/postprocessors/PorousFlowDoubletSwitch.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class PorousFlowDoubletSwitch;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relative change rate in a post-processor value.
*/
class PorousFlowDoubletSwitch : public GeneralPostprocessor
{
public:
static InputParameters validParams();

PorousFlowDoubletSwitch(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:
/// current post-processor value
const PostprocessorValue & _pps_value;
const PostprocessorValue & _pps_time;
/// constant input
Real _temp_init_value;
Real _pps_relative_diff;
Real _charge_time;

};
41 changes: 41 additions & 0 deletions include/postprocessors/PorousFlowEnergyAccumulator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class PorousFlowEnergyAccumulator;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relative change rate in a post-processor value.
*/
class PorousFlowEnergyAccumulator : public GeneralPostprocessor
{
public:
static InputParameters validParams();

PorousFlowEnergyAccumulator(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:
/// current post-processor value
const PostprocessorValue & _pps_hot;
const PostprocessorValue & _pps_cold;
const PostprocessorValue & _pps_pro;

Real _accumulator;

};
41 changes: 41 additions & 0 deletions include/postprocessors/PorousFlowRecoveryRate.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class PorousFlowRecoveryRate;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relative change rate in a post-processor value.
*/
class PorousFlowRecoveryRate : public GeneralPostprocessor
{
public:
static InputParameters validParams();

PorousFlowRecoveryRate(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:
/// current post-processor value
const PostprocessorValue & _pps_hot;
const PostprocessorValue & _pps_cold;

Real _accumulator_inj;
Real _accumulator_ext;

};
43 changes: 43 additions & 0 deletions include/postprocessors/PorousFlowRecoveryRateSeason.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class PorousFlowRecoveryRateSeason;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relative change rate in a post-processor value.
*/
class PorousFlowRecoveryRateSeason : public GeneralPostprocessor
{
public:
static InputParameters validParams();

PorousFlowRecoveryRateSeason(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:
/// current post-processor value
const PostprocessorValue & _pps_hot;
const PostprocessorValue & _pps_cold;
const PostprocessorValue & _pps_inj;
const PostprocessorValue & _pps_pro;

Real _accumulator_inj;
Real _accumulator_ext;

};
39 changes: 39 additions & 0 deletions include/postprocessors/PorousFlowRecoveryTime.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class PorousFlowRecoveryTime;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relative change rate in a post-processor value.
*/
class PorousFlowRecoveryTime : public GeneralPostprocessor
{
public:
static InputParameters validParams();

PorousFlowRecoveryTime(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:
/// current post-processor value
const PostprocessorValue & _pps_value;
const PostprocessorValue & _pps_time;
/// constant input

};
40 changes: 40 additions & 0 deletions include/postprocessors/PorousFlowRecoveryTimeAccumulator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class PorousFlowRecoveryTimeAccumulator;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relative change rate in a post-processor value.
*/
class PorousFlowRecoveryTimeAccumulator : public GeneralPostprocessor
{
public:
static InputParameters validParams();

PorousFlowRecoveryTimeAccumulator(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:
/// current post-processor value
const PostprocessorValue & _pps_iswinter;
const PostprocessorValue & _pps_dt;
Real _accumulator;
/// constant input

};
45 changes: 45 additions & 0 deletions include/postprocessors/PorousFlowSteadyStateDetection.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class PorousFlowSteadyStateDetection;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relative change rate in a post-processor value.
*/
class PorousFlowSteadyStateDetection : public GeneralPostprocessor
{
public:
static InputParameters validParams();

PorousFlowSteadyStateDetection(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:
/// current post-processor value
const PostprocessorValue & _pps_value;

/// old post-processor value
const PostprocessorValue & _pps_value_old;

/// current dt value
const PostprocessorValue & _pps_dt;

/// old dt
const PostprocessorValue & _pps_dt_old;
};
44 changes: 44 additions & 0 deletions include/postprocessors/PorousFlowSteadyStateTerminator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class PorousFlowSteadyStateTerminator;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relative change rate in a post-processor value.
*/
class PorousFlowSteadyStateTerminator : public GeneralPostprocessor
{
public:
static InputParameters validParams();

PorousFlowSteadyStateTerminator(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:
/// current post-processor value
const PostprocessorValue & _pps_value;

/// current time value
const PostprocessorValue & _pps_t;

Real _steady_state_start_time;
Real _steady_state_end_time;
Real _steady_state_relative_diff;

};
46 changes: 46 additions & 0 deletions include/postprocessors/PorousFlowTemperatureDropTerminator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class PorousFlowTemperatureDropTerminator;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relative change rate in a post-processor value.
*/
class PorousFlowTemperatureDropTerminator : public GeneralPostprocessor
{
public:
static InputParameters validParams();

PorousFlowTemperatureDropTerminator(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:

const PostprocessorValue & _pps_value_J;

const PostprocessorValue & _pps_value_kg;
/// current time value
const PostprocessorValue & _pps_t;

// Real _temperature_detection_cap_time;
Real _temperature_inj;
Real _temperature_init;
Real _percentile_drop;

};
41 changes: 41 additions & 0 deletions include/postprocessors/timestepPostprocessor.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

#include "GeneralPostprocessor.h"

class timestepPostprocessor;

///template <>
///InputParameters validParams<PorousFlowSteadyStateDetection>();

/**
* Computes the relative change rate in a post-processor value.
*/
class timestepPostprocessor : public GeneralPostprocessor
{
public:
static InputParameters validParams();

timestepPostprocessor(const InputParameters & parameters);

virtual void initialize() override;
virtual void execute() override;
virtual Real getValue() const override;

protected:
/// current post-processor value
const PostprocessorValue & _pps_value;
const PostprocessorValue & _pps_time;
/// constant input
Real _pps_relative_diff;
Real _charge_time;

};
38 changes: 38 additions & 0 deletions src/dirackernels/EnthalpySink.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "EnthalpySink.h"
#include "SinglePhaseFluidProperties.h"

registerMooseObject("FalconApp", EnthalpySink);

InputParameters
EnthalpySink::validParams()
{
InputParameters params = PorousFlowPolyLineSink::validParams();
params.addRequiredParam<UserObjectName>("fp", "The name of the user object for fluid properties");
params.addRequiredCoupledVar("pressure", "Pressure");
params.addRequiredParam<Real>("T_in", "The incoming fluid temperature");
return params;
}

EnthalpySink::EnthalpySink(const InputParameters & parameters)
: PorousFlowPolyLineSink(parameters),
_pressure(coupledValue("pressure")),
_T_in(getParam<Real>("T_in")),
_fp(getUserObject<SinglePhaseFluidProperties>("fp"))
{
}

Real
EnthalpySink::computeQpBaseOutflow(unsigned current_dirac_ptid) const
{
Real h = _fp.h_from_p_T(_pressure[_qp], _T_in);
return PorousFlowPolyLineSink::computeQpBaseOutflow(current_dirac_ptid) * h;
}
40 changes: 40 additions & 0 deletions src/dirackernels/FunctionEnthalpySink.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "FunctionEnthalpySink.h"
#include "SinglePhaseFluidProperties.h"
#include "Function.h"

registerMooseObject("FalconApp", FunctionEnthalpySink);

InputParameters
FunctionEnthalpySink::validParams()
{
InputParameters params = PorousFlowPolyLineSink::validParams();
params.addRequiredParam<UserObjectName>("fp", "The name of the user object for fluid properties");
params.addRequiredCoupledVar("pressure", "Pressure");
params.addRequiredParam<FunctionName>("function", "The forcing function.");
return params;
}

FunctionEnthalpySink::FunctionEnthalpySink(const InputParameters & parameters)
: PorousFlowPolyLineSink(parameters),
_pressure(coupledValue("pressure")),
_func(getFunction("function")),
_fp(getUserObject<SinglePhaseFluidProperties>("fp"))
{
}

Real
FunctionEnthalpySink::computeQpBaseOutflow(unsigned current_dirac_ptid) const
{
Real _T_in = _func.value(_t, _q_point[_qp]);
Real h = _fp.h_from_p_T(_pressure[_qp], _T_in);
return PorousFlowPolyLineSink::computeQpBaseOutflow(current_dirac_ptid) * h;
}
78 changes: 78 additions & 0 deletions src/dirackernels/PointEnthalpySink.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PointEnthalpySink.h"
#include "SinglePhaseFluidProperties.h"

registerMooseObject("FalconApp", PointEnthalpySink);

InputParameters
PointEnthalpySink::validParams()
{
InputParameters params = DiracKernel::validParams();
params.addRequiredParam<PostprocessorName>(
"mass_flux",
"The postprocessor name holding the mass flux of injected fluid at this point in kg/s "
"(please ensure this is positive so that this object acts like a source)");
params.addRequiredParam<UserObjectName>(
"fp",
"The name of the user object used to calculate the fluid properties of the injected fluid");
params.addRequiredCoupledVar(
"pressure", "Pressure used to calculate the injected fluid enthalpy (measured in Pa)");
params.addRequiredParam<Point>("point", "The x,y,z coordinates of the point source");
params.addClassDescription("Point source that adds heat energy corresponding to injection of a "
"fluid with specified mass flux rate (specified by a postprocessor) "
"at given temperature (specified by a postprocessor)");
return params;
}

PointEnthalpySink::PointEnthalpySink(
const InputParameters & parameters)
: DiracKernel(parameters),
_mass_flux(getPostprocessorValue("mass_flux")),
_pressure(coupledValue("pressure")),
_temperature(&getMaterialProperty<Real>("PorousFlow_temperature_qp")),
_fp(getUserObject<SinglePhaseFluidProperties>("fp")),
_p(getParam<Point>("point")),
_p_var_num(coupled("pressure"))
{
}

void
PointEnthalpySink::addPoints()
{
addPoint(_p, 0);
}

Real
PointEnthalpySink::computeQpResidual()
{
// Negative sign to make a positive mass_flux in the input file a source
Real h = _fp.h_from_p_T(_pressure[_qp], (*_temperature)[_qp]);
return _test[_i][_qp] * _mass_flux * h;
}

Real
PointEnthalpySink::computeQpJacobian()
{
return 0.;
}

Real
PointEnthalpySink::computeQpOffDiagJacobian(unsigned int jvar)
{
if (jvar == _p_var_num)
{
Real h, dh_dp, dh_dT;
_fp.h_from_p_T(_pressure[_qp], (*_temperature)[_qp], h, dh_dp, dh_dT);
return _test[_i][_qp] * _phi[_j][_qp] * _mass_flux * dh_dp;
}
else
return 0.;
}
116 changes: 116 additions & 0 deletions src/dirackernels/PointEnthalpySourceSinkFromFunction.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PointEnthalpySourceSinkFromFunction.h"
#include "SinglePhaseFluidProperties.h"
#include "Function.h"

registerMooseObject("FalconApp", PointEnthalpySourceSinkFromFunction);

InputParameters
PointEnthalpySourceSinkFromFunction::validParams()
{
InputParameters params = DiracKernel::validParams();
params.addRequiredParam<UserObjectName>(
"SumQuantityUO",
"User Object of type=PorousFlowSumQuantity in which to place the total "
"outflow from the line sink for each time step.");
params.addRequiredParam<FunctionName>("mass_flux_function",
"The function holding the mass flux at this point in kg/s (positive is flux in,"
"negative is flux out)");
params.addRequiredParam<FunctionName>("temperature_function",
"The function holding the temperature (K) of the injected fluid,"
"Function value is 0 if the fluid is extracted");
params.addRequiredCoupledVar(
"pressure", "Pressure used to calculate the injected fluid enthalpy (measured in Pa)");
params.addRequiredParam<UserObjectName>(
"fp",
"The name of the user object used to calculate the fluid properties of the injected fluid");
params.addRequiredParam<Point>("point", "The x,y,z coordinates of the point source");
params.addClassDescription("Integrated Point Sink that adds/minus heat energy at a variable mass "
" flux rate and a variable temperature ");
return params;
}

PointEnthalpySourceSinkFromFunction::PointEnthalpySourceSinkFromFunction(
const InputParameters & parameters)
: DiracKernel(parameters),
_total_outflow_enthalpy(const_cast<PorousFlowSumQuantity &>(getUserObject<PorousFlowSumQuantity>("SumQuantityUO"))),
_func_mass_flux(getFunction("mass_flux_function")),
_func_temperature(getFunction("temperature_function")),
_pressure(coupledValue("pressure")),
_temperature(&getMaterialProperty<Real>("PorousFlow_temperature_qp")),
_fp(getUserObject<SinglePhaseFluidProperties>("fp")),
_p(getParam<Point>("point")),
_p_var_num(coupled("pressure"))
{
// zero the outflow mass
_total_outflow_enthalpy.zero();
}

void
PointEnthalpySourceSinkFromFunction::addPoints()
{
_total_outflow_enthalpy.zero();
addPoint(_p, 0);
}

Real
PointEnthalpySourceSinkFromFunction::computeQpResidual()
{
//check whether the fluid is injected for extracted from the point
Real _mass_flux = _func_mass_flux.value(_t, _p);
Real _T_input = _func_temperature.value(_t, _p);
// printf("_mass_flux=%f",_mass_flux);
// printf("_T_input=%f",_T_input);
Real h =0;
if ((_mass_flux>=0) && (_T_input<=0)){ //extraction
h = _fp.h_from_p_T(_pressure[_qp], (*_temperature)[_qp]);
// printf("check_extraction");
}else if((_mass_flux<=0) && (_T_input>0)){ //injection
h = _fp.h_from_p_T(_pressure[_qp], _T_input);
// printf("check_injection");
}else{
mooseError(name(), "The functions of mass flux and temperature are not coordinated for injection and extraction");
}
// printf("h=%f",h);
// The test function is used here to account for all quadrature points
_total_outflow_enthalpy.add(_test[_i][_qp]*_mass_flux * h * _dt);
// negative sign means source, while positive sign means sink
return _test[_i][_qp] * _mass_flux * h;
}

Real
PointEnthalpySourceSinkFromFunction::computeQpJacobian()
{
return 0.;
}

Real
PointEnthalpySourceSinkFromFunction::computeQpOffDiagJacobian(unsigned int jvar)
{

if (jvar == _p_var_num)
{
Real h, dh_dp, dh_dT;
Real _mass_flux = _func_mass_flux.value(_t, _p);
Real _T_input = _func_temperature.value(_t, _p);
if ((_mass_flux>=0) && (_T_input<=0)){ //extraction
_fp.h_from_p_T(_pressure[_qp], (*_temperature)[_qp], h, dh_dp, dh_dT);
return _test[_i][_qp] * _phi[_j][_qp]* _mass_flux * dh_dp;
}else if((_mass_flux<=0) && (_T_input>0)){ //injection
_fp.h_from_p_T(_pressure[_qp], _T_input, h, dh_dp, dh_dT);
return _test[_i][_qp] * _phi[_j][_qp]* _mass_flux * dh_dp;
}else{
mooseError(name(), "The functions of mass flux and temperature are not coordinated for injection and extraction");
}
}
else
return 0.;
}
55 changes: 55 additions & 0 deletions src/dirackernels/PointSourceSinkFromFunction.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PointSourceSinkFromFunction.h"
#include "Function.h"

registerMooseObject("FalconApp", PointSourceSinkFromFunction);

InputParameters
PointSourceSinkFromFunction::validParams()
{
InputParameters params = DiracKernel::validParams();
params.addRequiredParam<FunctionName>("mass_flux_function", "The function holding the mass flux at this point in kg/s (positive is flux in, "
"negative is flux out)");
params.addRequiredParam<Point>("point", "The x,y,z coordinates of the point source (sink)");
params.addRequiredParam<UserObjectName>(
"SumQuantityUO",
"User Object of type=PorousFlowSumQuantity in which to place the total "
"outflow from the line sink for each time step.");
params.addClassDescription("This inject or extract fluid from a point via a function");
return params;
}

PointSourceSinkFromFunction::PointSourceSinkFromFunction(const InputParameters & parameters)
: DiracKernel(parameters),
_func(getFunction("mass_flux_function")),
_p(getParam<Point>("point")),
_total_outflow_mass(const_cast<PorousFlowSumQuantity &>(getUserObject<PorousFlowSumQuantity>("SumQuantityUO")))
{
// zero the outflow mass
_total_outflow_mass.zero();
}

void
PointSourceSinkFromFunction::addPoints()
{
_total_outflow_mass.zero();
addPoint(_p, 0);
}

Real
PointSourceSinkFromFunction::computeQpResidual()
{
Real _mass_flux = _func.value(_t, _p);
// The test function is used here to account for all quadrature points
_total_outflow_mass.add(_test[_i][_qp]*_mass_flux * _dt) ;
// Negative sign to make a positive mass_flux in the input file a source
return _test[_i][_qp] * _mass_flux;
}
137 changes: 137 additions & 0 deletions src/dirackernels/PorousFlowSquarePulsePointEnthalpySink.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowSquarePulsePointEnthalpySink.h"
#include "SinglePhaseFluidProperties.h"

registerMooseObject("FalconApp", PorousFlowSquarePulsePointEnthalpySink);

InputParameters
PorousFlowSquarePulsePointEnthalpySink::validParams()
{
InputParameters params = DiracKernel::validParams();
params.addRequiredParam<Real>(
"mass_flux",
"The mass flux at this point in kg/s (positive is flux in, negative is flux out)");
params.addRequiredParam<UserObjectName>(
"fp",
"The name of the user object used to calculate the fluid properties of the injected fluid");
params.addRequiredCoupledVar(
"pressure", "Pressure used to calculate the injected fluid enthalpy (measured in Pa)");
params.addRequiredParam<Point>("point", "The x,y,z coordinates of the point source");
params.addParam<Real>(
"start_time", 0.0, "The time at which the source will start (Default is 0)");
params.addParam<Real>(
"end_time", 1.0e30, "The time at which the source will end (Default is 1e30)");
params.addClassDescription("Point sink that adds heat energy at a constant mass "
" flux rate "
"at given temperature (specified by a postprocessor)");
return params;
}

PorousFlowSquarePulsePointEnthalpySink::PorousFlowSquarePulsePointEnthalpySink(
const InputParameters & parameters)
: DiracKernel(parameters),
_mass_flux(getParam<Real>("mass_flux")),
_pressure(coupledValue("pressure")),
_temperature(&getMaterialProperty<Real>("PorousFlow_temperature_qp")),
_fp(getUserObject<SinglePhaseFluidProperties>("fp")),
_p(getParam<Point>("point")),
_start_time(getParam<Real>("start_time")),
_end_time(getParam<Real>("end_time")),
_p_var_num(coupled("pressure"))
{
// Sanity check to ensure that the end_time is greater than the start_time
if (_end_time <= _start_time)
mooseError(name(),
": start time for PorousFlowSquarePulsePointEnthalpySource is ",
_start_time,
" but it must be less than end time ",
_end_time);
}

void
PorousFlowSquarePulsePointEnthalpySink::addPoints()
{
addPoint(_p, 0);
}

Real
PorousFlowSquarePulsePointEnthalpySink::computeQpResidual()
{
Real factor = 0.0;
/**
* There are six cases for the start and end time in relation to t-dt and t.
* If the interval (t-dt,t) is only partly but not fully within the (start,end)
* interval, then the mass_flux is scaled so that the total mass added
* (or removed) is correct
*/
if (_t < _start_time || _t - _dt >= _end_time)
factor = 0.0;
else if (_t - _dt < _start_time)
{
if (_t <= _end_time)
factor = (_t - _start_time) / _dt;
else
factor = (_end_time - _start_time) / _dt;
}
else
{
if (_t <= _end_time)
factor = 1.0;
else
factor = (_end_time - (_t - _dt)) / _dt;
}
// Negative sign to make a positive mass_flux in the input file a source
Real h = _fp.h_from_p_T(_pressure[_qp], (*_temperature)[_qp]);
return _test[_i][_qp] * factor * _mass_flux * h;
}

Real
PorousFlowSquarePulsePointEnthalpySink::computeQpJacobian()
{
return 0.;
}

Real
PorousFlowSquarePulsePointEnthalpySink::computeQpOffDiagJacobian(unsigned int jvar)
{
Real factor = 0.0;

/**
* There are six cases for the start and end time in relation to t-dt and t.
* If the interval (t-dt,t) is only partly but not fully within the (start,end)
* interval, then the mass_flux is scaled so that the total mass added
* (or removed) is correct
*/
if (_t < _start_time || _t - _dt >= _end_time)
factor = 0.0;
else if (_t - _dt < _start_time)
{
if (_t <= _end_time)
factor = (_t - _start_time) / _dt;
else
factor = (_end_time - _start_time) / _dt;
}
else
{
if (_t <= _end_time)
factor = 1.0;
else
factor = (_end_time - (_t - _dt)) / _dt;
}
if (jvar == _p_var_num)
{
Real h, dh_dp, dh_dT;
_fp.h_from_p_T(_pressure[_qp], (*_temperature)[_qp], h, dh_dp, dh_dT);
return _test[_i][_qp] * _phi[_j][_qp]* factor * _mass_flux * dh_dp;
}
else
return 0.;
}
142 changes: 142 additions & 0 deletions src/dirackernels/PorousFlowSquarePulsePointEnthalpySource.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowSquarePulsePointEnthalpySource.h"
#include "SinglePhaseFluidProperties.h"

registerMooseObject("FalconApp", PorousFlowSquarePulsePointEnthalpySource);

InputParameters
PorousFlowSquarePulsePointEnthalpySource::validParams()
{
InputParameters params = DiracKernel::validParams();
params.addRequiredParam<Real>(
"mass_flux",
"The mass flux at this point in kg/s (positive is flux in, negative is flux out)");
params.addRequiredParam<UserObjectName>(
"fp",
"The name of the user object used to calculate the fluid properties of the injected fluid");
params.addRequiredCoupledVar(
"pressure", "Pressure used to calculate the injected fluid enthalpy (measured in Pa)");
params.addRequiredParam<Real>("T_in", "The incoming fluid temperature");
params.addRequiredParam<Point>("point", "The x,y,z coordinates of the point source (sink)");
params.addParam<Real>(
"start_time", 0.0, "The time at which the source will start (Default is 0)");
params.addParam<Real>(
"end_time", 1.0e30, "The time at which the source will end (Default is 1e30)");
params.addClassDescription("Point source that adds heat energy at a constant mass "
"flux rate for times between the specified start and end times.");
return params;
}

PorousFlowSquarePulsePointEnthalpySource::PorousFlowSquarePulsePointEnthalpySource(
const InputParameters & parameters)
: DiracKernel(parameters),
_mass_flux(getParam<Real>("mass_flux")),
_pressure(coupledValue("pressure")),
_p(getParam<Point>("point")),
_temperature(getParam<Real>("T_in")),
_fp(getUserObject<SinglePhaseFluidProperties>("fp")),
_start_time(getParam<Real>("start_time")),
_end_time(getParam<Real>("end_time")),
_p_var_num(coupled("pressure"))
{
// Sanity check to ensure that the end_time is greater than the start_time
if (_end_time <= _start_time)
mooseError(name(),
": start time for PorousFlowSquarePulsePointEnthalpySource is ",
_start_time,
" but it must be less than end time ",
_end_time);
}

void
PorousFlowSquarePulsePointEnthalpySource::addPoints()
{
addPoint(_p, 0);
}

Real
PorousFlowSquarePulsePointEnthalpySource::computeQpResidual()
{
Real factor = 0.0;

/**
* There are six cases for the start and end time in relation to t-dt and t.
* If the interval (t-dt,t) is only partly but not fully within the (start,end)
* interval, then the mass_flux is scaled so that the total mass added
* (or removed) is correct
*/
if (_t < _start_time || _t - _dt >= _end_time)
factor = 0.0;
else if (_t - _dt < _start_time)
{
if (_t <= _end_time)
factor = (_t - _start_time) / _dt;
else
factor = (_end_time - _start_time) / _dt;
}
else
{
if (_t <= _end_time)
factor = 1.0;
else
factor = (_end_time - (_t - _dt)) / _dt;
}

// Negative sign to make a positive mass_flux in the input file a source
Real h = _fp.h_from_p_T(_pressure[_qp], _temperature);
return -_test[_i][_qp] * factor * _mass_flux * h;
}

Real
PorousFlowSquarePulsePointEnthalpySource::computeQpJacobian()
{
return 0.;
}

Real
PorousFlowSquarePulsePointEnthalpySource::computeQpOffDiagJacobian(unsigned int jvar)
{
Real factor = 0.0;

/**
* There are six cases for the start and end time in relation to t-dt and t.
* If the interval (t-dt,t) is only partly but not fully within the (start,end)
* interval, then the mass_flux is scaled so that the total mass added
* (or removed) is correct
*/
if (_t < _start_time || _t - _dt >= _end_time)
factor = 0.0;
else if (_t - _dt < _start_time)
{
if (_t <= _end_time)
factor = (_t - _start_time) / _dt;
else
factor = (_end_time - _start_time) / _dt;
}
else
{
if (_t <= _end_time)
factor = 1.0;
else
factor = (_end_time - (_t - _dt)) / _dt;
}


if (jvar == _p_var_num)
{
Real h, dh_dp, dh_dT;
_fp.h_from_p_T(_pressure[_qp], _temperature, h, dh_dp, dh_dT);
return _test[_i][_qp] * _phi[_j][_qp] * factor * _mass_flux * dh_dp;
}
else
return 0.;
}

55 changes: 55 additions & 0 deletions src/postprocessors/PorousFlowAccumulator.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowAccumulator.h"

registerMooseObject("FalconApp", PorousFlowAccumulator);

InputParameters
PorousFlowAccumulator::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("targetpostprocessor", "The name of the targetpostprocessor");
params.addRequiredParam<PostprocessorName>("timepostprocessor", "The name of the timepostprocessor");
/* params.addParam<Real>("accumulator_start_time", 0.0, "accumulator start time");
params.addParam<Real>("accumulator_end_time", 0.0, "accumulator cap time");
*/
params.addClassDescription("accumulate the targetted post processor value");
return params;
}

PorousFlowAccumulator::PorousFlowAccumulator(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_value(getPostprocessorValue("targetpostprocessor")),
_pps_t(getPostprocessorValue("timepostprocessor")),
/* _accumulator_start_time(getParam<Real>("accumulator_start_time")),
_accumulator_end_time(getParam<Real>("accumulator_end_time")),
*/
_accumulator(0)
{
}

void
PorousFlowAccumulator::initialize()
{
}

void
PorousFlowAccumulator::execute()
{
/// if (_pps_t > _accumulator_start_time && _pps_t < _accumulator_end_time)
if (_pps_value < 0)
_accumulator += _pps_value;
}

Real
PorousFlowAccumulator::getValue() const
{
return abs(_accumulator);
}
53 changes: 53 additions & 0 deletions src/postprocessors/PorousFlowDoubletBreakthroughTerminator.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowDoubletBreakthroughTerminator.h"

registerMooseObject("FalconApp", PorousFlowDoubletBreakthroughTerminator);

InputParameters
PorousFlowDoubletBreakthroughTerminator::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("targetpostprocessor", "The name of the targetpostprocessor");
params.addParam<Real>("temperature_init", 273.15, "Reservior initial temperature");
params.addParam<Real>("temperature_tolerance", 1e-2, "Postprocessor relative tolerance");
params.addClassDescription("provide true or false on doublet breakthrough detection");
return params;
}

PorousFlowDoubletBreakthroughTerminator::PorousFlowDoubletBreakthroughTerminator(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_value(getPostprocessorValue("targetpostprocessor")),
_temp_init_value(getParam<Real>("temperature_init")),
_pps_relative_diff(getParam<Real>("temperature_tolerance")),
_keep_constant(0)
{
}

void
PorousFlowDoubletBreakthroughTerminator::initialize()
{
}

void
PorousFlowDoubletBreakthroughTerminator::execute()
{
Real temp_diff = abs(_pps_value-_temp_init_value);
if (temp_diff >= _pps_relative_diff)
_keep_constant = 1;
else
_keep_constant = 0;
}

Real
PorousFlowDoubletBreakthroughTerminator::getValue() const
{
return _keep_constant;
}
48 changes: 48 additions & 0 deletions src/postprocessors/PorousFlowDoubletBreakthroughTime.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowDoubletBreakthroughTime.h"

registerMooseObject("FalconApp", PorousFlowDoubletBreakthroughTime);

InputParameters
PorousFlowDoubletBreakthroughTime::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("breakthroughterminator", "The name of the targetpostprocessor");
params.addRequiredParam<PostprocessorName>("timepostprocessor", "The name of the timepostprocessor");
params.addClassDescription("provide true or false on doublet breakthrough detection");
return params;
}

PorousFlowDoubletBreakthroughTime::PorousFlowDoubletBreakthroughTime(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_value(getPostprocessorValue("breakthroughterminator")),
_pps_time(getPostprocessorValue("timepostprocessor")),
_keep_constant(0)
{
}

void
PorousFlowDoubletBreakthroughTime::initialize()
{
}

void
PorousFlowDoubletBreakthroughTime::execute()
{
if (_keep_constant == 0 && _pps_value ==1)
_keep_constant = _pps_time/3600/24;
}

Real
PorousFlowDoubletBreakthroughTime::getValue() const
{
return _keep_constant;
}
72 changes: 72 additions & 0 deletions src/postprocessors/PorousFlowDoubletSwitch.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowDoubletSwitch.h"
#include <math.h>

registerMooseObject("FalconApp", PorousFlowDoubletSwitch);

InputParameters
PorousFlowDoubletSwitch::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("targetpostprocessor", "The name of the targetpostprocessor");
params.addRequiredParam<PostprocessorName>("timepostprocessor", "The name of the timepostprocessor");
params.addParam<Real>("temperature_init", 273.15, "Reservior initial temperature");
params.addParam<Real>("temperature_tolerance", 1e-2, "Postprocessor relative tolerance");
params.addClassDescription("provide true or false on doublet breakthrough detection");
return params;
}

PorousFlowDoubletSwitch::PorousFlowDoubletSwitch(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_value(getPostprocessorValue("targetpostprocessor")),
_pps_time(getPostprocessorValue("timepostprocessor")),
_temp_init_value(getParam<Real>("temperature_init")),
_pps_relative_diff(getParam<Real>("temperature_tolerance")),
_charge_time(0)
{
}

void
PorousFlowDoubletSwitch::initialize()
{
}

void
PorousFlowDoubletSwitch::execute()
{
if (_charge_time == 0)
{
if (abs(_pps_value-_temp_init_value) >= _pps_relative_diff )
{
_charge_time = _pps_time;
}
}
}

Real
PorousFlowDoubletSwitch::getValue() const
{
if (_charge_time == 0)
return 0;
else
{
Real temp_time;
Real check;
temp_time = _pps_time - _charge_time;
check = temp_time/3600/24 - floor(temp_time/3600/24);
if ( check < 0.6666667 )
return 1;
else
return 0;
}
}


51 changes: 51 additions & 0 deletions src/postprocessors/PorousFlowEnergyAccumulator.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowEnergyAccumulator.h"

registerMooseObject("FalconApp", PorousFlowEnergyAccumulator);

InputParameters
PorousFlowEnergyAccumulator::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("hotwellenergy", "The name of the enthalpy postprocessor at hot well");
params.addRequiredParam<PostprocessorName>("coldwellenergy", "The name of the enthalpy postprocessor at cold well");
params.addRequiredParam<PostprocessorName>("ProductionIndicator", "The name of the postprocessor for production indication");
params.addClassDescription("accumulate the produced thermal enegy");
return params;
}

PorousFlowEnergyAccumulator::PorousFlowEnergyAccumulator(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_hot(getPostprocessorValue("hotwellenergy")),
_pps_cold(getPostprocessorValue("coldwellenergy")),
_pps_pro(getPostprocessorValue("ProductionIndicator")),
_accumulator(0)
{
}

void
PorousFlowEnergyAccumulator::initialize()
{
}

void
PorousFlowEnergyAccumulator::execute()
{
if(_pps_pro == 1 ){
_accumulator += (_pps_hot + _pps_cold);
}
}

Real
PorousFlowEnergyAccumulator::getValue() const
{
return abs(_accumulator);
}
60 changes: 60 additions & 0 deletions src/postprocessors/PorousFlowRecoveryRate.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowRecoveryRate.h"

registerMooseObject("FalconApp", PorousFlowRecoveryRate);

InputParameters
PorousFlowRecoveryRate::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("hotwellenergy", "The name of the enthalpy postprocessor at hot well");
params.addRequiredParam<PostprocessorName>("coldwellenergy", "The name of the enthalpy postprocessor at cold well");
/* params.addParam<Real>("accumulator_start_time", 0.0, "accumulator start time");
params.addParam<Real>("accumulator_end_time", 0.0, "accumulator cap time");
*/
params.addClassDescription("Calculate the recovery rate for the doublet system");
return params;
}

PorousFlowRecoveryRate::PorousFlowRecoveryRate(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_hot(getPostprocessorValue("hotwellenergy")),
_pps_cold(getPostprocessorValue("coldwellenergy")),
/* _accumulator_start_time(getParam<Real>("accumulator_start_time")),
_accumulator_end_time(getParam<Real>("accumulator_end_time")),
*/
_accumulator_inj(0),
_accumulator_ext(0)
{
}

void
PorousFlowRecoveryRate::initialize()
{
}

void
PorousFlowRecoveryRate::execute()
{
if (_pps_hot <= 0)
_accumulator_inj += (_pps_hot + _pps_cold);
else
_accumulator_ext += (_pps_hot + _pps_cold);
}

Real
PorousFlowRecoveryRate::getValue() const
{
if (_accumulator_ext == 0)
return 0;
else
return abs(_accumulator_ext)/abs(_accumulator_inj)*100;
}
63 changes: 63 additions & 0 deletions src/postprocessors/PorousFlowRecoveryRateSeason.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowRecoveryRateSeason.h"

registerMooseObject("FalconApp", PorousFlowRecoveryRateSeason);

InputParameters
PorousFlowRecoveryRateSeason::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("hotwellenergy", "The name of the enthalpy postprocessor at hot well");
params.addRequiredParam<PostprocessorName>("coldwellenergy", "The name of the enthalpy postprocessor at cold well");
params.addRequiredParam<PostprocessorName>("InjectionIndicator", "The name of the postprocessor for injeciton indication");
params.addRequiredParam<PostprocessorName>("ProductionIndicator", "The name of the postprocessor for production indication");
/* params.addParam<Real>("accumulator_start_time", 0.0, "accumulator start time");
params.addParam<Real>("accumulator_end_time", 0.0, "accumulator cap time");
*/
params.addClassDescription("Calculate the recovery rate for the doublet system");
return params;
}

PorousFlowRecoveryRateSeason::PorousFlowRecoveryRateSeason(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_hot(getPostprocessorValue("hotwellenergy")),
_pps_cold(getPostprocessorValue("coldwellenergy")),
_pps_inj(getPostprocessorValue("InjectionIndicator")),
_pps_pro(getPostprocessorValue("ProductionIndicator")),
_accumulator_inj(0),
_accumulator_ext(0)
{
}

void
PorousFlowRecoveryRateSeason::initialize()
{
}

void
PorousFlowRecoveryRateSeason::execute()
{
if (_pps_inj == 1){
_accumulator_inj += (_pps_hot + _pps_cold);
}else if(_pps_pro == 1 ){
_accumulator_ext += (_pps_hot + _pps_cold);
}

}

Real
PorousFlowRecoveryRateSeason::getValue() const
{
if (_accumulator_ext == 0)
return 0;
else
return abs(_accumulator_ext)/abs(_accumulator_inj)*100;
}
45 changes: 45 additions & 0 deletions src/postprocessors/PorousFlowRecoveryTime.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowRecoveryTime.h"

registerMooseObject("FalconApp", PorousFlowRecoveryTime);

InputParameters
PorousFlowRecoveryTime::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("breakthroughtime", "The name of the targetpostprocessor");
params.addRequiredParam<PostprocessorName>("timepostprocessor", "The name of the timepostprocessor");
params.addClassDescription("provide true or false on doublet breakthrough detection");
return params;
}

PorousFlowRecoveryTime::PorousFlowRecoveryTime(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_value(getPostprocessorValue("breakthroughtime")),
_pps_time(getPostprocessorValue("timepostprocessor"))
{
}

void
PorousFlowRecoveryTime::initialize()
{
}

void
PorousFlowRecoveryTime::execute()
{
}

Real
PorousFlowRecoveryTime::getValue() const
{
return (_pps_time/3600/24 - _pps_value);
}
48 changes: 48 additions & 0 deletions src/postprocessors/PorousFlowRecoveryTimeAccumulator.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowRecoveryTimeAccumulator.h"

registerMooseObject("FalconApp", PorousFlowRecoveryTimeAccumulator);

InputParameters
PorousFlowRecoveryTimeAccumulator::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("targetpostprocessor", "The name of the targetpostprocessor");
params.addRequiredParam<PostprocessorName>("dtpostprocessor", "The name of the dtpostprocessor");
params.addClassDescription("provide functioning time accumulation");
return params;
}

PorousFlowRecoveryTimeAccumulator::PorousFlowRecoveryTimeAccumulator(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_iswinter(getPostprocessorValue("targetpostprocessor")),
_pps_dt(getPostprocessorValue("dtpostprocessor")),
_accumulator(0)
{
}

void
PorousFlowRecoveryTimeAccumulator::initialize()
{
}

void
PorousFlowRecoveryTimeAccumulator::execute()
{
if (_pps_iswinter)
_accumulator += _pps_dt;
}

Real
PorousFlowRecoveryTimeAccumulator::getValue() const
{
return abs(_accumulator/3600/24);
}
54 changes: 54 additions & 0 deletions src/postprocessors/PorousFlowSteadyStateDetection.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowSteadyStateDetection.h"

registerMooseObject("FalconApp", PorousFlowSteadyStateDetection);

InputParameters
PorousFlowSteadyStateDetection::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("targetpostprocessor", "The name of the targetpostprocessor");
params.addRequiredParam<PostprocessorName>("timepostprocessor", "The name of the timepostprocessor");
params.addClassDescription("Computes the rate of relative change in a post-processor value "
"over a timestep");
return params;
}

PorousFlowSteadyStateDetection::PorousFlowSteadyStateDetection(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_value(getPostprocessorValue("targetpostprocessor")),
_pps_value_old(getPostprocessorValueOld("targetpostprocessor")),
_pps_dt(getPostprocessorValue("timepostprocessor")),
_pps_dt_old(getPostprocessorValueOld("timepostprocessor"))
{
}

void
PorousFlowSteadyStateDetection::initialize()
{
}

void
PorousFlowSteadyStateDetection::execute()
{
}

Real
PorousFlowSteadyStateDetection::getValue() const
{
// copy initial value in case difference is measured against initial value
Real change;
if (_t_step == 0)
change = 0;
else
change = (_pps_value/_pps_dt - _pps_value_old/_pps_dt_old)/(_pps_value_old/_pps_dt_old);
return std::fabs(change);
}
60 changes: 60 additions & 0 deletions src/postprocessors/PorousFlowSteadyStateTerminator.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowSteadyStateTerminator.h"

registerMooseObject("FalconApp", PorousFlowSteadyStateTerminator);

InputParameters
PorousFlowSteadyStateTerminator::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("targetpostprocessor", "The name of the targetpostprocessor");
params.addRequiredParam<PostprocessorName>("timepostprocessor", "The name of the timepostprocessor");
params.addParam<Real>(
"ss_dection_start_time", 0.0,
"steady state dection start time");
params.addParam<Real>(
"ss_dection_end_time", 0.0,
"steady state dection cap time");
params.addParam<Real>(
"ss_relative_error", 1e-2,
"Postprocessor relative difference");
params.addClassDescription("provide true or false on steadystatedetection");
return params;
}

PorousFlowSteadyStateTerminator::PorousFlowSteadyStateTerminator(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_value(getPostprocessorValue("targetpostprocessor")),
_pps_t(getPostprocessorValue("timepostprocessor")),
_steady_state_start_time(getParam<Real>("ss_dection_start_time")),
_steady_state_end_time(getParam<Real>("ss_dection_end_time")),
_steady_state_relative_diff(getParam<Real>("ss_relative_error"))
{
}

void
PorousFlowSteadyStateTerminator::initialize()
{
}

void
PorousFlowSteadyStateTerminator::execute()
{
}

Real
PorousFlowSteadyStateTerminator::getValue() const
{
if ((_pps_value <= _steady_state_relative_diff && _pps_t > _steady_state_start_time)|| _pps_t > _steady_state_end_time )
return 1;
else
return 0;
}
59 changes: 59 additions & 0 deletions src/postprocessors/PorousFlowTemperatureDropTerminator.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "PorousFlowTemperatureDropTerminator.h"

registerMooseObject("FalconApp", PorousFlowTemperatureDropTerminator);

InputParameters
PorousFlowTemperatureDropTerminator::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("enthalpypostprocessor", "The name of the enthalpy postprocessor");
params.addRequiredParam<PostprocessorName>("masspostprocessor", "The name of the mass postprocessor");
params.addRequiredParam<PostprocessorName>("timepostprocessor", "The name of the timepostprocessor");
params.addParam<Real>("T_inj", 0.0, "Injection fluid temperature");
params.addParam<Real>("T_init", 0.0, "reservior intial temperature");
params.addParam<Real>("P_drop", 1e-2, "Percent drop");
// params.addParam<Real>("Cap_time", 0.0, "Dection cap time");
params.addClassDescription("provide true or false on PorousFlowTemperatureDropTerminator");
return params;
}

PorousFlowTemperatureDropTerminator::PorousFlowTemperatureDropTerminator(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_value_J(getPostprocessorValue("enthalpypostprocessor")),
_pps_value_kg(getPostprocessorValue("masspostprocessor")),
_pps_t(getPostprocessorValue("timepostprocessor")),
_temperature_inj(getParam<Real>("T_inj")),
_temperature_init(getParam<Real>("T_init")),
_percentile_drop(getParam<Real>("P_drop"))
{
}

void
PorousFlowTemperatureDropTerminator::initialize()
{
}

void
PorousFlowTemperatureDropTerminator::execute()
{
}

Real
PorousFlowTemperatureDropTerminator::getValue() const
{
if (((_pps_value_J/_pps_value_kg/4186 + 273.15)-_temperature_init)/(_temperature_inj-_temperature_init) < _percentile_drop/100)
return 1;
else if (_pps_t >= 315360000)
return 1;
else
return 0;
}
60 changes: 60 additions & 0 deletions src/postprocessors/timestepPostprocessor.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#include "timestepPostprocessor.h"

registerMooseObject("FalconApp", timestepPostprocessor);

InputParameters
timestepPostprocessor::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();
params.addRequiredParam<PostprocessorName>("targetpostprocessor", "The name of the targetpostprocessor");
params.addRequiredParam<PostprocessorName>("timepostprocessor", "The name of the timepostprocessor");
params.addParam<Real>("enthalpy_relative_tolerance", 1e-2, "Postprocessor relative tolerance");
params.addClassDescription("provide true or false on doublet breakthrough detection");
return params;
}

timestepPostprocessor::timestepPostprocessor(const InputParameters & parameters)
: GeneralPostprocessor(parameters),
_pps_value(getPostprocessorValue("targetpostprocessor")),
_pps_time(getPostprocessorValue("timepostprocessor")),
_pps_relative_diff(getParam<Real>("enthalpy_relative_tolerance")),
_charge_time(0)
{
}

void
timestepPostprocessor::initialize()
{
}

void
timestepPostprocessor::execute()
{
if (_charge_time == 0)
{
if ( _pps_value >= _pps_relative_diff )
{
_charge_time = _pps_time;
}
}
}

Real
timestepPostprocessor::getValue() const
{
if (_charge_time == 0)
return 2592000; /// 1 months 3600*24*30
else
return 10800; /// 6 hours
}